diff --git a/protocol/bindings/src/wrapped_token.rs b/protocol/bindings/src/wrapped_token.rs index 2c93b0d9..4eb3e9aa 100644 --- a/protocol/bindings/src/wrapped_token.rs +++ b/protocol/bindings/src/wrapped_token.rs @@ -5,16 +5,25 @@ Generated by the following Solidity interface... interface WrappedToken { error AccessControlBadConfirmation(); error AccessControlUnauthorizedAccount(address account, bytes32 neededRole); + error ECDSAInvalidSignature(); + error ECDSAInvalidSignatureLength(uint256 length); + error ECDSAInvalidSignatureS(bytes32 s); error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); error ERC20InvalidApprover(address approver); error ERC20InvalidReceiver(address receiver); error ERC20InvalidSender(address sender); error ERC20InvalidSpender(address spender); + error ERC2612ExpiredSignature(uint256 deadline); + error ERC2612InvalidSigner(address signer, address owner); error EnforcedPause(); error ExpectedPause(); + error InvalidAccountNonce(address account, uint256 currentNonce); + error InvalidShortString(); + error StringTooLong(string str); event Approval(address indexed owner, address indexed spender, uint256 value); + event EIP712DomainChanged(); event Paused(address account); event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); @@ -25,6 +34,7 @@ interface WrappedToken { constructor(string name_, string symbol_, uint8 decimals_); function DEFAULT_ADMIN_ROLE() external view returns (bytes32); + function DOMAIN_SEPARATOR() external view returns (bytes32); function MINTER_ROLE() external view returns (bytes32); function PAUSER_ROLE() external view returns (bytes32); function allowance(address owner, address spender) external view returns (uint256); @@ -33,13 +43,16 @@ interface WrappedToken { function burn(uint256 value) external; function burnFrom(address account, uint256 value) external; function decimals() external view returns (uint8); + function eip712Domain() external view returns (bytes1 fields, string memory name, string memory version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] memory extensions); function getRoleAdmin(bytes32 role) external view returns (bytes32); function grantRole(bytes32 role, address account) external; function hasRole(bytes32 role, address account) external view returns (bool); function mint(address to, uint256 amount) external; function name() external view returns (string memory); + function nonces(address owner) external view returns (uint256); function pause() external; function paused() external view returns (bool); + function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; function renounceRole(bytes32 role, address callerConfirmation) external; function revokeRole(bytes32 role, address account) external; function supportsInterface(bytes4 interfaceId) external view returns (bool); @@ -88,6 +101,19 @@ interface WrappedToken { ], "stateMutability": "view" }, + { + "type": "function", + "name": "DOMAIN_SEPARATOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "MINTER_ROLE", @@ -225,6 +251,49 @@ interface WrappedToken { ], "stateMutability": "view" }, + { + "type": "function", + "name": "eip712Domain", + "inputs": [], + "outputs": [ + { + "name": "fields", + "type": "bytes1", + "internalType": "bytes1" + }, + { + "name": "name", + "type": "string", + "internalType": "string" + }, + { + "name": "version", + "type": "string", + "internalType": "string" + }, + { + "name": "chainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "verifyingContract", + "type": "address", + "internalType": "address" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "extensions", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "getRoleAdmin", @@ -317,6 +386,25 @@ interface WrappedToken { ], "stateMutability": "view" }, + { + "type": "function", + "name": "nonces", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "pause", @@ -337,6 +425,49 @@ interface WrappedToken { ], "stateMutability": "view" }, + { + "type": "function", + "name": "permit", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "v", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "r", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "s", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "renounceRole", @@ -503,6 +634,12 @@ interface WrappedToken { ], "anonymous": false }, + { + "type": "event", + "name": "EIP712DomainChanged", + "inputs": [], + "anonymous": false + }, { "type": "event", "name": "Paused", @@ -650,6 +787,33 @@ interface WrappedToken { } ] }, + { + "type": "error", + "name": "ECDSAInvalidSignature", + "inputs": [] + }, + { + "type": "error", + "name": "ECDSAInvalidSignatureLength", + "inputs": [ + { + "name": "length", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ECDSAInvalidSignatureS", + "inputs": [ + { + "name": "s", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, { "type": "error", "name": "ERC20InsufficientAllowance", @@ -736,6 +900,33 @@ interface WrappedToken { } ] }, + { + "type": "error", + "name": "ERC2612ExpiredSignature", + "inputs": [ + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ERC2612InvalidSigner", + "inputs": [ + { + "name": "signer", + "type": "address", + "internalType": "address" + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ] + }, { "type": "error", "name": "EnforcedPause", @@ -745,6 +936,38 @@ interface WrappedToken { "type": "error", "name": "ExpectedPause", "inputs": [] + }, + { + "type": "error", + "name": "InvalidAccountNonce", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + }, + { + "name": "currentNonce", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "InvalidShortString", + "inputs": [] + }, + { + "type": "error", + "name": "StringTooLong", + "inputs": [ + { + "name": "str", + "type": "string", + "internalType": "string" + } + ] } ] ```*/ @@ -761,22 +984,22 @@ pub mod WrappedToken { /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a06040523461036457611b5f8038038061001981610368565b9283398101906060818303126103645780516001600160401b038111610364578261004591830161038d565b60208201519092906001600160401b0381116103645760409161006991840161038d565b91015160ff811681036103645782516001600160401b03811161026a57600354600181811c9116801561035a575b602082101461024c57601f81116102ec575b506020601f821160011461028957819293945f9261027e575b50508160011b915f199060031b1c1916176003555b81516001600160401b03811161026a57600454600181811c91168015610260575b602082101461024c57601f81116101de575b50602092601f821160011461017d57928192935f92610172575b50508160011b915f199060031b1c1916176004555b608052610145336103de565b5061014f33610454565b50610159336104e7565b50604051611564908161057b823960805181610b640152f35b015190505f80610124565b601f1982169360045f52805f20915f5b8681106101c657508360019596106101ae575b505050811b01600455610139565b01515f1960f88460031b161c191690555f80806101a0565b9192602060018192868501518155019401920161018d565b8181111561010a5760045f52601f820160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b60208410610244575b81601f9101920160051c03905f5b82811061023757505061010a565b5f82820155600101610229565b5f915061021b565b634e487b7160e01b5f52602260045260245ffd5b90607f16906100f8565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100c2565b601f1982169060035f52805f20915f5b8181106102d4575095836001959697106102bc575b505050811b016003556100d7565b01515f1960f88460031b161c191690555f80806102ae565b9192602060018192868b015181550194019201610299565b818111156100a95760035f52601f820160051c7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b60208410610352575b81601f9101920160051c03905f5b8281106103455750506100a9565b5f82820155600101610337565b5f9150610329565b90607f1690610097565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761026a57604052565b81601f82011215610364578051906001600160401b03821161026a576103bc601f8301601f1916602001610368565b928284526020838301011161036457815f9260208093018386015e8301015290565b6001600160a01b0381165f9081525f516020611b3f5f395f51905f52602052604090205460ff1661044f576001600160a01b03165f8181525f516020611b3f5f395f51905f5260205260408120805460ff191660011790553391905f516020611adf5f395f51905f528180a4600190565b505f90565b6001600160a01b0381165f9081525f516020611b1f5f395f51905f52602052604090205460ff1661044f576001600160a01b03165f8181525f516020611b1f5f395f51905f5260205260408120805460ff191660011790553391907f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a905f516020611adf5f395f51905f529080a4600190565b6001600160a01b0381165f9081525f516020611aff5f395f51905f52602052604090205460ff1661044f576001600160a01b03165f8181525f516020611aff5f395f51905f5260205260408120805460ff191660011790553391907f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6905f516020611adf5f395f51905f529080a460019056fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610eff5750806306fdde0314610dcb578063095ea7b314610cc657806318160ddd14610c8b57806323b872dd14610c35578063248a9ca314610be45780632f2ff15d14610b88578063313ce56714610b2d57806336568abe14610aa55780633f4ba83a1461098c57806340c10f19146107f457806342966c68146107b95780635c975abb1461077957806370a082311461071757806379cc6790146106c95780638456cb59146105b657806391d148541461054157806395d89b411461034e578063a217fddf14610316578063a9059cbb146102c7578063d53913931461026f578063d547741f1461020c578063dd62ed3e146101805763e63ab1e914610124575f80fd5b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5760206040517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8152f35b5f80fd5b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c576101b7611003565b73ffffffffffffffffffffffffffffffffffffffff6101d4611026565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5761026d600435610249611026565b90610268610263825f526006602052600160405f20015490565b611271565b6113ac565b005b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5760206040517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5761030b610301611003565b602435903361116b565b602060405160018152f35b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5760206040515f8152f35b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c576040515f600454908160011c60018316928315610537575b60208210841461050a5781855284939081156104aa5750600114610430575b5003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff821181831017610403576103ff82918260405282610fbb565b0390f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60045f90815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061048e57505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06103b3565b602091935080600191548385880101520191019091839261045a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b840190910191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090506103b3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f1690610394565b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57610578611026565b6004355f52600660205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57335f9081527fe09f975e15f8f53f24cbbc282b13c40b84df485fcdb8d3997fa103dc5a4ef841602052604090205460ff161561067957610622611530565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060055416176005557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60245260445ffd5b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5761026d610703611003565b60243590610712823383611049565b611476565b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5773ffffffffffffffffffffffffffffffffffffffff610763611003565b165f525f602052602060405f2054604051908152f35b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57602060ff600554166040519015158152f35b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5761026d60043533611476565b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5761082b611003565b335f9081527f3195c024b2ddd6d9b8f6c836aa52f67fe69376c8903d009b80229b3ce4425f516020526040902054602435919060ff161561093c5773ffffffffffffffffffffffffffffffffffffffff169081156109105761088b611530565b610893611530565b600254908082018092116108e35760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a660245260445ffd5b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57335f9081527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8602052604090205460ff1615610a755760055460ff811615610a4d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166005557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b7f8dfc202b000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004525f60245260445ffd5b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57610adc611026565b3373ffffffffffffffffffffffffffffffffffffffff821603610b055761026d906004356113ac565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5761026d600435610bc5611026565b90610bdf610263825f526006602052600160405f20015490565b6112d8565b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c576020610c2d6004355f526006602052600160405f20015490565b604051908152f35b3461017c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5761030b610c6f611003565b610c77611026565b60443591610c86833383611049565b61116b565b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c576020600254604051908152f35b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57610cfd611003565b602435903315610d9f5773ffffffffffffffffffffffffffffffffffffffff16908115610d7357335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c576040515f600354908160011c60018316928315610ef5575b60208210841461050a5781855284939081156104aa5750600114610e7b575003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff821181831017610403576103ff82918260405282610fbb565b60035f90815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b818310610ed957505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06103b3565b6020919350806001915483858801015201910190918392610ea5565b90607f1690610e11565b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361017c57817f7965db0b0000000000000000000000000000000000000000000000000000000060209314908115610f91575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610f8a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361017c57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361017c57565b73ffffffffffffffffffffffffffffffffffffffff909291921691825f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff82165f5260205260405f2054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84106110c0575b50505050565b828410611121578015610d9f5773ffffffffffffffffffffffffffffffffffffffff821615610d73575f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f20910390555f8080806110ba565b5073ffffffffffffffffffffffffffffffffffffffff83917ffb8f41b2000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b73ffffffffffffffffffffffffffffffffffffffff169081156112455773ffffffffffffffffffffffffffffffffffffffff16918215610910576111ad611530565b6111b5611530565b815f525f60205260405f205481811061121357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b805f52600660205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f205416156112a95750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b805f52600660205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f205416155f146113a657805f52600660205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905573ffffffffffffffffffffffffffffffffffffffff339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b805f52600660205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f2054165f146113a657805f52600660205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905573ffffffffffffffffffffffffffffffffffffffff339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b90919073ffffffffffffffffffffffffffffffffffffffff1680156112455761149d611530565b6114a5611530565b805f525f60205260405f20548381106114fd576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3565b91507fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b60ff6005541661153c57565b7fd93c0665000000000000000000000000000000000000000000000000000000005f5260045ffd2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d3195c024b2ddd6d9b8f6c836aa52f67fe69376c8903d009b80229b3ce4425f51e09f975e15f8f53f24cbbc282b13c40b84df485fcdb8d3997fa103dc5a4ef84154cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8 + ///0x610180806040523461046157612653803803809161001d8285610465565b833981016060828203126104615781516001600160401b0381116104615781610047918401610488565b60208301519091906001600160401b0381116104615760409161006b918501610488565b9201519060ff82168203610461576040928351916100898584610465565b60018352603160f81b6020840190815281519092906001600160401b03811161036657600354600181811c91168015610457575b602082101461034857601f81116103e9575b50806020601f8211600114610385575f9161037a575b508160011b915f199060031b1c1916176003555b8051906001600160401b0382116103665760045490600182811c9216801561035c575b60208310146103485781601f8493116102d2575b50602090601f831160011461026c575f92610261575b50508160011b915f199060031b1c1916176004555b61016481610679565b610120526101718361080c565b6101405260208151910120918260e05251902080610100524660a05283519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84528583015260608201524660808201523060a082015260a081526101dc60c082610465565b5190206080523060c052610160526101f3336104dd565b506101fd33610553565b50610207336105e6565b5051611c829081610951823960805181611745015260a05181611802015260c05181611716015260e05181611794015261010051816117ba015261012051816106f20152610140518161071b01526101605181610e3f0152f35b015190505f80610146565b60045f9081528281209350601f198516905b8181106102ba57509084600195949392106102a2575b505050811b0160045561015b565b01515f1960f88460031b161c191690555f8080610294565b9293602060018192878601518155019501930161027e565b828111156101305760045f52909150601f830160051c7f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b60208510610340575b849392601f0160051c82900391015f5b828110610330575050610130565b5f81830155859450600101610322565b5f9150610312565b634e487b7160e01b5f52602260045260245ffd5b91607f169161011c565b634e487b7160e01b5f52604160045260245ffd5b90508301515f6100e5565b60035f9081528181209250601f198416905b8181106103d1575090836001949392106103b9575b5050811b016003556100f9565b8501515f1960f88460031b161c191690555f806103ac565b9192602060018192868a015181550194019201610397565b818111156100cf5760035f52601f820160051c7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b6020841061044f575b81601f9101920160051c03905f5b8281106104425750506100cf565b5f82820155600101610434565b5f9150610426565b90607f16906100bd565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761036657604052565b81601f82011215610461578051906001600160401b03821161036657604051926104bc601f8401601f191660200185610465565b8284526020838301011161046157815f9260208093018386015e8301015290565b6001600160a01b0381165f9081525f5160206126135f395f51905f52602052604090205460ff1661054e576001600160a01b03165f8181525f5160206126135f395f51905f5260205260408120805460ff191660011790553391905f5160206125d35f395f51905f528180a4600190565b505f90565b6001600160a01b0381165f9081525f5160206125f35f395f51905f52602052604090205460ff1661054e576001600160a01b03165f8181525f5160206125f35f395f51905f5260205260408120805460ff191660011790553391907f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a905f5160206125d35f395f51905f529080a4600190565b6001600160a01b0381165f9081525f5160206126335f395f51905f52602052604090205460ff1661054e576001600160a01b03165f8181525f5160206126335f395f51905f5260205260408120805460ff191660011790553391907f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6905f5160206125d35f395f51905f529080a4600190565b908151602081105f146106f3575090601f8151116106b35760208151910151602082106106a4571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b6001600160401b03811161036657600654600181811c91168015610802575b602082101461034857601f81116107c3575b50602092601f821160011461076257928192935f92610757575b50508160011b915f199060031b1c19161760065560ff90565b015190505f8061073e565b601f1982169360065f52805f20915f5b8681106107ab5750836001959610610793575b505050811b0160065560ff90565b01515f1960f88460031b161c191690555f8080610785565b91926020600181928685015181550194019201610772565b818111156107245760065f5260205f20601f80840160051c809201920160051c03905f5b8281106107f5575050610724565b5f828201556001016107e7565b90607f1690610712565b908151602081105f14610837575090601f8151116106b35760208151910151602082106106a4571790565b6001600160401b03811161036657600754600181811c91168015610946575b602082101461034857601f8111610907575b50602092601f82116001146108a657928192935f9261089b575b50508160011b915f199060031b1c19161760075560ff90565b015190505f80610882565b601f1982169360075f52805f20915f5b8681106108ef57508360019596106108d7575b505050811b0160075560ff90565b01515f1960f88460031b161c191690555f80806108c9565b919260206001819286850151815501940192016108b6565b818111156108685760075f5260205f20601f80840160051c809201920160051c03905f5b828110610939575050610868565b5f8282015560010161092b565b90607f169061085656fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a7146110a05750806306fdde0314610fdd578063095ea7b314610f9957806318160ddd14610f5e57806323b872dd14610f08578063248a9ca314610ebf5780632f2ff15d14610e63578063313ce56714610e085780633644e51514610dc857806336568abe14610d405780633f4ba83a14610c2757806340c10f1914610a8f57806342966c6814610a545780635c975abb14610a1457806370a08231146109b257806379cc6790146109645780637ecebe00146109015780638456cb59146107ee57806384b0196e146106bc57806391d148541461064757806395d89b4114610529578063a217fddf146104f1578063a9059cbb146104a2578063d505accf146102f3578063d53913931461029b578063d547741f14610238578063dd62ed3e146101ac5763e63ab1e914610150575f80fd5b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85760206040517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8152f35b5f80fd5b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576101e361119f565b73ffffffffffffffffffffffffffffffffffffffff6102006111c2565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576102996004356102756111c2565b9061029461028f825f526009602052600160405f20015490565b6115c4565b611828565b005b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85760206040517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b346101a85760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85761032a61119f565b6103326111c2565b604435906064359260843560ff811681036101a8578442116104765761043361042a73ffffffffffffffffffffffffffffffffffffffff9283851697885f52600860205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528b6040840152878a1660608401528a608084015260a083015260c082015260c081526103dd60e0826112d6565b5190206103e86116ff565b90604051917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220611b10565b90929192611baa565b16848103610446575061029993506119ac565b84907f4b800e46000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b847f62791302000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576104e66104dc61119f565b60243590336114be565b602060405160018152f35b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85760206040515f8152f35b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576040515f600454610567816111e5565b808452906001811690811561060557506001146105a7575b6105a38361058f818503826112d6565b60405191829160208352602083019061115c565b0390f35b60045f9081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b8082106105eb5750909150810160200161058f61057f565b9192600181602092548385880101520191019092916105d3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061058f905061057f565b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85761067e6111c2565b6004355f52600960205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576107926107167f0000000000000000000000000000000000000000000000000000000000000000611a5d565b61073f7f0000000000000000000000000000000000000000000000000000000000000000611ad9565b60206107a06040519261075283856112d6565b5f84525f3681376040519586957f0f00000000000000000000000000000000000000000000000000000000000000875260e08588015260e087019061115c565b90858203604087015261115c565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b8281106107d757505050500390f35b8351855286955093810193928101926001016107c8565b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857335f9081527f84574a31e2f767388bfa57bc81ff2590df95d3022c04c363cca3e37ee9608631602052604090205460ff16156108b15761085a611a29565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060055416176005557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60245260445ffd5b346101a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85773ffffffffffffffffffffffffffffffffffffffff61094d61119f565b165f526008602052602060405f2054604051908152f35b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85761029961099e61119f565b602435906109ad823383611344565b6118f2565b346101a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85773ffffffffffffffffffffffffffffffffffffffff6109fe61119f565b165f525f602052602060405f2054604051908152f35b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857602060ff600554166040519015158152f35b346101a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857610299600435336118f2565b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857610ac661119f565b335f9081527fd5d09b8f3165a736d25b1a14611612ac91830c1b82012b1c33b2dac7c90a06496020526040902054602435919060ff1615610bd75773ffffffffffffffffffffffffffffffffffffffff16908115610bab57610b26611a29565b610b2e611a29565b60025490808201809211610b7e5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a660245260445ffd5b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857335f9081527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b602052604090205460ff1615610d105760055460ff811615610ce8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166005557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b7f8dfc202b000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004525f60245260445ffd5b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857610d776111c2565b3373ffffffffffffffffffffffffffffffffffffffff821603610da05761029990600435611828565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576020610e006116ff565b604051908152f35b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857610299600435610ea06111c2565b90610eba61028f825f526009602052600160405f20015490565b61162b565b346101a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576020610e006004355f526009602052600160405f20015490565b346101a85760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576104e6610f4261119f565b610f4a6111c2565b60443591610f59833383611344565b6114be565b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576020600254604051908152f35b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576104e6610fd361119f565b60243590336119ac565b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576040515f60035461101b816111e5565b80845290600181169081156106055750600114611042576105a38361058f818503826112d6565b60035f9081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b8082106110865750909150810160200161058f61057f565b91926001816020925483858801015201910190929161106e565b346101a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101a857817f7965db0b0000000000000000000000000000000000000000000000000000000060209314908115611132575b5015158152f35b7f01ffc9a7000000000000000000000000000000000000000000000000000000009150148361112b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101a857565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101a857565b90600182811c9216801561122c575b60208310146111ff57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916111f4565b5f9291815491611245836111e5565b808352926001811690811561129a575060011461126157505050565b5f9081526020812093945091925b838310611280575060209250010190565b60018160209294939454838587010152019101919061126f565b905060209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761131757604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff909291921691825f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff82165f5260205260405f2054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84106113bb575b50505050565b8284106114745780156114485773ffffffffffffffffffffffffffffffffffffffff82161561141c575f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f20910390555f8080806113b5565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b5073ffffffffffffffffffffffffffffffffffffffff83917ffb8f41b2000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b73ffffffffffffffffffffffffffffffffffffffff169081156115985773ffffffffffffffffffffffffffffffffffffffff16918215610bab57611500611a29565b611508611a29565b815f525f60205260405f205481811061156657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b805f52600960205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f205416156115fc5750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b805f52600960205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f205416155f146116f957805f52600960205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905573ffffffffffffffffffffffffffffffffffffffff339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163014806117ff575b15611767577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526117f960c0826112d6565b51902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461173e565b805f52600960205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f2054165f146116f957805f52600960205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905573ffffffffffffffffffffffffffffffffffffffff339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b90919073ffffffffffffffffffffffffffffffffffffffff16801561159857611919611a29565b611921611a29565b805f525f60205260405f2054838110611979576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3565b91507fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b73ffffffffffffffffffffffffffffffffffffffff169081156114485773ffffffffffffffffffffffffffffffffffffffff1691821561141c5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b60ff60055416611a3557565b7fd93c0665000000000000000000000000000000000000000000000000000000005f5260045ffd5b60ff8114611abc5760ff811690601f8211611a945760405191611a816040846112d6565b6020808452838101919036833783525290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b50604051611ad681611acf816006611236565b03826112d6565b90565b60ff8114611afd5760ff811690601f8211611a945760405191611a816040846112d6565b50604051611ad681611acf816007611236565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611b9f579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611b94575f5173ffffffffffffffffffffffffffffffffffffffff811615611b8a57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b6004811015611c555780611bbc575050565b60018103611bec577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b60028103611c2057507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b600314611c2a5750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d84574a31e2f767388bfa57bc81ff2590df95d3022c04c363cca3e37ee9608631ec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6bd5d09b8f3165a736d25b1a14611612ac91830c1b82012b1c33b2dac7c90a0649 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4a\x03dWa\x1B_\x808\x03\x80a\0\x19\x81a\x03hV[\x92\x839\x81\x01\x90``\x81\x83\x03\x12a\x03dW\x80Q`\x01`\x01`@\x1B\x03\x81\x11a\x03dW\x82a\0E\x91\x83\x01a\x03\x8DV[` \x82\x01Q\x90\x92\x90`\x01`\x01`@\x1B\x03\x81\x11a\x03dW`@\x91a\0i\x91\x84\x01a\x03\x8DV[\x91\x01Q`\xFF\x81\x16\x81\x03a\x03dW\x82Q`\x01`\x01`@\x1B\x03\x81\x11a\x02jW`\x03T`\x01\x81\x81\x1C\x91\x16\x80\x15a\x03ZW[` \x82\x10\x14a\x02LW`\x1F\x81\x11a\x02\xECW[P` `\x1F\x82\x11`\x01\x14a\x02\x89W\x81\x92\x93\x94_\x92a\x02~W[PP\x81`\x01\x1B\x91_\x19\x90`\x03\x1B\x1C\x19\x16\x17`\x03U[\x81Q`\x01`\x01`@\x1B\x03\x81\x11a\x02jW`\x04T`\x01\x81\x81\x1C\x91\x16\x80\x15a\x02`W[` \x82\x10\x14a\x02LW`\x1F\x81\x11a\x01\xDEW[P` \x92`\x1F\x82\x11`\x01\x14a\x01}W\x92\x81\x92\x93_\x92a\x01rW[PP\x81`\x01\x1B\x91_\x19\x90`\x03\x1B\x1C\x19\x16\x17`\x04U[`\x80Ra\x01E3a\x03\xDEV[Pa\x01O3a\x04TV[Pa\x01Y3a\x04\xE7V[P`@Qa\x15d\x90\x81a\x05{\x829`\x80Q\x81a\x0Bd\x01R\xF3[\x01Q\x90P_\x80a\x01$V[`\x1F\x19\x82\x16\x93`\x04_R\x80_ \x91_[\x86\x81\x10a\x01\xC6WP\x83`\x01\x95\x96\x10a\x01\xAEW[PPP\x81\x1B\x01`\x04Ua\x019V[\x01Q_\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U_\x80\x80a\x01\xA0V[\x91\x92` `\x01\x81\x92\x86\x85\x01Q\x81U\x01\x94\x01\x92\x01a\x01\x8DV[\x81\x81\x11\x15a\x01\nW`\x04_R`\x1F\x82\x01`\x05\x1C\x7F\x8A5\xAC\xFB\xC1_\xF8\x1A9\xAE}4O\xD7\t\xF2\x8E\x86\0\xB4\xAA\x8Ce\xC6\xB6K\xFE\x7F\xE3k\xD1\x9B` \x84\x10a\x02DW[\x81`\x1F\x91\x01\x92\x01`\x05\x1C\x03\x90_[\x82\x81\x10a\x027WPPa\x01\nV[_\x82\x82\x01U`\x01\x01a\x02)V[_\x91Pa\x02\x1BV[cNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[\x90`\x7F\x16\x90a\0\xF8V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x01Q\x90P_\x80a\0\xC2V[`\x1F\x19\x82\x16\x90`\x03_R\x80_ \x91_[\x81\x81\x10a\x02\xD4WP\x95\x83`\x01\x95\x96\x97\x10a\x02\xBCW[PPP\x81\x1B\x01`\x03Ua\0\xD7V[\x01Q_\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U_\x80\x80a\x02\xAEV[\x91\x92` `\x01\x81\x92\x86\x8B\x01Q\x81U\x01\x94\x01\x92\x01a\x02\x99V[\x81\x81\x11\x15a\0\xA9W`\x03_R`\x1F\x82\x01`\x05\x1C\x7F\xC2WZ\x0E\x9EY<\0\xF9Y\xF8\xC9/\x12\xDB(i\xC39Z;\x05\x02\xD0^%\x16Doq\xF8[` \x84\x10a\x03RW[\x81`\x1F\x91\x01\x92\x01`\x05\x1C\x03\x90_[\x82\x81\x10a\x03EWPPa\0\xA9V[_\x82\x82\x01U`\x01\x01a\x037V[_\x91Pa\x03)V[\x90`\x7F\x16\x90a\0\x97V[_\x80\xFD[`@Q\x91\x90`\x1F\x01`\x1F\x19\x16\x82\x01`\x01`\x01`@\x1B\x03\x81\x11\x83\x82\x10\x17a\x02jW`@RV[\x81`\x1F\x82\x01\x12\x15a\x03dW\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x02jWa\x03\xBC`\x1F\x83\x01`\x1F\x19\x16` \x01a\x03hV[\x92\x82\x84R` \x83\x83\x01\x01\x11a\x03dW\x81_\x92` \x80\x93\x01\x83\x86\x01^\x83\x01\x01R\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R_Q` a\x1B?_9_Q\x90_R` R`@\x90 T`\xFF\x16a\x04OW`\x01`\x01`\xA0\x1B\x03\x16_\x81\x81R_Q` a\x1B?_9_Q\x90_R` R`@\x81 \x80T`\xFF\x19\x16`\x01\x17\x90U3\x91\x90_Q` a\x1A\xDF_9_Q\x90_R\x81\x80\xA4`\x01\x90V[P_\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R_Q` a\x1B\x1F_9_Q\x90_R` R`@\x90 T`\xFF\x16a\x04OW`\x01`\x01`\xA0\x1B\x03\x16_\x81\x81R_Q` a\x1B\x1F_9_Q\x90_R` R`@\x81 \x80T`\xFF\x19\x16`\x01\x17\x90U3\x91\x90\x7Fe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x90_Q` a\x1A\xDF_9_Q\x90_R\x90\x80\xA4`\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R_Q` a\x1A\xFF_9_Q\x90_R` R`@\x90 T`\xFF\x16a\x04OW`\x01`\x01`\xA0\x1B\x03\x16_\x81\x81R_Q` a\x1A\xFF_9_Q\x90_R` R`@\x81 \x80T`\xFF\x19\x16`\x01\x17\x90U3\x91\x90\x7F\x9F-\xF0\xFE\xD2\xC7vH\xDEX`\xA4\xCCP\x8C\xD0\x81\x8C\x85\xB8\xB8\xA1\xABL\xEE\xEF\x8D\x98\x1C\x89V\xA6\x90_Q` a\x1A\xDF_9_Q\x90_R\x90\x80\xA4`\x01\x90V\xFE`\x80\x80`@R`\x046\x10\x15a\0\x12W_\x80\xFD[_5`\xE0\x1C\x90\x81c\x01\xFF\xC9\xA7\x14a\x0E\xFFWP\x80c\x06\xFD\xDE\x03\x14a\r\xCBW\x80c\t^\xA7\xB3\x14a\x0C\xC6W\x80c\x18\x16\r\xDD\x14a\x0C\x8BW\x80c#\xB8r\xDD\x14a\x0C5W\x80c$\x8A\x9C\xA3\x14a\x0B\xE4W\x80c//\xF1]\x14a\x0B\x88W\x80c1<\xE5g\x14a\x0B-W\x80c6V\x8A\xBE\x14a\n\xA5W\x80c?K\xA8:\x14a\t\x8CW\x80c@\xC1\x0F\x19\x14a\x07\xF4W\x80cB\x96lh\x14a\x07\xB9W\x80c\\\x97Z\xBB\x14a\x07yW\x80cp\xA0\x821\x14a\x07\x17W\x80cy\xCCg\x90\x14a\x06\xC9W\x80c\x84V\xCBY\x14a\x05\xB6W\x80c\x91\xD1HT\x14a\x05AW\x80c\x95\xD8\x9BA\x14a\x03NW\x80c\xA2\x17\xFD\xDF\x14a\x03\x16W\x80c\xA9\x05\x9C\xBB\x14a\x02\xC7W\x80c\xD59\x13\x93\x14a\x02oW\x80c\xD5Gt\x1F\x14a\x02\x0CW\x80c\xDDb\xED>\x14a\x01\x80Wc\xE6:\xB1\xE9\x14a\x01$W_\x80\xFD[4a\x01|W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|W` `@Q\x7Fe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x81R\xF3[_\x80\xFD[4a\x01|W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Wa\x01\xB7a\x10\x03V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x01\xD4a\x10&V[\x91\x16_R`\x01` Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@_ \x91\x16_R` R` `@_ T`@Q\x90\x81R\xF3[4a\x01|W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Wa\x02m`\x045a\x02Ia\x10&V[\x90a\x02ha\x02c\x82_R`\x06` R`\x01`@_ \x01T\x90V[a\x12qV[a\x13\xACV[\0[4a\x01|W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|W` `@Q\x7F\x9F-\xF0\xFE\xD2\xC7vH\xDEX`\xA4\xCCP\x8C\xD0\x81\x8C\x85\xB8\xB8\xA1\xABL\xEE\xEF\x8D\x98\x1C\x89V\xA6\x81R\xF3[4a\x01|W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Wa\x03\x0Ba\x03\x01a\x10\x03V[`$5\x903a\x11kV[` `@Q`\x01\x81R\xF3[4a\x01|W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|W` `@Q_\x81R\xF3[4a\x01|W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|W`@Q_`\x04T\x90\x81`\x01\x1C`\x01\x83\x16\x92\x83\x15a\x057W[` \x82\x10\x84\x14a\x05\nW\x81\x85R\x84\x93\x90\x81\x15a\x04\xAAWP`\x01\x14a\x040W[P\x03`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x81\x83\x10\x17a\x04\x03Wa\x03\xFF\x82\x91\x82`@R\x82a\x0F\xBBV[\x03\x90\xF3[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`\x04_\x90\x81R\x91P\x7F\x8A5\xAC\xFB\xC1_\xF8\x1A9\xAE}4O\xD7\t\xF2\x8E\x86\0\xB4\xAA\x8Ce\xC6\xB6K\xFE\x7F\xE3k\xD1\x9B[\x81\x83\x10a\x04\x8EWPP\x81\x01` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0a\x03\xB3V[` \x91\x93P\x80`\x01\x91T\x83\x85\x88\x01\x01R\x01\x91\x01\x90\x91\x83\x92a\x04ZV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16` \x85\x81\x01\x91\x90\x91R\x91\x15\x15`\x05\x1B\x84\x01\x90\x91\x01\x91P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90Pa\x03\xB3V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[\x90`\x7F\x16\x90a\x03\x94V[4a\x01|W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Wa\x05xa\x10&V[`\x045_R`\x06` Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@_ \x91\x16_R` R` `\xFF`@_ T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x01|W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|W3_\x90\x81R\x7F\xE0\x9F\x97^\x15\xF8\xF5?$\xCB\xBC(+\x13\xC4\x0B\x84\xDFH_\xCD\xB8\xD3\x99\x7F\xA1\x03\xDCZN\xF8A` R`@\x90 T`\xFF\x16\x15a\x06yWa\x06\"a\x150V[`\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0`\x05T\x16\x17`\x05U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X` `@Q3\x81R\xA1\0[\x7F\xE2Q}?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R3`\x04R\x7Fe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*`$R`D_\xFD[4a\x01|W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Wa\x02ma\x07\x03a\x10\x03V[`$5\x90a\x07\x12\x823\x83a\x10IV[a\x14vV[4a\x01|W` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x07ca\x10\x03V[\x16_R_` R` `@_ T`@Q\x90\x81R\xF3[4a\x01|W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|W` `\xFF`\x05T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x01|W` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Wa\x02m`\x0453a\x14vV[4a\x01|W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Wa\x08+a\x10\x03V[3_\x90\x81R\x7F1\x95\xC0$\xB2\xDD\xD6\xD9\xB8\xF6\xC86\xAAR\xF6\x7F\xE6\x93v\xC8\x90=\0\x9B\x80\"\x9B<\xE4B_Q` R`@\x90 T`$5\x91\x90`\xFF\x16\x15a\tV[`\x1F\x19\x82\x16\x93`\x06_R\x80_ \x91_[\x86\x81\x10a\x07\xABWP\x83`\x01\x95\x96\x10a\x07\x93W[PPP\x81\x1B\x01`\x06U`\xFF\x90V[\x01Q_\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U_\x80\x80a\x07\x85V[\x91\x92` `\x01\x81\x92\x86\x85\x01Q\x81U\x01\x94\x01\x92\x01a\x07rV[\x81\x81\x11\x15a\x07$W`\x06_R` _ `\x1F\x80\x84\x01`\x05\x1C\x80\x92\x01\x92\x01`\x05\x1C\x03\x90_[\x82\x81\x10a\x07\xF5WPPa\x07$V[_\x82\x82\x01U`\x01\x01a\x07\xE7V[\x90`\x7F\x16\x90a\x07\x12V[\x90\x81Q` \x81\x10_\x14a\x087WP\x90`\x1F\x81Q\x11a\x06\xB3W` \x81Q\x91\x01Q` \x82\x10a\x06\xA4W\x17\x90V[`\x01`\x01`@\x1B\x03\x81\x11a\x03fW`\x07T`\x01\x81\x81\x1C\x91\x16\x80\x15a\tFW[` \x82\x10\x14a\x03HW`\x1F\x81\x11a\t\x07W[P` \x92`\x1F\x82\x11`\x01\x14a\x08\xA6W\x92\x81\x92\x93_\x92a\x08\x9BW[PP\x81`\x01\x1B\x91_\x19\x90`\x03\x1B\x1C\x19\x16\x17`\x07U`\xFF\x90V[\x01Q\x90P_\x80a\x08\x82V[`\x1F\x19\x82\x16\x93`\x07_R\x80_ \x91_[\x86\x81\x10a\x08\xEFWP\x83`\x01\x95\x96\x10a\x08\xD7W[PPP\x81\x1B\x01`\x07U`\xFF\x90V[\x01Q_\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U_\x80\x80a\x08\xC9V[\x91\x92` `\x01\x81\x92\x86\x85\x01Q\x81U\x01\x94\x01\x92\x01a\x08\xB6V[\x81\x81\x11\x15a\x08hW`\x07_R` _ `\x1F\x80\x84\x01`\x05\x1C\x80\x92\x01\x92\x01`\x05\x1C\x03\x90_[\x82\x81\x10a\t9WPPa\x08hV[_\x82\x82\x01U`\x01\x01a\t+V[\x90`\x7F\x16\x90a\x08VV\xFE`\x80\x80`@R`\x046\x10\x15a\0\x12W_\x80\xFD[_5`\xE0\x1C\x90\x81c\x01\xFF\xC9\xA7\x14a\x10\xA0WP\x80c\x06\xFD\xDE\x03\x14a\x0F\xDDW\x80c\t^\xA7\xB3\x14a\x0F\x99W\x80c\x18\x16\r\xDD\x14a\x0F^W\x80c#\xB8r\xDD\x14a\x0F\x08W\x80c$\x8A\x9C\xA3\x14a\x0E\xBFW\x80c//\xF1]\x14a\x0EcW\x80c1<\xE5g\x14a\x0E\x08W\x80c6D\xE5\x15\x14a\r\xC8W\x80c6V\x8A\xBE\x14a\r@W\x80c?K\xA8:\x14a\x0C'W\x80c@\xC1\x0F\x19\x14a\n\x8FW\x80cB\x96lh\x14a\nTW\x80c\\\x97Z\xBB\x14a\n\x14W\x80cp\xA0\x821\x14a\t\xB2W\x80cy\xCCg\x90\x14a\tdW\x80c~\xCE\xBE\0\x14a\t\x01W\x80c\x84V\xCBY\x14a\x07\xEEW\x80c\x84\xB0\x19n\x14a\x06\xBCW\x80c\x91\xD1HT\x14a\x06GW\x80c\x95\xD8\x9BA\x14a\x05)W\x80c\xA2\x17\xFD\xDF\x14a\x04\xF1W\x80c\xA9\x05\x9C\xBB\x14a\x04\xA2W\x80c\xD5\x05\xAC\xCF\x14a\x02\xF3W\x80c\xD59\x13\x93\x14a\x02\x9BW\x80c\xD5Gt\x1F\x14a\x028W\x80c\xDDb\xED>\x14a\x01\xACWc\xE6:\xB1\xE9\x14a\x01PW_\x80\xFD[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` `@Q\x7Fe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x81R\xF3[_\x80\xFD[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x01\xE3a\x11\x9FV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x02\0a\x11\xC2V[\x91\x16_R`\x01` Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@_ \x91\x16_R` R` `@_ T`@Q\x90\x81R\xF3[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x02\x99`\x045a\x02ua\x11\xC2V[\x90a\x02\x94a\x02\x8F\x82_R`\t` R`\x01`@_ \x01T\x90V[a\x15\xC4V[a\x18(V[\0[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` `@Q\x7F\x9F-\xF0\xFE\xD2\xC7vH\xDEX`\xA4\xCCP\x8C\xD0\x81\x8C\x85\xB8\xB8\xA1\xABL\xEE\xEF\x8D\x98\x1C\x89V\xA6\x81R\xF3[4a\x01\xA8W`\xE0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x03*a\x11\x9FV[a\x032a\x11\xC2V[`D5\x90`d5\x92`\x845`\xFF\x81\x16\x81\x03a\x01\xA8W\x84B\x11a\x04vWa\x043a\x04*s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x85\x16\x97\x88_R`\x08` R`@_ \x90\x81T\x91`\x01\x83\x01\x90U`@Q\x90` \x82\x01\x92\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x84R\x8B`@\x84\x01R\x87\x8A\x16``\x84\x01R\x8A`\x80\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xC0\x81Ra\x03\xDD`\xE0\x82a\x12\xD6V[Q\x90 a\x03\xE8a\x16\xFFV[\x90`@Q\x91\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R`\x02\x83\x01R`\"\x82\x01R`\xC45\x91`B`\xA45\x92 a\x1B\x10V[\x90\x92\x91\x92a\x1B\xAAV[\x16\x84\x81\x03a\x04FWPa\x02\x99\x93Pa\x19\xACV[\x84\x90\x7FK\x80\x0EF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`D_\xFD[\x84\x7Fby\x13\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$_\xFD[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x04\xE6a\x04\xDCa\x11\x9FV[`$5\x903a\x14\xBEV[` `@Q`\x01\x81R\xF3[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` `@Q_\x81R\xF3[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W`@Q_`\x04Ta\x05g\x81a\x11\xE5V[\x80\x84R\x90`\x01\x81\x16\x90\x81\x15a\x06\x05WP`\x01\x14a\x05\xA7W[a\x05\xA3\x83a\x05\x8F\x81\x85\x03\x82a\x12\xD6V[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x11\\V[\x03\x90\xF3[`\x04_\x90\x81R\x7F\x8A5\xAC\xFB\xC1_\xF8\x1A9\xAE}4O\xD7\t\xF2\x8E\x86\0\xB4\xAA\x8Ce\xC6\xB6K\xFE\x7F\xE3k\xD1\x9B\x93\x92P\x90[\x80\x82\x10a\x05\xEBWP\x90\x91P\x81\x01` \x01a\x05\x8Fa\x05\x7FV[\x91\x92`\x01\x81` \x92T\x83\x85\x88\x01\x01R\x01\x91\x01\x90\x92\x91a\x05\xD3V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16` \x80\x86\x01\x91\x90\x91R\x91\x15\x15`\x05\x1B\x84\x01\x90\x91\x01\x91Pa\x05\x8F\x90Pa\x05\x7FV[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x06~a\x11\xC2V[`\x045_R`\t` Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@_ \x91\x16_R` R` `\xFF`@_ T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x07\x92a\x07\x16\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1A]V[a\x07?\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1A\xD9V[` a\x07\xA0`@Q\x92a\x07R\x83\x85a\x12\xD6V[_\x84R_6\x817`@Q\x95\x86\x95\x7F\x0F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87R`\xE0\x85\x88\x01R`\xE0\x87\x01\x90a\x11\\V[\x90\x85\x82\x03`@\x87\x01Ra\x11\\V[F``\x85\x01R0`\x80\x85\x01R_`\xA0\x85\x01R\x83\x81\x03`\xC0\x85\x01R\x81\x80\x84Q\x92\x83\x81R\x01\x93\x01\x91_[\x82\x81\x10a\x07\xD7WPPPP\x03\x90\xF3[\x83Q\x85R\x86\x95P\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01a\x07\xC8V[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W3_\x90\x81R\x7F\x84WJ1\xE2\xF7g8\x8B\xFAW\xBC\x81\xFF%\x90\xDF\x95\xD3\x02,\x04\xC3c\xCC\xA3\xE3~\xE9`\x861` R`@\x90 T`\xFF\x16\x15a\x08\xB1Wa\x08Za\x1A)V[`\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0`\x05T\x16\x17`\x05U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X` `@Q3\x81R\xA1\0[\x7F\xE2Q}?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R3`\x04R\x7Fe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*`$R`D_\xFD[4a\x01\xA8W` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\tMa\x11\x9FV[\x16_R`\x08` R` `@_ T`@Q\x90\x81R\xF3[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x02\x99a\t\x9Ea\x11\x9FV[`$5\x90a\t\xAD\x823\x83a\x13DV[a\x18\xF2V[4a\x01\xA8W` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\t\xFEa\x11\x9FV[\x16_R_` R` `@_ T`@Q\x90\x81R\xF3[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` `\xFF`\x05T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x01\xA8W` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x02\x99`\x0453a\x18\xF2V[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\n\xC6a\x11\x9FV[3_\x90\x81R\x7F\xD5\xD0\x9B\x8F1e\xA76\xD2[\x1A\x14a\x16\x12\xAC\x91\x83\x0C\x1B\x82\x01+\x1C3\xB2\xDA\xC7\xC9\n\x06I` R`@\x90 T`$5\x91\x90`\xFF\x16\x15a\x0B\xD7Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x81\x15a\x0B\xABWa\x0B&a\x1A)V[a\x0B.a\x1A)V[`\x02T\x90\x80\x82\x01\x80\x92\x11a\x0B~W` \x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91_\x93`\x02U\x84\x84R\x83\x82R`@\x84 \x81\x81T\x01\x90U`@Q\x90\x81R\xA3\0[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x7F\xECD/\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R_`\x04R`$_\xFD[\x7F\xE2Q}?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R3`\x04R\x7F\x9F-\xF0\xFE\xD2\xC7vH\xDEX`\xA4\xCCP\x8C\xD0\x81\x8C\x85\xB8\xB8\xA1\xABL\xEE\xEF\x8D\x98\x1C\x89V\xA6`$R`D_\xFD[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W3_\x90\x81R\x7F\xEC\x81Vq\x8A\x83r\xB1\xDBD\xBBA\x147\xD0\x87\x0F>7\x90\xD4\xA0\x85&\xD0$\xCE\x1B\x0Bf\x8Fk` R`@\x90 T`\xFF\x16\x15a\r\x10W`\x05T`\xFF\x81\x16\x15a\x0C\xE8W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x05U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA` `@Q3\x81R\xA1\0[\x7F\x8D\xFC +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[\x7F\xE2Q}?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R3`\x04R_`$R`D_\xFD[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\rwa\x11\xC2V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x03a\r\xA0Wa\x02\x99\x90`\x045a\x18(V[\x7Ff\x97\xB22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` a\x0E\0a\x16\xFFV[`@Q\x90\x81R\xF3[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` `@Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x02\x99`\x045a\x0E\xA0a\x11\xC2V[\x90a\x0E\xBAa\x02\x8F\x82_R`\t` R`\x01`@_ \x01T\x90V[a\x16+V[4a\x01\xA8W` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` a\x0E\0`\x045_R`\t` R`\x01`@_ \x01T\x90V[4a\x01\xA8W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x04\xE6a\x0FBa\x11\x9FV[a\x0FJa\x11\xC2V[`D5\x91a\x0FY\x833\x83a\x13DV[a\x14\xBEV[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` `\x02T`@Q\x90\x81R\xF3[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x04\xE6a\x0F\xD3a\x11\x9FV[`$5\x903a\x19\xACV[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W`@Q_`\x03Ta\x10\x1B\x81a\x11\xE5V[\x80\x84R\x90`\x01\x81\x16\x90\x81\x15a\x06\x05WP`\x01\x14a\x10BWa\x05\xA3\x83a\x05\x8F\x81\x85\x03\x82a\x12\xD6V[`\x03_\x90\x81R\x7F\xC2WZ\x0E\x9EY<\0\xF9Y\xF8\xC9/\x12\xDB(i\xC39Z;\x05\x02\xD0^%\x16Doq\xF8[\x93\x92P\x90[\x80\x82\x10a\x10\x86WP\x90\x91P\x81\x01` \x01a\x05\x8Fa\x05\x7FV[\x91\x92`\x01\x81` \x92T\x83\x85\x88\x01\x01R\x01\x91\x01\x90\x92\x91a\x10nV[4a\x01\xA8W` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W`\x045\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x80\x92\x03a\x01\xA8W\x81\x7Fye\xDB\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x93\x14\x90\x81\x15a\x112W[P\x15\x15\x81R\xF3[\x7F\x01\xFF\xC9\xA7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x14\x83a\x11+V[\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F` \x80\x94\x80Q\x91\x82\x91\x82\x87R\x01\x86\x86\x01^_\x85\x82\x86\x01\x01R\x01\x16\x01\x01\x90V[`\x045\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x01\xA8WV[`$5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x01\xA8WV[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x12,W[` \x83\x10\x14a\x11\xFFWV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[\x91`\x7F\x16\x91a\x11\xF4V[_\x92\x91\x81T\x91a\x12E\x83a\x11\xE5V[\x80\x83R\x92`\x01\x81\x16\x90\x81\x15a\x12\x9AWP`\x01\x14a\x12aWPPPV[_\x90\x81R` \x81 \x93\x94P\x91\x92[\x83\x83\x10a\x12\x80WP` \x92P\x01\x01\x90V[`\x01\x81` \x92\x94\x93\x94T\x83\x85\x87\x01\x01R\x01\x91\x01\x91\x90a\x12oV[\x90P` \x94\x95P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x91P\x92\x91\x92\x16\x83\x83\x01R\x15\x15`\x05\x1B\x01\x01\x90V[\x90`\x1F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\x17W`@RV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x91\x92\x16\x91\x82_R`\x01` R`@_ s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_R` R`@_ T\x92\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x10a\x13\xBBW[PPPPV[\x82\x84\x10a\x14tW\x80\x15a\x14HWs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x15a\x14\x1CW_R`\x01` Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@_ \x91\x16_R` R`@_ \x91\x03\x90U_\x80\x80\x80a\x13\xB5V[\x7F\x94(\rb\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R_`\x04R`$_\xFD[\x7F\xE6\x02\xDF\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R_`\x04R`$_\xFD[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x91\x7F\xFB\x8FA\xB2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R\x16`\x04R`$R`DR`d_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x81\x15a\x15\x98Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x82\x15a\x0B\xABWa\x15\0a\x1A)V[a\x15\x08a\x1A)V[\x81_R_` R`@_ T\x81\x81\x10a\x15fW\x81\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x92` \x92\x85_R_\x84R\x03`@_ U\x84_R_\x82R`@_ \x81\x81T\x01\x90U`@Q\x90\x81R\xA3V[\x82\x7F\xE4P\xD3\x8C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`DR`d_\xFD[\x7F\x96\xC6\xFD\x1E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R_`\x04R`$_\xFD[\x80_R`\t` R`@_ s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF3\x16_R` R`\xFF`@_ T\x16\x15a\x15\xFCWPV[\x7F\xE2Q}?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R3`\x04R`$R`D_\xFD[\x80_R`\t` R`@_ s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_R` R`\xFF`@_ T\x16\x15_\x14a\x16\xF9W\x80_R`\t` R`@_ s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_R` R`@_ `\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x82T\x16\x17\x90Us\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF3\x92\x16\x90\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r_\x80\xA4`\x01\x90V[PP_\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x160\x14\x80a\x17\xFFW[\x15a\x17gW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q` \x81\x01\x90\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x82R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81Ra\x17\xF9`\xC0\x82a\x12\xD6V[Q\x90 \x90V[P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14a\x17>V[\x80_R`\t` R`@_ s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_R` R`\xFF`@_ T\x16_\x14a\x16\xF9W\x80_R`\t` R`@_ s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_R` R`@_ \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x81T\x16\x90Us\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF3\x92\x16\x90\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B_\x80\xA4`\x01\x90V[\x90\x91\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x80\x15a\x15\x98Wa\x19\x19a\x1A)V[a\x19!a\x1A)V[\x80_R_` R`@_ T\x83\x81\x10a\x19yW` \x84_\x94\x95\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x93\x85\x87R\x86\x84R\x03`@\x86 U\x80`\x02T\x03`\x02U`@Q\x90\x81R\xA3V[\x91P\x7F\xE4P\xD3\x8C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`DR`d_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x81\x15a\x14HWs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x82\x15a\x14\x1CW` \x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x83_R`\x01\x82R`@_ \x85_R\x82R\x80`@_ U`@Q\x90\x81R\xA3V[`\xFF`\x05T\x16a\x1A5WV[\x7F\xD9<\x06e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[`\xFF\x81\x14a\x1A\xBCW`\xFF\x81\x16\x90`\x1F\x82\x11a\x1A\x94W`@Q\x91a\x1A\x81`@\x84a\x12\xD6V[` \x80\x84R\x83\x81\x01\x91\x906\x837\x83RR\x90V[\x7F\xB3Q+\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[P`@Qa\x1A\xD6\x81a\x1A\xCF\x81`\x06a\x126V[\x03\x82a\x12\xD6V[\x90V[`\xFF\x81\x14a\x1A\xFDW`\xFF\x81\x16\x90`\x1F\x82\x11a\x1A\x94W`@Q\x91a\x1A\x81`@\x84a\x12\xD6V[P`@Qa\x1A\xD6\x81a\x1A\xCF\x81`\x07a\x126V[\x91\x90\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x84\x11a\x1B\x9FW\x91` \x93`\x80\x92`\xFF_\x95`@Q\x94\x85R\x16\x86\x84\x01R`@\x83\x01R``\x82\x01R\x82\x80R`\x01Z\xFA\x15a\x1B\x94W_Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15a\x1B\x8AW\x90_\x90_\x90V[P_\x90`\x01\x90_\x90V[`@Q=_\x82>=\x90\xFD[PPP_\x91`\x03\x91\x90V[`\x04\x81\x10\x15a\x1CUW\x80a\x1B\xBCWPPV[`\x01\x81\x03a\x1B\xECW\x7F\xF6E\xEE\xDF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[`\x02\x81\x03a\x1C WP\x7F\xFC\xE6\x98\xF7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$_\xFD[`\x03\x14a\x1C*WPV[\x7F\xD7\x8B\xCE\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`!`\x04R`$_\xFD/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x84WJ1\xE2\xF7g8\x8B\xFAW\xBC\x81\xFF%\x90\xDF\x95\xD3\x02,\x04\xC3c\xCC\xA3\xE3~\xE9`\x861\xEC\x81Vq\x8A\x83r\xB1\xDBD\xBBA\x147\xD0\x87\x0F>7\x90\xD4\xA0\x85&\xD0$\xCE\x1B\x0Bf\x8Fk\xD5\xD0\x9B\x8F1e\xA76\xD2[\x1A\x14a\x16\x12\xAC\x91\x83\x0C\x1B\x82\x01+\x1C3\xB2\xDA\xC7\xC9\n\x06I", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714610eff5750806306fdde0314610dcb578063095ea7b314610cc657806318160ddd14610c8b57806323b872dd14610c35578063248a9ca314610be45780632f2ff15d14610b88578063313ce56714610b2d57806336568abe14610aa55780633f4ba83a1461098c57806340c10f19146107f457806342966c68146107b95780635c975abb1461077957806370a082311461071757806379cc6790146106c95780638456cb59146105b657806391d148541461054157806395d89b411461034e578063a217fddf14610316578063a9059cbb146102c7578063d53913931461026f578063d547741f1461020c578063dd62ed3e146101805763e63ab1e914610124575f80fd5b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5760206040517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8152f35b5f80fd5b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c576101b7611003565b73ffffffffffffffffffffffffffffffffffffffff6101d4611026565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5761026d600435610249611026565b90610268610263825f526006602052600160405f20015490565b611271565b6113ac565b005b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5760206040517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5761030b610301611003565b602435903361116b565b602060405160018152f35b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5760206040515f8152f35b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c576040515f600454908160011c60018316928315610537575b60208210841461050a5781855284939081156104aa5750600114610430575b5003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff821181831017610403576103ff82918260405282610fbb565b0390f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60045f90815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b81831061048e57505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06103b3565b602091935080600191548385880101520191019091839261045a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b840190910191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090506103b3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f1690610394565b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57610578611026565b6004355f52600660205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57335f9081527fe09f975e15f8f53f24cbbc282b13c40b84df485fcdb8d3997fa103dc5a4ef841602052604090205460ff161561067957610622611530565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060055416176005557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60245260445ffd5b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5761026d610703611003565b60243590610712823383611049565b611476565b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5773ffffffffffffffffffffffffffffffffffffffff610763611003565b165f525f602052602060405f2054604051908152f35b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57602060ff600554166040519015158152f35b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5761026d60043533611476565b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5761082b611003565b335f9081527f3195c024b2ddd6d9b8f6c836aa52f67fe69376c8903d009b80229b3ce4425f516020526040902054602435919060ff161561093c5773ffffffffffffffffffffffffffffffffffffffff169081156109105761088b611530565b610893611530565b600254908082018092116108e35760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a660245260445ffd5b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57335f9081527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8602052604090205460ff1615610a755760055460ff811615610a4d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166005557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b7f8dfc202b000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004525f60245260445ffd5b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57610adc611026565b3373ffffffffffffffffffffffffffffffffffffffff821603610b055761026d906004356113ac565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5761026d600435610bc5611026565b90610bdf610263825f526006602052600160405f20015490565b6112d8565b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c576020610c2d6004355f526006602052600160405f20015490565b604051908152f35b3461017c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c5761030b610c6f611003565b610c77611026565b60443591610c86833383611049565b61116b565b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c576020600254604051908152f35b3461017c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57610cfd611003565b602435903315610d9f5773ffffffffffffffffffffffffffffffffffffffff16908115610d7357335f52600160205260405f20825f526020528060405f20556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b3461017c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c576040515f600354908160011c60018316928315610ef5575b60208210841461050a5781855284939081156104aa5750600114610e7b575003601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681019067ffffffffffffffff821181831017610403576103ff82918260405282610fbb565b60035f90815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b818310610ed957505081016020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06103b3565b6020919350806001915483858801015201910190918392610ea5565b90607f1690610e11565b3461017c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017c57600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361017c57817f7965db0b0000000000000000000000000000000000000000000000000000000060209314908115610f91575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610f8a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361017c57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361017c57565b73ffffffffffffffffffffffffffffffffffffffff909291921691825f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff82165f5260205260405f2054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84106110c0575b50505050565b828410611121578015610d9f5773ffffffffffffffffffffffffffffffffffffffff821615610d73575f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f20910390555f8080806110ba565b5073ffffffffffffffffffffffffffffffffffffffff83917ffb8f41b2000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b73ffffffffffffffffffffffffffffffffffffffff169081156112455773ffffffffffffffffffffffffffffffffffffffff16918215610910576111ad611530565b6111b5611530565b815f525f60205260405f205481811061121357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b805f52600660205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f205416156112a95750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b805f52600660205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f205416155f146113a657805f52600660205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905573ffffffffffffffffffffffffffffffffffffffff339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b805f52600660205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f2054165f146113a657805f52600660205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905573ffffffffffffffffffffffffffffffffffffffff339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b90919073ffffffffffffffffffffffffffffffffffffffff1680156112455761149d611530565b6114a5611530565b805f525f60205260405f20548381106114fd576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3565b91507fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b60ff6005541661153c57565b7fd93c0665000000000000000000000000000000000000000000000000000000005f5260045ffd + ///0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a7146110a05750806306fdde0314610fdd578063095ea7b314610f9957806318160ddd14610f5e57806323b872dd14610f08578063248a9ca314610ebf5780632f2ff15d14610e63578063313ce56714610e085780633644e51514610dc857806336568abe14610d405780633f4ba83a14610c2757806340c10f1914610a8f57806342966c6814610a545780635c975abb14610a1457806370a08231146109b257806379cc6790146109645780637ecebe00146109015780638456cb59146107ee57806384b0196e146106bc57806391d148541461064757806395d89b4114610529578063a217fddf146104f1578063a9059cbb146104a2578063d505accf146102f3578063d53913931461029b578063d547741f14610238578063dd62ed3e146101ac5763e63ab1e914610150575f80fd5b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85760206040517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8152f35b5f80fd5b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576101e361119f565b73ffffffffffffffffffffffffffffffffffffffff6102006111c2565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576102996004356102756111c2565b9061029461028f825f526009602052600160405f20015490565b6115c4565b611828565b005b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85760206040517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b346101a85760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85761032a61119f565b6103326111c2565b604435906064359260843560ff811681036101a8578442116104765761043361042a73ffffffffffffffffffffffffffffffffffffffff9283851697885f52600860205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528b6040840152878a1660608401528a608084015260a083015260c082015260c081526103dd60e0826112d6565b5190206103e86116ff565b90604051917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220611b10565b90929192611baa565b16848103610446575061029993506119ac565b84907f4b800e46000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b847f62791302000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576104e66104dc61119f565b60243590336114be565b602060405160018152f35b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85760206040515f8152f35b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576040515f600454610567816111e5565b808452906001811690811561060557506001146105a7575b6105a38361058f818503826112d6565b60405191829160208352602083019061115c565b0390f35b60045f9081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b8082106105eb5750909150810160200161058f61057f565b9192600181602092548385880101520191019092916105d3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b8401909101915061058f905061057f565b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85761067e6111c2565b6004355f52600960205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576107926107167f0000000000000000000000000000000000000000000000000000000000000000611a5d565b61073f7f0000000000000000000000000000000000000000000000000000000000000000611ad9565b60206107a06040519261075283856112d6565b5f84525f3681376040519586957f0f00000000000000000000000000000000000000000000000000000000000000875260e08588015260e087019061115c565b90858203604087015261115c565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b8281106107d757505050500390f35b8351855286955093810193928101926001016107c8565b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857335f9081527f84574a31e2f767388bfa57bc81ff2590df95d3022c04c363cca3e37ee9608631602052604090205460ff16156108b15761085a611a29565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060055416176005557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60245260445ffd5b346101a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85773ffffffffffffffffffffffffffffffffffffffff61094d61119f565b165f526008602052602060405f2054604051908152f35b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85761029961099e61119f565b602435906109ad823383611344565b6118f2565b346101a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a85773ffffffffffffffffffffffffffffffffffffffff6109fe61119f565b165f525f602052602060405f2054604051908152f35b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857602060ff600554166040519015158152f35b346101a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857610299600435336118f2565b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857610ac661119f565b335f9081527fd5d09b8f3165a736d25b1a14611612ac91830c1b82012b1c33b2dac7c90a06496020526040902054602435919060ff1615610bd75773ffffffffffffffffffffffffffffffffffffffff16908115610bab57610b26611a29565b610b2e611a29565b60025490808201809211610b7e5760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3005b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fec442f05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a660245260445ffd5b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857335f9081527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b602052604090205460ff1615610d105760055460ff811615610ce8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166005557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b7f8dfc202b000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004525f60245260445ffd5b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857610d776111c2565b3373ffffffffffffffffffffffffffffffffffffffff821603610da05761029990600435611828565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576020610e006116ff565b604051908152f35b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857610299600435610ea06111c2565b90610eba61028f825f526009602052600160405f20015490565b61162b565b346101a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576020610e006004355f526009602052600160405f20015490565b346101a85760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576104e6610f4261119f565b610f4a6111c2565b60443591610f59833383611344565b6114be565b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576020600254604051908152f35b346101a85760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576104e6610fd361119f565b60243590336119ac565b346101a8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a8576040515f60035461101b816111e5565b80845290600181169081156106055750600114611042576105a38361058f818503826112d6565b60035f9081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b8082106110865750909150810160200161058f61057f565b91926001816020925483858801015201910190929161106e565b346101a85760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a857600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036101a857817f7965db0b0000000000000000000000000000000000000000000000000000000060209314908115611132575b5015158152f35b7f01ffc9a7000000000000000000000000000000000000000000000000000000009150148361112b565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101a857565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101a857565b90600182811c9216801561122c575b60208310146111ff57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916111f4565b5f9291815491611245836111e5565b808352926001811690811561129a575060011461126157505050565b5f9081526020812093945091925b838310611280575060209250010190565b60018160209294939454838587010152019101919061126f565b905060209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761131757604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff909291921691825f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff82165f5260205260405f2054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84106113bb575b50505050565b8284106114745780156114485773ffffffffffffffffffffffffffffffffffffffff82161561141c575f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f20910390555f8080806113b5565b7f94280d62000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b7fe602df05000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b5073ffffffffffffffffffffffffffffffffffffffff83917ffb8f41b2000000000000000000000000000000000000000000000000000000005f521660045260245260445260645ffd5b73ffffffffffffffffffffffffffffffffffffffff169081156115985773ffffffffffffffffffffffffffffffffffffffff16918215610bab57611500611a29565b611508611a29565b815f525f60205260405f205481811061156657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f525f825260405f20818154019055604051908152a3565b827fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b7f96c6fd1e000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b805f52600960205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f205416156115fc5750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b805f52600960205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f205416155f146116f957805f52600960205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905573ffffffffffffffffffffffffffffffffffffffff339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163014806117ff575b15611767577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a081526117f960c0826112d6565b51902090565b507f0000000000000000000000000000000000000000000000000000000000000000461461173e565b805f52600960205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f2054165f146116f957805f52600960205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905573ffffffffffffffffffffffffffffffffffffffff339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b90919073ffffffffffffffffffffffffffffffffffffffff16801561159857611919611a29565b611921611a29565b805f525f60205260405f2054838110611979576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587528684520360408620558060025403600255604051908152a3565b91507fe450d38c000000000000000000000000000000000000000000000000000000005f5260045260245260445260645ffd5b73ffffffffffffffffffffffffffffffffffffffff169081156114485773ffffffffffffffffffffffffffffffffffffffff1691821561141c5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b60ff60055416611a3557565b7fd93c0665000000000000000000000000000000000000000000000000000000005f5260045ffd5b60ff8114611abc5760ff811690601f8211611a945760405191611a816040846112d6565b6020808452838101919036833783525290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b50604051611ad681611acf816006611236565b03826112d6565b90565b60ff8114611afd5760ff811690601f8211611a945760405191611a816040846112d6565b50604051611ad681611acf816007611236565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411611b9f579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611b94575f5173ffffffffffffffffffffffffffffffffffffffff811615611b8a57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b6004811015611c555780611bbc575050565b60018103611bec577ff645eedf000000000000000000000000000000000000000000000000000000005f5260045ffd5b60028103611c2057507ffce698f7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b600314611c2a5750565b7fd78bce0c000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80\x80`@R`\x046\x10\x15a\0\x12W_\x80\xFD[_5`\xE0\x1C\x90\x81c\x01\xFF\xC9\xA7\x14a\x0E\xFFWP\x80c\x06\xFD\xDE\x03\x14a\r\xCBW\x80c\t^\xA7\xB3\x14a\x0C\xC6W\x80c\x18\x16\r\xDD\x14a\x0C\x8BW\x80c#\xB8r\xDD\x14a\x0C5W\x80c$\x8A\x9C\xA3\x14a\x0B\xE4W\x80c//\xF1]\x14a\x0B\x88W\x80c1<\xE5g\x14a\x0B-W\x80c6V\x8A\xBE\x14a\n\xA5W\x80c?K\xA8:\x14a\t\x8CW\x80c@\xC1\x0F\x19\x14a\x07\xF4W\x80cB\x96lh\x14a\x07\xB9W\x80c\\\x97Z\xBB\x14a\x07yW\x80cp\xA0\x821\x14a\x07\x17W\x80cy\xCCg\x90\x14a\x06\xC9W\x80c\x84V\xCBY\x14a\x05\xB6W\x80c\x91\xD1HT\x14a\x05AW\x80c\x95\xD8\x9BA\x14a\x03NW\x80c\xA2\x17\xFD\xDF\x14a\x03\x16W\x80c\xA9\x05\x9C\xBB\x14a\x02\xC7W\x80c\xD59\x13\x93\x14a\x02oW\x80c\xD5Gt\x1F\x14a\x02\x0CW\x80c\xDDb\xED>\x14a\x01\x80Wc\xE6:\xB1\xE9\x14a\x01$W_\x80\xFD[4a\x01|W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|W` `@Q\x7Fe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x81R\xF3[_\x80\xFD[4a\x01|W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Wa\x01\xB7a\x10\x03V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x01\xD4a\x10&V[\x91\x16_R`\x01` Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@_ \x91\x16_R` R` `@_ T`@Q\x90\x81R\xF3[4a\x01|W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Wa\x02m`\x045a\x02Ia\x10&V[\x90a\x02ha\x02c\x82_R`\x06` R`\x01`@_ \x01T\x90V[a\x12qV[a\x13\xACV[\0[4a\x01|W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|W` `@Q\x7F\x9F-\xF0\xFE\xD2\xC7vH\xDEX`\xA4\xCCP\x8C\xD0\x81\x8C\x85\xB8\xB8\xA1\xABL\xEE\xEF\x8D\x98\x1C\x89V\xA6\x81R\xF3[4a\x01|W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Wa\x03\x0Ba\x03\x01a\x10\x03V[`$5\x903a\x11kV[` `@Q`\x01\x81R\xF3[4a\x01|W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|W` `@Q_\x81R\xF3[4a\x01|W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|W`@Q_`\x04T\x90\x81`\x01\x1C`\x01\x83\x16\x92\x83\x15a\x057W[` \x82\x10\x84\x14a\x05\nW\x81\x85R\x84\x93\x90\x81\x15a\x04\xAAWP`\x01\x14a\x040W[P\x03`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x81\x83\x10\x17a\x04\x03Wa\x03\xFF\x82\x91\x82`@R\x82a\x0F\xBBV[\x03\x90\xF3[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`\x04_\x90\x81R\x91P\x7F\x8A5\xAC\xFB\xC1_\xF8\x1A9\xAE}4O\xD7\t\xF2\x8E\x86\0\xB4\xAA\x8Ce\xC6\xB6K\xFE\x7F\xE3k\xD1\x9B[\x81\x83\x10a\x04\x8EWPP\x81\x01` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0a\x03\xB3V[` \x91\x93P\x80`\x01\x91T\x83\x85\x88\x01\x01R\x01\x91\x01\x90\x91\x83\x92a\x04ZV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16` \x85\x81\x01\x91\x90\x91R\x91\x15\x15`\x05\x1B\x84\x01\x90\x91\x01\x91P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90Pa\x03\xB3V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[\x90`\x7F\x16\x90a\x03\x94V[4a\x01|W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Wa\x05xa\x10&V[`\x045_R`\x06` Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@_ \x91\x16_R` R` `\xFF`@_ T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x01|W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|W3_\x90\x81R\x7F\xE0\x9F\x97^\x15\xF8\xF5?$\xCB\xBC(+\x13\xC4\x0B\x84\xDFH_\xCD\xB8\xD3\x99\x7F\xA1\x03\xDCZN\xF8A` R`@\x90 T`\xFF\x16\x15a\x06yWa\x06\"a\x150V[`\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0`\x05T\x16\x17`\x05U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X` `@Q3\x81R\xA1\0[\x7F\xE2Q}?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R3`\x04R\x7Fe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*`$R`D_\xFD[4a\x01|W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Wa\x02ma\x07\x03a\x10\x03V[`$5\x90a\x07\x12\x823\x83a\x10IV[a\x14vV[4a\x01|W` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x07ca\x10\x03V[\x16_R_` R` `@_ T`@Q\x90\x81R\xF3[4a\x01|W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|W` `\xFF`\x05T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x01|W` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Wa\x02m`\x0453a\x14vV[4a\x01|W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01|Wa\x08+a\x10\x03V[3_\x90\x81R\x7F1\x95\xC0$\xB2\xDD\xD6\xD9\xB8\xF6\xC86\xAAR\xF6\x7F\xE6\x93v\xC8\x90=\0\x9B\x80\"\x9B<\xE4B_Q` R`@\x90 T`$5\x91\x90`\xFF\x16\x15a\t\x14a\x01\xACWc\xE6:\xB1\xE9\x14a\x01PW_\x80\xFD[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` `@Q\x7Fe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x81R\xF3[_\x80\xFD[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x01\xE3a\x11\x9FV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x02\0a\x11\xC2V[\x91\x16_R`\x01` Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@_ \x91\x16_R` R` `@_ T`@Q\x90\x81R\xF3[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x02\x99`\x045a\x02ua\x11\xC2V[\x90a\x02\x94a\x02\x8F\x82_R`\t` R`\x01`@_ \x01T\x90V[a\x15\xC4V[a\x18(V[\0[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` `@Q\x7F\x9F-\xF0\xFE\xD2\xC7vH\xDEX`\xA4\xCCP\x8C\xD0\x81\x8C\x85\xB8\xB8\xA1\xABL\xEE\xEF\x8D\x98\x1C\x89V\xA6\x81R\xF3[4a\x01\xA8W`\xE0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x03*a\x11\x9FV[a\x032a\x11\xC2V[`D5\x90`d5\x92`\x845`\xFF\x81\x16\x81\x03a\x01\xA8W\x84B\x11a\x04vWa\x043a\x04*s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x85\x16\x97\x88_R`\x08` R`@_ \x90\x81T\x91`\x01\x83\x01\x90U`@Q\x90` \x82\x01\x92\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x84R\x8B`@\x84\x01R\x87\x8A\x16``\x84\x01R\x8A`\x80\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xC0\x81Ra\x03\xDD`\xE0\x82a\x12\xD6V[Q\x90 a\x03\xE8a\x16\xFFV[\x90`@Q\x91\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R`\x02\x83\x01R`\"\x82\x01R`\xC45\x91`B`\xA45\x92 a\x1B\x10V[\x90\x92\x91\x92a\x1B\xAAV[\x16\x84\x81\x03a\x04FWPa\x02\x99\x93Pa\x19\xACV[\x84\x90\x7FK\x80\x0EF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`D_\xFD[\x84\x7Fby\x13\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$_\xFD[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x04\xE6a\x04\xDCa\x11\x9FV[`$5\x903a\x14\xBEV[` `@Q`\x01\x81R\xF3[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` `@Q_\x81R\xF3[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W`@Q_`\x04Ta\x05g\x81a\x11\xE5V[\x80\x84R\x90`\x01\x81\x16\x90\x81\x15a\x06\x05WP`\x01\x14a\x05\xA7W[a\x05\xA3\x83a\x05\x8F\x81\x85\x03\x82a\x12\xD6V[`@Q\x91\x82\x91` \x83R` \x83\x01\x90a\x11\\V[\x03\x90\xF3[`\x04_\x90\x81R\x7F\x8A5\xAC\xFB\xC1_\xF8\x1A9\xAE}4O\xD7\t\xF2\x8E\x86\0\xB4\xAA\x8Ce\xC6\xB6K\xFE\x7F\xE3k\xD1\x9B\x93\x92P\x90[\x80\x82\x10a\x05\xEBWP\x90\x91P\x81\x01` \x01a\x05\x8Fa\x05\x7FV[\x91\x92`\x01\x81` \x92T\x83\x85\x88\x01\x01R\x01\x91\x01\x90\x92\x91a\x05\xD3V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16` \x80\x86\x01\x91\x90\x91R\x91\x15\x15`\x05\x1B\x84\x01\x90\x91\x01\x91Pa\x05\x8F\x90Pa\x05\x7FV[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x06~a\x11\xC2V[`\x045_R`\t` Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@_ \x91\x16_R` R` `\xFF`@_ T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x07\x92a\x07\x16\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1A]V[a\x07?\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1A\xD9V[` a\x07\xA0`@Q\x92a\x07R\x83\x85a\x12\xD6V[_\x84R_6\x817`@Q\x95\x86\x95\x7F\x0F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87R`\xE0\x85\x88\x01R`\xE0\x87\x01\x90a\x11\\V[\x90\x85\x82\x03`@\x87\x01Ra\x11\\V[F``\x85\x01R0`\x80\x85\x01R_`\xA0\x85\x01R\x83\x81\x03`\xC0\x85\x01R\x81\x80\x84Q\x92\x83\x81R\x01\x93\x01\x91_[\x82\x81\x10a\x07\xD7WPPPP\x03\x90\xF3[\x83Q\x85R\x86\x95P\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01a\x07\xC8V[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W3_\x90\x81R\x7F\x84WJ1\xE2\xF7g8\x8B\xFAW\xBC\x81\xFF%\x90\xDF\x95\xD3\x02,\x04\xC3c\xCC\xA3\xE3~\xE9`\x861` R`@\x90 T`\xFF\x16\x15a\x08\xB1Wa\x08Za\x1A)V[`\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0`\x05T\x16\x17`\x05U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X` `@Q3\x81R\xA1\0[\x7F\xE2Q}?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R3`\x04R\x7Fe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*`$R`D_\xFD[4a\x01\xA8W` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\tMa\x11\x9FV[\x16_R`\x08` R` `@_ T`@Q\x90\x81R\xF3[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x02\x99a\t\x9Ea\x11\x9FV[`$5\x90a\t\xAD\x823\x83a\x13DV[a\x18\xF2V[4a\x01\xA8W` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\t\xFEa\x11\x9FV[\x16_R_` R` `@_ T`@Q\x90\x81R\xF3[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` `\xFF`\x05T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x01\xA8W` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x02\x99`\x0453a\x18\xF2V[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\n\xC6a\x11\x9FV[3_\x90\x81R\x7F\xD5\xD0\x9B\x8F1e\xA76\xD2[\x1A\x14a\x16\x12\xAC\x91\x83\x0C\x1B\x82\x01+\x1C3\xB2\xDA\xC7\xC9\n\x06I` R`@\x90 T`$5\x91\x90`\xFF\x16\x15a\x0B\xD7Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x81\x15a\x0B\xABWa\x0B&a\x1A)V[a\x0B.a\x1A)V[`\x02T\x90\x80\x82\x01\x80\x92\x11a\x0B~W` \x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91_\x93`\x02U\x84\x84R\x83\x82R`@\x84 \x81\x81T\x01\x90U`@Q\x90\x81R\xA3\0[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x7F\xECD/\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R_`\x04R`$_\xFD[\x7F\xE2Q}?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R3`\x04R\x7F\x9F-\xF0\xFE\xD2\xC7vH\xDEX`\xA4\xCCP\x8C\xD0\x81\x8C\x85\xB8\xB8\xA1\xABL\xEE\xEF\x8D\x98\x1C\x89V\xA6`$R`D_\xFD[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W3_\x90\x81R\x7F\xEC\x81Vq\x8A\x83r\xB1\xDBD\xBBA\x147\xD0\x87\x0F>7\x90\xD4\xA0\x85&\xD0$\xCE\x1B\x0Bf\x8Fk` R`@\x90 T`\xFF\x16\x15a\r\x10W`\x05T`\xFF\x81\x16\x15a\x0C\xE8W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x05U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA` `@Q3\x81R\xA1\0[\x7F\x8D\xFC +\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[\x7F\xE2Q}?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R3`\x04R_`$R`D_\xFD[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\rwa\x11\xC2V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x03a\r\xA0Wa\x02\x99\x90`\x045a\x18(V[\x7Ff\x97\xB22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` a\x0E\0a\x16\xFFV[`@Q\x90\x81R\xF3[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` `@Q`\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x81R\xF3[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x02\x99`\x045a\x0E\xA0a\x11\xC2V[\x90a\x0E\xBAa\x02\x8F\x82_R`\t` R`\x01`@_ \x01T\x90V[a\x16+V[4a\x01\xA8W` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` a\x0E\0`\x045_R`\t` R`\x01`@_ \x01T\x90V[4a\x01\xA8W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x04\xE6a\x0FBa\x11\x9FV[a\x0FJa\x11\xC2V[`D5\x91a\x0FY\x833\x83a\x13DV[a\x14\xBEV[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W` `\x02T`@Q\x90\x81R\xF3[4a\x01\xA8W`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8Wa\x04\xE6a\x0F\xD3a\x11\x9FV[`$5\x903a\x19\xACV[4a\x01\xA8W_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W`@Q_`\x03Ta\x10\x1B\x81a\x11\xE5V[\x80\x84R\x90`\x01\x81\x16\x90\x81\x15a\x06\x05WP`\x01\x14a\x10BWa\x05\xA3\x83a\x05\x8F\x81\x85\x03\x82a\x12\xD6V[`\x03_\x90\x81R\x7F\xC2WZ\x0E\x9EY<\0\xF9Y\xF8\xC9/\x12\xDB(i\xC39Z;\x05\x02\xD0^%\x16Doq\xF8[\x93\x92P\x90[\x80\x82\x10a\x10\x86WP\x90\x91P\x81\x01` \x01a\x05\x8Fa\x05\x7FV[\x91\x92`\x01\x81` \x92T\x83\x85\x88\x01\x01R\x01\x91\x01\x90\x92\x91a\x10nV[4a\x01\xA8W` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x01\xA8W`\x045\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x80\x92\x03a\x01\xA8W\x81\x7Fye\xDB\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x93\x14\x90\x81\x15a\x112W[P\x15\x15\x81R\xF3[\x7F\x01\xFF\xC9\xA7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x14\x83a\x11+V[\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F` \x80\x94\x80Q\x91\x82\x91\x82\x87R\x01\x86\x86\x01^_\x85\x82\x86\x01\x01R\x01\x16\x01\x01\x90V[`\x045\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x01\xA8WV[`$5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x01\xA8WV[\x90`\x01\x82\x81\x1C\x92\x16\x80\x15a\x12,W[` \x83\x10\x14a\x11\xFFWV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[\x91`\x7F\x16\x91a\x11\xF4V[_\x92\x91\x81T\x91a\x12E\x83a\x11\xE5V[\x80\x83R\x92`\x01\x81\x16\x90\x81\x15a\x12\x9AWP`\x01\x14a\x12aWPPPV[_\x90\x81R` \x81 \x93\x94P\x91\x92[\x83\x83\x10a\x12\x80WP` \x92P\x01\x01\x90V[`\x01\x81` \x92\x94\x93\x94T\x83\x85\x87\x01\x01R\x01\x91\x01\x91\x90a\x12oV[\x90P` \x94\x95P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x91P\x92\x91\x92\x16\x83\x83\x01R\x15\x15`\x05\x1B\x01\x01\x90V[\x90`\x1F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\x17W`@RV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x91\x92\x16\x91\x82_R`\x01` R`@_ s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_R` R`@_ T\x92\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x10a\x13\xBBW[PPPPV[\x82\x84\x10a\x14tW\x80\x15a\x14HWs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x15a\x14\x1CW_R`\x01` Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@_ \x91\x16_R` R`@_ \x91\x03\x90U_\x80\x80\x80a\x13\xB5V[\x7F\x94(\rb\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R_`\x04R`$_\xFD[\x7F\xE6\x02\xDF\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R_`\x04R`$_\xFD[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x91\x7F\xFB\x8FA\xB2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R\x16`\x04R`$R`DR`d_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x81\x15a\x15\x98Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x82\x15a\x0B\xABWa\x15\0a\x1A)V[a\x15\x08a\x1A)V[\x81_R_` R`@_ T\x81\x81\x10a\x15fW\x81\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x92` \x92\x85_R_\x84R\x03`@_ U\x84_R_\x82R`@_ \x81\x81T\x01\x90U`@Q\x90\x81R\xA3V[\x82\x7F\xE4P\xD3\x8C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`DR`d_\xFD[\x7F\x96\xC6\xFD\x1E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R_`\x04R`$_\xFD[\x80_R`\t` R`@_ s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF3\x16_R` R`\xFF`@_ T\x16\x15a\x15\xFCWPV[\x7F\xE2Q}?\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R3`\x04R`$R`D_\xFD[\x80_R`\t` R`@_ s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_R` R`\xFF`@_ T\x16\x15_\x14a\x16\xF9W\x80_R`\t` R`@_ s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_R` R`@_ `\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x82T\x16\x17\x90Us\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF3\x92\x16\x90\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r_\x80\xA4`\x01\x90V[PP_\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x160\x14\x80a\x17\xFFW[\x15a\x17gW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q` \x81\x01\x90\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x82R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`@\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xA0\x81Ra\x17\xF9`\xC0\x82a\x12\xD6V[Q\x90 \x90V[P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14a\x17>V[\x80_R`\t` R`@_ s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_R` R`\xFF`@_ T\x16_\x14a\x16\xF9W\x80_R`\t` R`@_ s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_R` R`@_ \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x81T\x16\x90Us\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF3\x92\x16\x90\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B_\x80\xA4`\x01\x90V[\x90\x91\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x80\x15a\x15\x98Wa\x19\x19a\x1A)V[a\x19!a\x1A)V[\x80_R_` R`@_ T\x83\x81\x10a\x19yW` \x84_\x94\x95\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x93\x85\x87R\x86\x84R\x03`@\x86 U\x80`\x02T\x03`\x02U`@Q\x90\x81R\xA3V[\x91P\x7F\xE4P\xD3\x8C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$R`DR`d_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x81\x15a\x14HWs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x82\x15a\x14\x1CW` \x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x83_R`\x01\x82R`@_ \x85_R\x82R\x80`@_ U`@Q\x90\x81R\xA3V[`\xFF`\x05T\x16a\x1A5WV[\x7F\xD9<\x06e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[`\xFF\x81\x14a\x1A\xBCW`\xFF\x81\x16\x90`\x1F\x82\x11a\x1A\x94W`@Q\x91a\x1A\x81`@\x84a\x12\xD6V[` \x80\x84R\x83\x81\x01\x91\x906\x837\x83RR\x90V[\x7F\xB3Q+\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[P`@Qa\x1A\xD6\x81a\x1A\xCF\x81`\x06a\x126V[\x03\x82a\x12\xD6V[\x90V[`\xFF\x81\x14a\x1A\xFDW`\xFF\x81\x16\x90`\x1F\x82\x11a\x1A\x94W`@Q\x91a\x1A\x81`@\x84a\x12\xD6V[P`@Qa\x1A\xD6\x81a\x1A\xCF\x81`\x07a\x126V[\x91\x90\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF]WnsW\xA4P\x1D\xDF\xE9/Fh\x1B \xA0\x84\x11a\x1B\x9FW\x91` \x93`\x80\x92`\xFF_\x95`@Q\x94\x85R\x16\x86\x84\x01R`@\x83\x01R``\x82\x01R\x82\x80R`\x01Z\xFA\x15a\x1B\x94W_Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15a\x1B\x8AW\x90_\x90_\x90V[P_\x90`\x01\x90_\x90V[`@Q=_\x82>=\x90\xFD[PPP_\x91`\x03\x91\x90V[`\x04\x81\x10\x15a\x1CUW\x80a\x1B\xBCWPPV[`\x01\x81\x03a\x1B\xECW\x7F\xF6E\xEE\xDF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04_\xFD[`\x02\x81\x03a\x1C WP\x7F\xFC\xE6\x98\xF7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$_\xFD[`\x03\x14a\x1C*WPV[\x7F\xD7\x8B\xCE\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`!`\x04R`$_\xFD", ); #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] @@ -953,20 +1176,13 @@ error AccessControlUnauthorizedAccount(address account, bytes32 neededRole); }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Custom error with signature `ERC20InsufficientAllowance(address,uint256,uint256)` and selector `0xfb8f41b2`. + /**Custom error with signature `ECDSAInvalidSignature()` and selector `0xf645eedf`. ```solidity -error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); +error ECDSAInvalidSignature(); ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct ERC20InsufficientAllowance { - #[allow(missing_docs)] - pub spender: alloy::sol_types::private::Address, - #[allow(missing_docs)] - pub allowance: alloy::sol_types::private::primitives::aliases::U256, - #[allow(missing_docs)] - pub needed: alloy::sol_types::private::primitives::aliases::U256, - } + pub struct ECDSAInvalidSignature; #[allow( non_camel_case_types, non_snake_case, @@ -977,17 +1193,9 @@ error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 nee use alloy::sol_types as alloy_sol_types; #[doc(hidden)] #[allow(dead_code)] - type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::Address, - alloy::sol_types::sol_data::Uint<256>, - alloy::sol_types::sol_data::Uint<256>, - ); + type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::Address, - alloy::sol_types::private::primitives::aliases::U256, - alloy::sol_types::private::primitives::aliases::U256, - ); + type UnderlyingRustTuple<'a> = (); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1001,32 +1209,26 @@ error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 nee } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From - for UnderlyingRustTuple<'_> { - fn from(value: ERC20InsufficientAllowance) -> Self { - (value.spender, value.allowance, value.needed) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ECDSAInvalidSignature) -> Self { + () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> - for ERC20InsufficientAllowance { + impl ::core::convert::From> for ECDSAInvalidSignature { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { - spender: tuple.0, - allowance: tuple.1, - needed: tuple.2, - } + Self } } #[automatically_derived] - impl alloy_sol_types::SolError for ERC20InsufficientAllowance { + impl alloy_sol_types::SolError for ECDSAInvalidSignature { type Parameters<'a> = UnderlyingSolTuple<'a>; type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "ERC20InsufficientAllowance(address,uint256,uint256)"; - const SELECTOR: [u8; 4] = [251u8, 143u8, 65u8, 178u8]; + const SIGNATURE: &'static str = "ECDSAInvalidSignature()"; + const SELECTOR: [u8; 4] = [246u8, 69u8, 238u8, 223u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -1035,17 +1237,7 @@ error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 nee } #[inline] fn tokenize(&self) -> Self::Token<'_> { - ( - ::tokenize( - &self.spender, - ), - as alloy_sol_types::SolType>::tokenize(&self.allowance), - as alloy_sol_types::SolType>::tokenize(&self.needed), - ) + () } #[inline] fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result { @@ -1058,19 +1250,15 @@ error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 nee }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Custom error with signature `ERC20InsufficientBalance(address,uint256,uint256)` and selector `0xe450d38c`. + /**Custom error with signature `ECDSAInvalidSignatureLength(uint256)` and selector `0xfce698f7`. ```solidity -error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); +error ECDSAInvalidSignatureLength(uint256 length); ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct ERC20InsufficientBalance { - #[allow(missing_docs)] - pub sender: alloy::sol_types::private::Address, - #[allow(missing_docs)] - pub balance: alloy::sol_types::private::primitives::aliases::U256, + pub struct ECDSAInvalidSignatureLength { #[allow(missing_docs)] - pub needed: alloy::sol_types::private::primitives::aliases::U256, + pub length: alloy::sol_types::private::primitives::aliases::U256, } #[allow( non_camel_case_types, @@ -1082,15 +1270,9 @@ error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); use alloy::sol_types as alloy_sol_types; #[doc(hidden)] #[allow(dead_code)] - type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::Address, - alloy::sol_types::sol_data::Uint<256>, - alloy::sol_types::sol_data::Uint<256>, - ); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::Address, - alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] @@ -1106,32 +1288,28 @@ error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From + impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: ERC20InsufficientBalance) -> Self { - (value.sender, value.balance, value.needed) + fn from(value: ECDSAInvalidSignatureLength) -> Self { + (value.length,) } } #[automatically_derived] #[doc(hidden)] impl ::core::convert::From> - for ERC20InsufficientBalance { + for ECDSAInvalidSignatureLength { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { - sender: tuple.0, - balance: tuple.1, - needed: tuple.2, - } + Self { length: tuple.0 } } } #[automatically_derived] - impl alloy_sol_types::SolError for ERC20InsufficientBalance { + impl alloy_sol_types::SolError for ECDSAInvalidSignatureLength { type Parameters<'a> = UnderlyingSolTuple<'a>; type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "ERC20InsufficientBalance(address,uint256,uint256)"; - const SELECTOR: [u8; 4] = [228u8, 80u8, 211u8, 140u8]; + const SIGNATURE: &'static str = "ECDSAInvalidSignatureLength(uint256)"; + const SELECTOR: [u8; 4] = [252u8, 230u8, 152u8, 247u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -1141,15 +1319,9 @@ error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - ::tokenize( - &self.sender, - ), as alloy_sol_types::SolType>::tokenize(&self.balance), - as alloy_sol_types::SolType>::tokenize(&self.needed), + > as alloy_sol_types::SolType>::tokenize(&self.length), ) } #[inline] @@ -1163,15 +1335,15 @@ error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Custom error with signature `ERC20InvalidApprover(address)` and selector `0xe602df05`. + /**Custom error with signature `ECDSAInvalidSignatureS(bytes32)` and selector `0xd78bce0c`. ```solidity -error ERC20InvalidApprover(address approver); +error ECDSAInvalidSignatureS(bytes32 s); ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct ERC20InvalidApprover { + pub struct ECDSAInvalidSignatureS { #[allow(missing_docs)] - pub approver: alloy::sol_types::private::Address, + pub s: alloy::sol_types::private::FixedBytes<32>, } #[allow( non_camel_case_types, @@ -1183,9 +1355,9 @@ error ERC20InvalidApprover(address approver); use alloy::sol_types as alloy_sol_types; #[doc(hidden)] #[allow(dead_code)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1199,26 +1371,26 @@ error ERC20InvalidApprover(address approver); } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: ERC20InvalidApprover) -> Self { - (value.approver,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ECDSAInvalidSignatureS) -> Self { + (value.s,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for ERC20InvalidApprover { + impl ::core::convert::From> for ECDSAInvalidSignatureS { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { approver: tuple.0 } + Self { s: tuple.0 } } } #[automatically_derived] - impl alloy_sol_types::SolError for ERC20InvalidApprover { + impl alloy_sol_types::SolError for ECDSAInvalidSignatureS { type Parameters<'a> = UnderlyingSolTuple<'a>; type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "ERC20InvalidApprover(address)"; - const SELECTOR: [u8; 4] = [230u8, 2u8, 223u8, 5u8]; + const SIGNATURE: &'static str = "ECDSAInvalidSignatureS(bytes32)"; + const SELECTOR: [u8; 4] = [215u8, 139u8, 206u8, 12u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -1228,9 +1400,9 @@ error ERC20InvalidApprover(address approver); #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - ::tokenize( - &self.approver, - ), + as alloy_sol_types::SolType>::tokenize(&self.s), ) } #[inline] @@ -1244,15 +1416,19 @@ error ERC20InvalidApprover(address approver); }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Custom error with signature `ERC20InvalidReceiver(address)` and selector `0xec442f05`. + /**Custom error with signature `ERC20InsufficientAllowance(address,uint256,uint256)` and selector `0xfb8f41b2`. ```solidity -error ERC20InvalidReceiver(address receiver); +error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct ERC20InvalidReceiver { + pub struct ERC20InsufficientAllowance { #[allow(missing_docs)] - pub receiver: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub allowance: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub needed: alloy::sol_types::private::primitives::aliases::U256, } #[allow( non_camel_case_types, @@ -1264,9 +1440,17 @@ error ERC20InvalidReceiver(address receiver); use alloy::sol_types as alloy_sol_types; #[doc(hidden)] #[allow(dead_code)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1280,26 +1464,32 @@ error ERC20InvalidReceiver(address receiver); } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: ERC20InvalidReceiver) -> Self { - (value.receiver,) + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: ERC20InsufficientAllowance) -> Self { + (value.spender, value.allowance, value.needed) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for ERC20InvalidReceiver { + impl ::core::convert::From> + for ERC20InsufficientAllowance { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { receiver: tuple.0 } + Self { + spender: tuple.0, + allowance: tuple.1, + needed: tuple.2, + } } } #[automatically_derived] - impl alloy_sol_types::SolError for ERC20InvalidReceiver { + impl alloy_sol_types::SolError for ERC20InsufficientAllowance { type Parameters<'a> = UnderlyingSolTuple<'a>; type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "ERC20InvalidReceiver(address)"; - const SELECTOR: [u8; 4] = [236u8, 68u8, 47u8, 5u8]; + const SIGNATURE: &'static str = "ERC20InsufficientAllowance(address,uint256,uint256)"; + const SELECTOR: [u8; 4] = [251u8, 143u8, 65u8, 178u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -1310,8 +1500,14 @@ error ERC20InvalidReceiver(address receiver); fn tokenize(&self) -> Self::Token<'_> { ( ::tokenize( - &self.receiver, + &self.spender, ), + as alloy_sol_types::SolType>::tokenize(&self.allowance), + as alloy_sol_types::SolType>::tokenize(&self.needed), ) } #[inline] @@ -1325,15 +1521,19 @@ error ERC20InvalidReceiver(address receiver); }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Custom error with signature `ERC20InvalidSender(address)` and selector `0x96c6fd1e`. + /**Custom error with signature `ERC20InsufficientBalance(address,uint256,uint256)` and selector `0xe450d38c`. ```solidity -error ERC20InvalidSender(address sender); +error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct ERC20InvalidSender { + pub struct ERC20InsufficientBalance { #[allow(missing_docs)] pub sender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub balance: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub needed: alloy::sol_types::private::primitives::aliases::U256, } #[allow( non_camel_case_types, @@ -1345,9 +1545,17 @@ error ERC20InvalidSender(address sender); use alloy::sol_types as alloy_sol_types; #[doc(hidden)] #[allow(dead_code)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1361,26 +1569,32 @@ error ERC20InvalidSender(address sender); } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: ERC20InvalidSender) -> Self { - (value.sender,) + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: ERC20InsufficientBalance) -> Self { + (value.sender, value.balance, value.needed) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for ERC20InvalidSender { + impl ::core::convert::From> + for ERC20InsufficientBalance { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { sender: tuple.0 } + Self { + sender: tuple.0, + balance: tuple.1, + needed: tuple.2, + } } } #[automatically_derived] - impl alloy_sol_types::SolError for ERC20InvalidSender { + impl alloy_sol_types::SolError for ERC20InsufficientBalance { type Parameters<'a> = UnderlyingSolTuple<'a>; type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "ERC20InvalidSender(address)"; - const SELECTOR: [u8; 4] = [150u8, 198u8, 253u8, 30u8]; + const SIGNATURE: &'static str = "ERC20InsufficientBalance(address,uint256,uint256)"; + const SELECTOR: [u8; 4] = [228u8, 80u8, 211u8, 140u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -1393,6 +1607,12 @@ error ERC20InvalidSender(address sender); ::tokenize( &self.sender, ), + as alloy_sol_types::SolType>::tokenize(&self.balance), + as alloy_sol_types::SolType>::tokenize(&self.needed), ) } #[inline] @@ -1406,15 +1626,15 @@ error ERC20InvalidSender(address sender); }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Custom error with signature `ERC20InvalidSpender(address)` and selector `0x94280d62`. + /**Custom error with signature `ERC20InvalidApprover(address)` and selector `0xe602df05`. ```solidity -error ERC20InvalidSpender(address spender); +error ERC20InvalidApprover(address approver); ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct ERC20InvalidSpender { + pub struct ERC20InvalidApprover { #[allow(missing_docs)] - pub spender: alloy::sol_types::private::Address, + pub approver: alloy::sol_types::private::Address, } #[allow( non_camel_case_types, @@ -1442,26 +1662,26 @@ error ERC20InvalidSpender(address spender); } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: ERC20InvalidSpender) -> Self { - (value.spender,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ERC20InvalidApprover) -> Self { + (value.approver,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for ERC20InvalidSpender { + impl ::core::convert::From> for ERC20InvalidApprover { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { spender: tuple.0 } + Self { approver: tuple.0 } } } #[automatically_derived] - impl alloy_sol_types::SolError for ERC20InvalidSpender { + impl alloy_sol_types::SolError for ERC20InvalidApprover { type Parameters<'a> = UnderlyingSolTuple<'a>; type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "ERC20InvalidSpender(address)"; - const SELECTOR: [u8; 4] = [148u8, 40u8, 13u8, 98u8]; + const SIGNATURE: &'static str = "ERC20InvalidApprover(address)"; + const SELECTOR: [u8; 4] = [230u8, 2u8, 223u8, 5u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -1472,7 +1692,7 @@ error ERC20InvalidSpender(address spender); fn tokenize(&self) -> Self::Token<'_> { ( ::tokenize( - &self.spender, + &self.approver, ), ) } @@ -1487,13 +1707,16 @@ error ERC20InvalidSpender(address spender); }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Custom error with signature `EnforcedPause()` and selector `0xd93c0665`. + /**Custom error with signature `ERC20InvalidReceiver(address)` and selector `0xec442f05`. ```solidity -error EnforcedPause(); +error ERC20InvalidReceiver(address receiver); ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct EnforcedPause; + pub struct ERC20InvalidReceiver { + #[allow(missing_docs)] + pub receiver: alloy::sol_types::private::Address, + } #[allow( non_camel_case_types, non_snake_case, @@ -1504,9 +1727,9 @@ error EnforcedPause(); use alloy::sol_types as alloy_sol_types; #[doc(hidden)] #[allow(dead_code)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1520,26 +1743,26 @@ error EnforcedPause(); } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: EnforcedPause) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ERC20InvalidReceiver) -> Self { + (value.receiver,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for EnforcedPause { + impl ::core::convert::From> for ERC20InvalidReceiver { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self + Self { receiver: tuple.0 } } } #[automatically_derived] - impl alloy_sol_types::SolError for EnforcedPause { + impl alloy_sol_types::SolError for ERC20InvalidReceiver { type Parameters<'a> = UnderlyingSolTuple<'a>; type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "EnforcedPause()"; - const SELECTOR: [u8; 4] = [217u8, 60u8, 6u8, 101u8]; + const SIGNATURE: &'static str = "ERC20InvalidReceiver(address)"; + const SELECTOR: [u8; 4] = [236u8, 68u8, 47u8, 5u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -1548,7 +1771,11 @@ error EnforcedPause(); } #[inline] fn tokenize(&self) -> Self::Token<'_> { - () + ( + ::tokenize( + &self.receiver, + ), + ) } #[inline] fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result { @@ -1561,13 +1788,673 @@ error EnforcedPause(); }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Custom error with signature `ExpectedPause()` and selector `0x8dfc202b`. + /**Custom error with signature `ERC20InvalidSender(address)` and selector `0x96c6fd1e`. ```solidity -error ExpectedPause(); +error ERC20InvalidSender(address sender); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ERC20InvalidSender { + #[allow(missing_docs)] + pub sender: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ERC20InvalidSender) -> Self { + (value.sender,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ERC20InvalidSender { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { sender: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ERC20InvalidSender { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ERC20InvalidSender(address)"; + const SELECTOR: [u8; 4] = [150u8, 198u8, 253u8, 30u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.sender, + ), + ) + } + #[inline] + fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Self::new) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Custom error with signature `ERC20InvalidSpender(address)` and selector `0x94280d62`. +```solidity +error ERC20InvalidSpender(address spender); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ERC20InvalidSpender { + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ERC20InvalidSpender) -> Self { + (value.spender,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ERC20InvalidSpender { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { spender: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ERC20InvalidSpender { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ERC20InvalidSpender(address)"; + const SELECTOR: [u8; 4] = [148u8, 40u8, 13u8, 98u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + ) + } + #[inline] + fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Self::new) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Custom error with signature `ERC2612ExpiredSignature(uint256)` and selector `0x62791302`. +```solidity +error ERC2612ExpiredSignature(uint256 deadline); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ERC2612ExpiredSignature { + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ERC2612ExpiredSignature) -> Self { + (value.deadline,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ERC2612ExpiredSignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { deadline: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ERC2612ExpiredSignature { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ERC2612ExpiredSignature(uint256)"; + const SELECTOR: [u8; 4] = [98u8, 121u8, 19u8, 2u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ) + } + #[inline] + fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Self::new) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Custom error with signature `ERC2612InvalidSigner(address,address)` and selector `0x4b800e46`. +```solidity +error ERC2612InvalidSigner(address signer, address owner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ERC2612InvalidSigner { + #[allow(missing_docs)] + pub signer: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ERC2612InvalidSigner) -> Self { + (value.signer, value.owner) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ERC2612InvalidSigner { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + signer: tuple.0, + owner: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ERC2612InvalidSigner { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ERC2612InvalidSigner(address,address)"; + const SELECTOR: [u8; 4] = [75u8, 128u8, 14u8, 70u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.signer, + ), + ::tokenize( + &self.owner, + ), + ) + } + #[inline] + fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Self::new) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Custom error with signature `EnforcedPause()` and selector `0xd93c0665`. +```solidity +error EnforcedPause(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct EnforcedPause; + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: EnforcedPause) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for EnforcedPause { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for EnforcedPause { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "EnforcedPause()"; + const SELECTOR: [u8; 4] = [217u8, 60u8, 6u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Self::new) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Custom error with signature `ExpectedPause()` and selector `0x8dfc202b`. +```solidity +error ExpectedPause(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ExpectedPause; + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ExpectedPause) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ExpectedPause { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ExpectedPause { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ExpectedPause()"; + const SELECTOR: [u8; 4] = [141u8, 252u8, 32u8, 43u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Self::new) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Custom error with signature `InvalidAccountNonce(address,uint256)` and selector `0x752d88c0`. +```solidity +error InvalidAccountNonce(address account, uint256 currentNonce); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidAccountNonce { + #[allow(missing_docs)] + pub account: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub currentNonce: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidAccountNonce) -> Self { + (value.account, value.currentNonce) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidAccountNonce { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + account: tuple.0, + currentNonce: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidAccountNonce { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidAccountNonce(address,uint256)"; + const SELECTOR: [u8; 4] = [117u8, 45u8, 136u8, 192u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.account, + ), + as alloy_sol_types::SolType>::tokenize(&self.currentNonce), + ) + } + #[inline] + fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Self::new) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Custom error with signature `InvalidShortString()` and selector `0xb3512b0c`. +```solidity +error InvalidShortString(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidShortString; + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidShortString) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidShortString { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidShortString { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidShortString()"; + const SELECTOR: [u8; 4] = [179u8, 81u8, 43u8, 12u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Self::new) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Custom error with signature `StringTooLong(string)` and selector `0x305a27a9`. +```solidity +error StringTooLong(string str); ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct ExpectedPause; + pub struct StringTooLong { + #[allow(missing_docs)] + pub str: alloy::sol_types::private::String, + } #[allow( non_camel_case_types, non_snake_case, @@ -1578,9 +2465,9 @@ error ExpectedPause(); use alloy::sol_types as alloy_sol_types; #[doc(hidden)] #[allow(dead_code)] - type UnderlyingSolTuple<'a> = (); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1594,26 +2481,26 @@ error ExpectedPause(); } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: ExpectedPause) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StringTooLong) -> Self { + (value.str,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for ExpectedPause { + impl ::core::convert::From> for StringTooLong { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self + Self { str: tuple.0 } } } #[automatically_derived] - impl alloy_sol_types::SolError for ExpectedPause { + impl alloy_sol_types::SolError for StringTooLong { type Parameters<'a> = UnderlyingSolTuple<'a>; type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "ExpectedPause()"; - const SELECTOR: [u8; 4] = [141u8, 252u8, 32u8, 43u8]; + const SIGNATURE: &'static str = "StringTooLong(string)"; + const SELECTOR: [u8; 4] = [48u8, 90u8, 39u8, 169u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -1622,7 +2509,11 @@ error ExpectedPause(); } #[inline] fn tokenize(&self) -> Self::Token<'_> { - () + ( + ::tokenize( + &self.str, + ), + ) } #[inline] fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result { @@ -1758,6 +2649,104 @@ event Approval(address indexed owner, address indexed spender, uint256 value); }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Event with signature `EIP712DomainChanged()` and selector `0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31`. +```solidity +event EIP712DomainChanged(); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct EIP712DomainChanged; + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for EIP712DomainChanged { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "EIP712DomainChanged()"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 10u8, 99u8, 135u8, 201u8, 234u8, 54u8, 40u8, 184u8, 138u8, 99u8, 59u8, + 180u8, 243u8, 177u8, 81u8, 119u8, 15u8, 112u8, 8u8, 81u8, 23u8, 161u8, + 95u8, 155u8, 243u8, 120u8, 124u8, 218u8, 83u8, 241u8, 61u8, 49u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self {} + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for EIP712DomainChanged { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&EIP712DomainChanged> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &EIP712DomainChanged) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] /**Event with signature `Paused(address)` and selector `0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258`. ```solidity event Paused(address account); @@ -2472,37 +3461,165 @@ event Unpaused(address account); alloy_sol_types::SolEvent::encode_log_data(this) } } - }; - /**Constructor`. -```solidity -constructor(string name_, string symbol_, uint8 decimals_); -```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] - #[derive(Clone)] - pub struct constructorCall { - #[allow(missing_docs)] - pub name_: alloy::sol_types::private::String, - #[allow(missing_docs)] - pub symbol_: alloy::sol_types::private::String, - #[allow(missing_docs)] - pub decimals_: u8, - } - const _: () = { - use alloy::sol_types as alloy_sol_types; + }; + /**Constructor`. +```solidity +constructor(string name_, string symbol_, uint8 decimals_); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + #[allow(missing_docs)] + pub name_: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub symbol_: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub decimals_: u8, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<8>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::String, + alloy::sol_types::private::String, + u8, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value.name_, value.symbol_, value.decimals_) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + name_: tuple.0, + symbol_: tuple.1, + decimals_: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.name_, + ), + ::tokenize( + &self.symbol_, + ), + as alloy_sol_types::SolType>::tokenize(&self.decimals_), + ) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`. +```solidity +function DEFAULT_ADMIN_ROLE() external view returns (bytes32); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct DEFAULT_ADMIN_ROLECall; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct DEFAULT_ADMIN_ROLEReturn { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DEFAULT_ADMIN_ROLECall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DEFAULT_ADMIN_ROLECall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self + } + } + } { #[doc(hidden)] #[allow(dead_code)] - type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::String, - alloy::sol_types::sol_data::String, - alloy::sol_types::sol_data::Uint<8>, - ); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::String, - alloy::sol_types::private::String, - u8, - ); + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -2516,33 +3633,34 @@ constructor(string name_, string symbol_, uint8 decimals_); } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: constructorCall) -> Self { - (value.name_, value.symbol_, value.decimals_) + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self { + (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for constructorCall { + impl ::core::convert::From> + for DEFAULT_ADMIN_ROLEReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { - name_: tuple.0, - symbol_: tuple.1, - decimals_: tuple.2, - } + Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolConstructor for constructorCall { - type Parameters<'a> = ( - alloy::sol_types::sol_data::String, - alloy::sol_types::sol_data::String, - alloy::sol_types::sol_data::Uint<8>, - ); + impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall { + type Parameters<'a> = (); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = alloy::sol_types::private::FixedBytes<32>; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()"; + const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -2551,35 +3669,55 @@ constructor(string name_, string symbol_, uint8 decimals_); } #[inline] fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { ( - ::tokenize( - &self.name_, - ), - ::tokenize( - &self.symbol_, - ), - as alloy_sol_types::SolType>::tokenize(&self.decimals_), + as alloy_sol_types::SolType>::tokenize(ret), ) } + #[inline] + fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data) + .map(|r| { + let r: DEFAULT_ADMIN_ROLEReturn = r.into(); + r._0 + }) + } + #[inline] + fn abi_decode_returns_validate( + data: &[u8], + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(|r| { + let r: DEFAULT_ADMIN_ROLEReturn = r.into(); + r._0 + }) + } } }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`. + /**Function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515`. ```solidity -function DEFAULT_ADMIN_ROLE() external view returns (bytes32); +function DOMAIN_SEPARATOR() external view returns (bytes32); ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct DEFAULT_ADMIN_ROLECall; + pub struct DOMAIN_SEPARATORCall; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function. + ///Container type for the return parameters of the [`DOMAIN_SEPARATOR()`](DOMAIN_SEPARATORCall) function. #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct DEFAULT_ADMIN_ROLEReturn { + pub struct DOMAIN_SEPARATORReturn { #[allow(missing_docs)] pub _0: alloy::sol_types::private::FixedBytes<32>, } @@ -2610,16 +3748,16 @@ function DEFAULT_ADMIN_ROLE() external view returns (bytes32); } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From + impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: DEFAULT_ADMIN_ROLECall) -> Self { + fn from(value: DOMAIN_SEPARATORCall) -> Self { () } } #[automatically_derived] #[doc(hidden)] impl ::core::convert::From> - for DEFAULT_ADMIN_ROLECall { + for DOMAIN_SEPARATORCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self } @@ -2644,23 +3782,23 @@ function DEFAULT_ADMIN_ROLE() external view returns (bytes32); } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From + impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self { + fn from(value: DOMAIN_SEPARATORReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] impl ::core::convert::From> - for DEFAULT_ADMIN_ROLEReturn { + for DOMAIN_SEPARATORReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall { + impl alloy_sol_types::SolCall for DOMAIN_SEPARATORCall { type Parameters<'a> = (); type Token<'a> = = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()"; - const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8]; + const SIGNATURE: &'static str = "DOMAIN_SEPARATOR()"; + const SELECTOR: [u8; 4] = [54u8, 68u8, 229u8, 21u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -2696,7 +3834,7 @@ function DEFAULT_ADMIN_ROLE() external view returns (bytes32); '_, > as alloy_sol_types::SolType>::abi_decode_sequence(data) .map(|r| { - let r: DEFAULT_ADMIN_ROLEReturn = r.into(); + let r: DOMAIN_SEPARATORReturn = r.into(); r._0 }) } @@ -2708,7 +3846,7 @@ function DEFAULT_ADMIN_ROLE() external view returns (bytes32); '_, > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) .map(|r| { - let r: DEFAULT_ADMIN_ROLEReturn = r.into(); + let r: DOMAIN_SEPARATORReturn = r.into(); r._0 }) } @@ -3764,8 +4902,150 @@ function burnFrom(address account, uint256 value) external; type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "burnFrom(address,uint256)"; - const SELECTOR: [u8; 4] = [121u8, 204u8, 103u8, 144u8]; + const SIGNATURE: &'static str = "burnFrom(address,uint256)"; + const SELECTOR: [u8; 4] = [121u8, 204u8, 103u8, 144u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.account, + ), + as alloy_sol_types::SolType>::tokenize(&self.value), + ) + } + #[inline] + fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { + burnFromReturn::_tokenize(ret) + } + #[inline] + fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data) + .map(Into::into) + } + #[inline] + fn abi_decode_returns_validate( + data: &[u8], + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Into::into) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Function with signature `decimals()` and selector `0x313ce567`. +```solidity +function decimals() external view returns (uint8); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decimalsCall; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct decimalsReturn { + #[allow(missing_docs)] + pub _0: u8, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self + } + } + } + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for decimalsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = u8; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "decimals()"; + const SELECTOR: [u8; 4] = [49u8, 60u8, 229u8, 103u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -3774,25 +5054,25 @@ function burnFrom(address account, uint256 value) external; } #[inline] fn tokenize(&self) -> Self::Token<'_> { - ( - ::tokenize( - &self.account, - ), - as alloy_sol_types::SolType>::tokenize(&self.value), - ) + () } #[inline] fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { - burnFromReturn::_tokenize(ret) + ( + as alloy_sol_types::SolType>::tokenize(ret), + ) } #[inline] fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { as alloy_sol_types::SolType>::abi_decode_sequence(data) - .map(Into::into) + .map(|r| { + let r: decimalsReturn = r.into(); + r._0 + }) } #[inline] fn abi_decode_returns_validate( @@ -3801,27 +5081,44 @@ function burnFrom(address account, uint256 value) external; as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) - .map(Into::into) + .map(|r| { + let r: decimalsReturn = r.into(); + r._0 + }) } } }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - /**Function with signature `decimals()` and selector `0x313ce567`. + /**Function with signature `eip712Domain()` and selector `0x84b0196e`. ```solidity -function decimals() external view returns (uint8); +function eip712Domain() external view returns (bytes1 fields, string memory name, string memory version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] memory extensions); ```*/ #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct decimalsCall; + pub struct eip712DomainCall; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] - ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. + ///Container type for the return parameters of the [`eip712Domain()`](eip712DomainCall) function. #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct decimalsReturn { + pub struct eip712DomainReturn { #[allow(missing_docs)] - pub _0: u8, + pub fields: alloy::sol_types::private::FixedBytes<1>, + #[allow(missing_docs)] + pub name: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub version: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub chainId: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub verifyingContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub salt: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub extensions: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, } #[allow( non_camel_case_types, @@ -3850,14 +5147,14 @@ function decimals() external view returns (uint8); } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: decimalsCall) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eip712DomainCall) -> Self { () } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for decimalsCall { + impl ::core::convert::From> for eip712DomainCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self } @@ -3866,9 +5163,27 @@ function decimals() external view returns (uint8); { #[doc(hidden)] #[allow(dead_code)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<1>, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Array>, + ); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (u8,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<1>, + alloy::sol_types::private::String, + alloy::sol_types::private::String, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -3882,32 +5197,85 @@ function decimals() external view returns (uint8); } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: decimalsReturn) -> Self { - (value._0,) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eip712DomainReturn) -> Self { + ( + value.fields, + value.name, + value.version, + value.chainId, + value.verifyingContract, + value.salt, + value.extensions, + ) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for decimalsReturn { + impl ::core::convert::From> for eip712DomainReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { _0: tuple.0 } + Self { + fields: tuple.0, + name: tuple.1, + version: tuple.2, + chainId: tuple.3, + verifyingContract: tuple.4, + salt: tuple.5, + extensions: tuple.6, + } } } } + impl eip712DomainReturn { + fn _tokenize( + &self, + ) -> ::ReturnToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.fields), + ::tokenize( + &self.name, + ), + ::tokenize( + &self.version, + ), + as alloy_sol_types::SolType>::tokenize(&self.chainId), + ::tokenize( + &self.verifyingContract, + ), + as alloy_sol_types::SolType>::tokenize(&self.salt), + , + > as alloy_sol_types::SolType>::tokenize(&self.extensions), + ) + } + } #[automatically_derived] - impl alloy_sol_types::SolCall for decimalsCall { + impl alloy_sol_types::SolCall for eip712DomainCall { type Parameters<'a> = (); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = u8; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type Return = eip712DomainReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<1>, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Array>, + ); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "decimals()"; - const SELECTOR: [u8; 4] = [49u8, 60u8, 229u8, 103u8]; + const SIGNATURE: &'static str = "eip712Domain()"; + const SELECTOR: [u8; 4] = [132u8, 176u8, 25u8, 110u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -3920,21 +5288,14 @@ function decimals() external view returns (uint8); } #[inline] fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { - ( - as alloy_sol_types::SolType>::tokenize(ret), - ) + eip712DomainReturn::_tokenize(ret) } #[inline] fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { as alloy_sol_types::SolType>::abi_decode_sequence(data) - .map(|r| { - let r: decimalsReturn = r.into(); - r._0 - }) + .map(Into::into) } #[inline] fn abi_decode_returns_validate( @@ -3943,10 +5304,7 @@ function decimals() external view returns (uint8); as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) - .map(|r| { - let r: decimalsReturn = r.into(); - r._0 - }) + .map(Into::into) } } }; @@ -4624,7 +5982,155 @@ function name() external view returns (string memory); #[allow(dead_code)] type UnderlyingSolTuple<'a> = (); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (); + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self + } + } + } + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nameCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = alloy::sol_types::private::String; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "name()"; + const SELECTOR: [u8; 4] = [6u8, 253u8, 222u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { + ( + ::tokenize( + ret, + ), + ) + } + #[inline] + fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data) + .map(|r| { + let r: nameReturn = r.into(); + r._0 + }) + } + #[inline] + fn abi_decode_returns_validate( + data: &[u8], + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(|r| { + let r: nameReturn = r.into(); + r._0 + }) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Function with signature `nonces(address)` and selector `0x7ecebe00`. +```solidity +function nonces(address owner) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct noncesCall { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + } + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] + ///Container type for the return parameters of the [`nonces(address)`](noncesCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct noncesReturn { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -4638,25 +6144,27 @@ function name() external view returns (string memory); } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: nameCall) -> Self { - () + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: noncesCall) -> Self { + (value.owner,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for nameCall { + impl ::core::convert::From> for noncesCall { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self + Self { owner: tuple.0 } } } } { #[doc(hidden)] #[allow(dead_code)] - type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -4670,32 +6178,32 @@ function name() external view returns (string memory); } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: nameReturn) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: noncesReturn) -> Self { (value._0,) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for nameReturn { + impl ::core::convert::From> for noncesReturn { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { _0: tuple.0 } } } } #[automatically_derived] - impl alloy_sol_types::SolCall for nameCall { - type Parameters<'a> = (); + impl alloy_sol_types::SolCall for noncesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - type Return = alloy::sol_types::private::String; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type Return = alloy::sol_types::private::primitives::aliases::U256; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SIGNATURE: &'static str = "name()"; - const SELECTOR: [u8; 4] = [6u8, 253u8, 222u8, 3u8]; + const SIGNATURE: &'static str = "nonces(address)"; + const SELECTOR: [u8; 4] = [126u8, 206u8, 190u8, 0u8]; #[inline] fn new<'a>( tuple: as alloy_sol_types::SolType>::RustType, @@ -4704,14 +6212,18 @@ function name() external view returns (string memory); } #[inline] fn tokenize(&self) -> Self::Token<'_> { - () + ( + ::tokenize( + &self.owner, + ), + ) } #[inline] fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { ( - ::tokenize( - ret, - ), + as alloy_sol_types::SolType>::tokenize(ret), ) } #[inline] @@ -4720,7 +6232,7 @@ function name() external view returns (string memory); '_, > as alloy_sol_types::SolType>::abi_decode_sequence(data) .map(|r| { - let r: nameReturn = r.into(); + let r: noncesReturn = r.into(); r._0 }) } @@ -4732,7 +6244,7 @@ function name() external view returns (string memory); '_, > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) .map(|r| { - let r: nameReturn = r.into(); + let r: noncesReturn = r.into(); r._0 }) } @@ -5022,6 +6534,220 @@ function paused() external view returns (bool); }; #[derive(serde::Serialize, serde::Deserialize)] #[derive(Default, Debug, PartialEq, Eq, Hash)] + /**Function with signature `permit(address,address,uint256,uint256,uint8,bytes32,bytes32)` and selector `0xd505accf`. +```solidity +function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct permitCall { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub value: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub v: u8, + #[allow(missing_docs)] + pub r: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub s: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`permit(address,address,uint256,uint256,uint8,bytes32,bytes32)`](permitCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct permitReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + u8, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permitCall) -> Self { + ( + value.owner, + value.spender, + value.value, + value.deadline, + value.v, + value.r, + value.s, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permitCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + spender: tuple.1, + value: tuple.2, + deadline: tuple.3, + v: tuple.4, + r: tuple.5, + s: tuple.6, + } + } + } + } + { + #[doc(hidden)] + #[allow(dead_code)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permitReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permitReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + impl permitReturn { + fn _tokenize( + &self, + ) -> ::ReturnToken<'_> { + () + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permitCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [213u8, 5u8, 172u8, 207u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.value), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + as alloy_sol_types::SolType>::tokenize(&self.v), + as alloy_sol_types::SolType>::tokenize(&self.r), + as alloy_sol_types::SolType>::tokenize(&self.s), + ) + } + #[inline] + fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> { + permitReturn::_tokenize(ret) + } + #[inline] + fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data) + .map(Into::into) + } + #[inline] + fn abi_decode_returns_validate( + data: &[u8], + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence_validate(data) + .map(Into::into) + } + } + }; + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Default, Debug, PartialEq, Eq, Hash)] /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`. ```solidity function renounceRole(bytes32 role, address callerConfirmation) external; @@ -6282,6 +8008,8 @@ function unpause() external; #[allow(missing_docs)] DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall), #[allow(missing_docs)] + DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + #[allow(missing_docs)] MINTER_ROLE(MINTER_ROLECall), #[allow(missing_docs)] PAUSER_ROLE(PAUSER_ROLECall), @@ -6298,6 +8026,8 @@ function unpause() external; #[allow(missing_docs)] decimals(decimalsCall), #[allow(missing_docs)] + eip712Domain(eip712DomainCall), + #[allow(missing_docs)] getRoleAdmin(getRoleAdminCall), #[allow(missing_docs)] grantRole(grantRoleCall), @@ -6308,10 +8038,14 @@ function unpause() external; #[allow(missing_docs)] name(nameCall), #[allow(missing_docs)] + nonces(noncesCall), + #[allow(missing_docs)] pause(pauseCall), #[allow(missing_docs)] paused(pausedCall), #[allow(missing_docs)] + permit(permitCall), + #[allow(missing_docs)] renounceRole(renounceRoleCall), #[allow(missing_docs)] revokeRole(revokeRoleCall), @@ -6344,6 +8078,7 @@ function unpause() external; [36u8, 138u8, 156u8, 163u8], [47u8, 47u8, 241u8, 93u8], [49u8, 60u8, 229u8, 103u8], + [54u8, 68u8, 229u8, 21u8], [54u8, 86u8, 138u8, 190u8], [63u8, 75u8, 168u8, 58u8], [64u8, 193u8, 15u8, 25u8], @@ -6351,11 +8086,14 @@ function unpause() external; [92u8, 151u8, 90u8, 187u8], [112u8, 160u8, 130u8, 49u8], [121u8, 204u8, 103u8, 144u8], + [126u8, 206u8, 190u8, 0u8], [132u8, 86u8, 203u8, 89u8], + [132u8, 176u8, 25u8, 110u8], [145u8, 209u8, 72u8, 84u8], [149u8, 216u8, 155u8, 65u8], [162u8, 23u8, 253u8, 223u8], [169u8, 5u8, 156u8, 187u8], + [213u8, 5u8, 172u8, 207u8], [213u8, 57u8, 19u8, 147u8], [213u8, 71u8, 116u8, 31u8], [221u8, 98u8, 237u8, 62u8], @@ -6371,6 +8109,7 @@ function unpause() external; ::core::stringify!(getRoleAdmin), ::core::stringify!(grantRole), ::core::stringify!(decimals), + ::core::stringify!(DOMAIN_SEPARATOR), ::core::stringify!(renounceRole), ::core::stringify!(unpause), ::core::stringify!(mint), @@ -6378,11 +8117,14 @@ function unpause() external; ::core::stringify!(paused), ::core::stringify!(balanceOf), ::core::stringify!(burnFrom), + ::core::stringify!(nonces), ::core::stringify!(pause), + ::core::stringify!(eip712Domain), ::core::stringify!(hasRole), ::core::stringify!(symbol), ::core::stringify!(DEFAULT_ADMIN_ROLE), ::core::stringify!(transfer), + ::core::stringify!(permit), ::core::stringify!(MINTER_ROLE), ::core::stringify!(revokeRole), ::core::stringify!(allowance), @@ -6398,6 +8140,7 @@ function unpause() external; ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, @@ -6405,11 +8148,14 @@ function unpause() external; ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, @@ -6440,13 +8186,16 @@ function unpause() external; impl alloy_sol_types::SolInterface for WrappedTokenCalls { const NAME: &'static str = "WrappedTokenCalls"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 24usize; + const COUNT: usize = 28usize; #[inline] fn selector(&self) -> [u8; 4] { match self { Self::DEFAULT_ADMIN_ROLE(_) => { ::SELECTOR } + Self::DOMAIN_SEPARATOR(_) => { + ::SELECTOR + } Self::MINTER_ROLE(_) => { ::SELECTOR } @@ -6463,6 +8212,9 @@ function unpause() external; Self::burn(_) => ::SELECTOR, Self::burnFrom(_) => ::SELECTOR, Self::decimals(_) => ::SELECTOR, + Self::eip712Domain(_) => { + ::SELECTOR + } Self::getRoleAdmin(_) => { ::SELECTOR } @@ -6472,8 +8224,10 @@ function unpause() external; Self::hasRole(_) => ::SELECTOR, Self::mint(_) => ::SELECTOR, Self::name(_) => ::SELECTOR, + Self::nonces(_) => ::SELECTOR, Self::pause(_) => ::SELECTOR, Self::paused(_) => ::SELECTOR, + Self::permit(_) => ::SELECTOR, Self::renounceRole(_) => { ::SELECTOR } @@ -6589,6 +8343,17 @@ function unpause() external; } decimals }, + { + fn DOMAIN_SEPARATOR( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(WrappedTokenCalls::DOMAIN_SEPARATOR) + } + DOMAIN_SEPARATOR + }, { fn renounceRole( data: &[u8], @@ -6650,6 +8415,15 @@ function unpause() external; } burnFrom }, + { + fn nonces( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data) + .map(WrappedTokenCalls::nonces) + } + nonces + }, { fn pause(data: &[u8]) -> alloy_sol_types::Result { ::abi_decode_raw(data) @@ -6657,6 +8431,17 @@ function unpause() external; } pause }, + { + fn eip712Domain( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(WrappedTokenCalls::eip712Domain) + } + eip712Domain + }, { fn hasRole( data: &[u8], @@ -6695,6 +8480,15 @@ function unpause() external; } transfer }, + { + fn permit( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw(data) + .map(WrappedTokenCalls::permit) + } + permit + }, { fn MINTER_ROLE( data: &[u8], @@ -6830,18 +8624,29 @@ function unpause() external; ) .map(WrappedTokenCalls::grantRole) } - grantRole + grantRole + }, + { + fn decimals( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(WrappedTokenCalls::decimals) + } + decimals }, { - fn decimals( + fn DOMAIN_SEPARATOR( data: &[u8], ) -> alloy_sol_types::Result { - ::abi_decode_raw_validate( + ::abi_decode_raw_validate( data, ) - .map(WrappedTokenCalls::decimals) + .map(WrappedTokenCalls::DOMAIN_SEPARATOR) } - decimals + DOMAIN_SEPARATOR }, { fn renounceRole( @@ -6916,6 +8721,17 @@ function unpause() external; } burnFrom }, + { + fn nonces( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(WrappedTokenCalls::nonces) + } + nonces + }, { fn pause(data: &[u8]) -> alloy_sol_types::Result { ::abi_decode_raw_validate( @@ -6925,6 +8741,17 @@ function unpause() external; } pause }, + { + fn eip712Domain( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(WrappedTokenCalls::eip712Domain) + } + eip712Domain + }, { fn hasRole( data: &[u8], @@ -6969,6 +8796,17 @@ function unpause() external; } transfer }, + { + fn permit( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(WrappedTokenCalls::permit) + } + permit + }, { fn MINTER_ROLE( data: &[u8], @@ -7032,6 +8870,11 @@ function unpause() external; inner, ) } + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::MINTER_ROLE(inner) => { ::abi_encoded_size( inner, @@ -7060,6 +8903,11 @@ function unpause() external; Self::decimals(inner) => { ::abi_encoded_size(inner) } + Self::eip712Domain(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::getRoleAdmin(inner) => { ::abi_encoded_size( inner, @@ -7077,12 +8925,18 @@ function unpause() external; Self::name(inner) => { ::abi_encoded_size(inner) } + Self::nonces(inner) => { + ::abi_encoded_size(inner) + } Self::pause(inner) => { ::abi_encoded_size(inner) } Self::paused(inner) => { ::abi_encoded_size(inner) } + Self::permit(inner) => { + ::abi_encoded_size(inner) + } Self::renounceRole(inner) => { ::abi_encoded_size( inner, @@ -7126,6 +8980,12 @@ function unpause() external; out, ) } + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::MINTER_ROLE(inner) => { ::abi_encode_raw( inner, @@ -7168,6 +9028,12 @@ function unpause() external; out, ) } + Self::eip712Domain(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::getRoleAdmin(inner) => { ::abi_encode_raw( inner, @@ -7189,12 +9055,18 @@ function unpause() external; Self::name(inner) => { ::abi_encode_raw(inner, out) } + Self::nonces(inner) => { + ::abi_encode_raw(inner, out) + } Self::pause(inner) => { ::abi_encode_raw(inner, out) } Self::paused(inner) => { ::abi_encode_raw(inner, out) } + Self::permit(inner) => { + ::abi_encode_raw(inner, out) + } Self::renounceRole(inner) => { ::abi_encode_raw( inner, @@ -7250,6 +9122,12 @@ function unpause() external; #[allow(missing_docs)] AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount), #[allow(missing_docs)] + ECDSAInvalidSignature(ECDSAInvalidSignature), + #[allow(missing_docs)] + ECDSAInvalidSignatureLength(ECDSAInvalidSignatureLength), + #[allow(missing_docs)] + ECDSAInvalidSignatureS(ECDSAInvalidSignatureS), + #[allow(missing_docs)] ERC20InsufficientAllowance(ERC20InsufficientAllowance), #[allow(missing_docs)] ERC20InsufficientBalance(ERC20InsufficientBalance), @@ -7262,9 +9140,19 @@ function unpause() external; #[allow(missing_docs)] ERC20InvalidSpender(ERC20InvalidSpender), #[allow(missing_docs)] + ERC2612ExpiredSignature(ERC2612ExpiredSignature), + #[allow(missing_docs)] + ERC2612InvalidSigner(ERC2612InvalidSigner), + #[allow(missing_docs)] EnforcedPause(EnforcedPause), #[allow(missing_docs)] ExpectedPause(ExpectedPause), + #[allow(missing_docs)] + InvalidAccountNonce(InvalidAccountNonce), + #[allow(missing_docs)] + InvalidShortString(InvalidShortString), + #[allow(missing_docs)] + StringTooLong(StringTooLong), } impl WrappedTokenErrors { /// All the selectors of this enum. @@ -7274,42 +9162,66 @@ function unpause() external; /// /// Prefer using `SolInterface` methods instead. pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [48u8, 90u8, 39u8, 169u8], + [75u8, 128u8, 14u8, 70u8], + [98u8, 121u8, 19u8, 2u8], [102u8, 151u8, 178u8, 50u8], + [117u8, 45u8, 136u8, 192u8], [141u8, 252u8, 32u8, 43u8], [148u8, 40u8, 13u8, 98u8], [150u8, 198u8, 253u8, 30u8], + [179u8, 81u8, 43u8, 12u8], + [215u8, 139u8, 206u8, 12u8], [217u8, 60u8, 6u8, 101u8], [226u8, 81u8, 125u8, 63u8], [228u8, 80u8, 211u8, 140u8], [230u8, 2u8, 223u8, 5u8], [236u8, 68u8, 47u8, 5u8], + [246u8, 69u8, 238u8, 223u8], [251u8, 143u8, 65u8, 178u8], + [252u8, 230u8, 152u8, 247u8], ]; /// The names of the variants in the same order as `SELECTORS`. pub const VARIANT_NAMES: &'static [&'static str] = &[ + ::core::stringify!(StringTooLong), + ::core::stringify!(ERC2612InvalidSigner), + ::core::stringify!(ERC2612ExpiredSignature), ::core::stringify!(AccessControlBadConfirmation), + ::core::stringify!(InvalidAccountNonce), ::core::stringify!(ExpectedPause), ::core::stringify!(ERC20InvalidSpender), ::core::stringify!(ERC20InvalidSender), + ::core::stringify!(InvalidShortString), + ::core::stringify!(ECDSAInvalidSignatureS), ::core::stringify!(EnforcedPause), ::core::stringify!(AccessControlUnauthorizedAccount), ::core::stringify!(ERC20InsufficientBalance), ::core::stringify!(ERC20InvalidApprover), ::core::stringify!(ERC20InvalidReceiver), + ::core::stringify!(ECDSAInvalidSignature), ::core::stringify!(ERC20InsufficientAllowance), + ::core::stringify!(ECDSAInvalidSignatureLength), ]; /// The signatures in the same order as `SELECTORS`. pub const SIGNATURES: &'static [&'static str] = &[ + ::SIGNATURE, + ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ::SIGNATURE, + ::SIGNATURE, ]; /// Returns the signature for the given selector, if known. #[inline] @@ -7336,7 +9248,7 @@ function unpause() external; impl alloy_sol_types::SolInterface for WrappedTokenErrors { const NAME: &'static str = "WrappedTokenErrors"; const MIN_DATA_LENGTH: usize = 0usize; - const COUNT: usize = 10usize; + const COUNT: usize = 18usize; #[inline] fn selector(&self) -> [u8; 4] { match self { @@ -7346,6 +9258,15 @@ function unpause() external; Self::AccessControlUnauthorizedAccount(_) => { ::SELECTOR } + Self::ECDSAInvalidSignature(_) => { + ::SELECTOR + } + Self::ECDSAInvalidSignatureLength(_) => { + ::SELECTOR + } + Self::ECDSAInvalidSignatureS(_) => { + ::SELECTOR + } Self::ERC20InsufficientAllowance(_) => { ::SELECTOR } @@ -7364,12 +9285,27 @@ function unpause() external; Self::ERC20InvalidSpender(_) => { ::SELECTOR } + Self::ERC2612ExpiredSignature(_) => { + ::SELECTOR + } + Self::ERC2612InvalidSigner(_) => { + ::SELECTOR + } Self::EnforcedPause(_) => { ::SELECTOR } Self::ExpectedPause(_) => { ::SELECTOR } + Self::InvalidAccountNonce(_) => { + ::SELECTOR + } + Self::InvalidShortString(_) => { + ::SELECTOR + } + Self::StringTooLong(_) => { + ::SELECTOR + } } } #[inline] @@ -7389,6 +9325,39 @@ function unpause() external; static DECODE_SHIMS: &[fn( &[u8], ) -> alloy_sol_types::Result] = &[ + { + fn StringTooLong( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(WrappedTokenErrors::StringTooLong) + } + StringTooLong + }, + { + fn ERC2612InvalidSigner( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(WrappedTokenErrors::ERC2612InvalidSigner) + } + ERC2612InvalidSigner + }, + { + fn ERC2612ExpiredSignature( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(WrappedTokenErrors::ERC2612ExpiredSignature) + } + ERC2612ExpiredSignature + }, { fn AccessControlBadConfirmation( data: &[u8], @@ -7400,6 +9369,17 @@ function unpause() external; } AccessControlBadConfirmation }, + { + fn InvalidAccountNonce( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(WrappedTokenErrors::InvalidAccountNonce) + } + InvalidAccountNonce + }, { fn ExpectedPause( data: &[u8], @@ -7433,6 +9413,28 @@ function unpause() external; } ERC20InvalidSender }, + { + fn InvalidShortString( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(WrappedTokenErrors::InvalidShortString) + } + InvalidShortString + }, + { + fn ECDSAInvalidSignatureS( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(WrappedTokenErrors::ECDSAInvalidSignatureS) + } + ECDSAInvalidSignatureS + }, { fn EnforcedPause( data: &[u8], @@ -7488,6 +9490,17 @@ function unpause() external; } ERC20InvalidReceiver }, + { + fn ECDSAInvalidSignature( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(WrappedTokenErrors::ECDSAInvalidSignature) + } + ECDSAInvalidSignature + }, { fn ERC20InsufficientAllowance( data: &[u8], @@ -7499,6 +9512,17 @@ function unpause() external; } ERC20InsufficientAllowance }, + { + fn ECDSAInvalidSignatureLength( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + ) + .map(WrappedTokenErrors::ECDSAInvalidSignatureLength) + } + ECDSAInvalidSignatureLength + }, ]; let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { return Err( @@ -7519,6 +9543,39 @@ function unpause() external; static DECODE_VALIDATE_SHIMS: &[fn( &[u8], ) -> alloy_sol_types::Result] = &[ + { + fn StringTooLong( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(WrappedTokenErrors::StringTooLong) + } + StringTooLong + }, + { + fn ERC2612InvalidSigner( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(WrappedTokenErrors::ERC2612InvalidSigner) + } + ERC2612InvalidSigner + }, + { + fn ERC2612ExpiredSignature( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(WrappedTokenErrors::ERC2612ExpiredSignature) + } + ERC2612ExpiredSignature + }, { fn AccessControlBadConfirmation( data: &[u8], @@ -7530,6 +9587,17 @@ function unpause() external; } AccessControlBadConfirmation }, + { + fn InvalidAccountNonce( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(WrappedTokenErrors::InvalidAccountNonce) + } + InvalidAccountNonce + }, { fn ExpectedPause( data: &[u8], @@ -7563,6 +9631,28 @@ function unpause() external; } ERC20InvalidSender }, + { + fn InvalidShortString( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(WrappedTokenErrors::InvalidShortString) + } + InvalidShortString + }, + { + fn ECDSAInvalidSignatureS( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(WrappedTokenErrors::ECDSAInvalidSignatureS) + } + ECDSAInvalidSignatureS + }, { fn EnforcedPause( data: &[u8], @@ -7618,6 +9708,17 @@ function unpause() external; } ERC20InvalidReceiver }, + { + fn ECDSAInvalidSignature( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(WrappedTokenErrors::ECDSAInvalidSignature) + } + ECDSAInvalidSignature + }, { fn ERC20InsufficientAllowance( data: &[u8], @@ -7629,6 +9730,17 @@ function unpause() external; } ERC20InsufficientAllowance }, + { + fn ECDSAInvalidSignatureLength( + data: &[u8], + ) -> alloy_sol_types::Result { + ::abi_decode_raw_validate( + data, + ) + .map(WrappedTokenErrors::ECDSAInvalidSignatureLength) + } + ECDSAInvalidSignatureLength + }, ]; let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { return Err( @@ -7653,6 +9765,21 @@ function unpause() external; inner, ) } + Self::ECDSAInvalidSignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ECDSAInvalidSignatureLength(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ECDSAInvalidSignatureS(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::ERC20InsufficientAllowance(inner) => { ::abi_encoded_size( inner, @@ -7683,12 +9810,35 @@ function unpause() external; inner, ) } + Self::ERC2612ExpiredSignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ERC2612InvalidSigner(inner) => { + ::abi_encoded_size( + inner, + ) + } Self::EnforcedPause(inner) => { ::abi_encoded_size(inner) } Self::ExpectedPause(inner) => { ::abi_encoded_size(inner) } + Self::InvalidAccountNonce(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidShortString(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::StringTooLong(inner) => { + ::abi_encoded_size(inner) + } } } #[inline] @@ -7706,6 +9856,24 @@ function unpause() external; out, ) } + Self::ECDSAInvalidSignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ECDSAInvalidSignatureLength(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ECDSAInvalidSignatureS(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::ERC20InsufficientAllowance(inner) => { ::abi_encode_raw( inner, @@ -7742,6 +9910,18 @@ function unpause() external; out, ) } + Self::ERC2612ExpiredSignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ERC2612InvalidSigner(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } Self::EnforcedPause(inner) => { ::abi_encode_raw( inner, @@ -7754,6 +9934,24 @@ function unpause() external; out, ) } + Self::InvalidAccountNonce(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidShortString(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::StringTooLong(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } } } } @@ -7765,6 +9963,8 @@ function unpause() external; #[allow(missing_docs)] Approval(Approval), #[allow(missing_docs)] + EIP712DomainChanged(EIP712DomainChanged), + #[allow(missing_docs)] Paused(Paused), #[allow(missing_docs)] RoleAdminChanged(RoleAdminChanged), @@ -7785,6 +9985,11 @@ function unpause() external; /// /// Prefer using `SolInterface` methods instead. pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 10u8, 99u8, 135u8, 201u8, 234u8, 54u8, 40u8, 184u8, 138u8, 99u8, 59u8, + 180u8, 243u8, 177u8, 81u8, 119u8, 15u8, 112u8, 8u8, 81u8, 23u8, 161u8, + 95u8, 155u8, 243u8, 120u8, 124u8, 218u8, 83u8, 241u8, 61u8, 49u8, + ], [ 47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8, 236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8, @@ -7823,6 +10028,7 @@ function unpause() external; ]; /// The names of the variants in the same order as `SELECTORS`. pub const VARIANT_NAMES: &'static [&'static str] = &[ + ::core::stringify!(EIP712DomainChanged), ::core::stringify!(RoleGranted), ::core::stringify!(Unpaused), ::core::stringify!(Paused), @@ -7833,6 +10039,7 @@ function unpause() external; ]; /// The signatures in the same order as `SELECTORS`. pub const SIGNATURES: &'static [&'static str] = &[ + ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, ::SIGNATURE, @@ -7865,7 +10072,7 @@ function unpause() external; #[automatically_derived] impl alloy_sol_types::SolEventInterface for WrappedTokenEvents { const NAME: &'static str = "WrappedTokenEvents"; - const COUNT: usize = 7usize; + const COUNT: usize = 8usize; fn decode_raw_log( topics: &[alloy_sol_types::Word], data: &[u8], @@ -7875,6 +10082,15 @@ function unpause() external; ::decode_raw_log(topics, data) .map(Self::Approval) } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + ) + .map(Self::EIP712DomainChanged) + } Some(::SIGNATURE_HASH) => { ::decode_raw_log(topics, data) .map(Self::Paused) @@ -7929,6 +10145,9 @@ function unpause() external; Self::Approval(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } + Self::EIP712DomainChanged(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } Self::Paused(inner) => { alloy_sol_types::private::IntoLogData::to_log_data(inner) } @@ -7954,6 +10173,9 @@ function unpause() external; Self::Approval(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } + Self::EIP712DomainChanged(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } Self::Paused(inner) => { alloy_sol_types::private::IntoLogData::into_log_data(inner) } @@ -8173,6 +10395,12 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> { self.call_builder(&DEFAULT_ADMIN_ROLECall) } + ///Creates a new call builder for the [`DOMAIN_SEPARATOR`] function. + pub fn DOMAIN_SEPARATOR( + &self, + ) -> alloy_contract::SolCallBuilder<&P, DOMAIN_SEPARATORCall, N> { + self.call_builder(&DOMAIN_SEPARATORCall) + } ///Creates a new call builder for the [`MINTER_ROLE`] function. pub fn MINTER_ROLE( &self, @@ -8227,6 +10455,12 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn decimals(&self) -> alloy_contract::SolCallBuilder<&P, decimalsCall, N> { self.call_builder(&decimalsCall) } + ///Creates a new call builder for the [`eip712Domain`] function. + pub fn eip712Domain( + &self, + ) -> alloy_contract::SolCallBuilder<&P, eip712DomainCall, N> { + self.call_builder(&eip712DomainCall) + } ///Creates a new call builder for the [`getRoleAdmin`] function. pub fn getRoleAdmin( &self, @@ -8262,6 +10496,13 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn name(&self) -> alloy_contract::SolCallBuilder<&P, nameCall, N> { self.call_builder(&nameCall) } + ///Creates a new call builder for the [`nonces`] function. + pub fn nonces( + &self, + owner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder<&P, noncesCall, N> { + self.call_builder(&noncesCall { owner }) + } ///Creates a new call builder for the [`pause`] function. pub fn pause(&self) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> { self.call_builder(&pauseCall) @@ -8270,6 +10511,29 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn paused(&self) -> alloy_contract::SolCallBuilder<&P, pausedCall, N> { self.call_builder(&pausedCall) } + ///Creates a new call builder for the [`permit`] function. + pub fn permit( + &self, + owner: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + value: alloy::sol_types::private::primitives::aliases::U256, + deadline: alloy::sol_types::private::primitives::aliases::U256, + v: u8, + r: alloy::sol_types::private::FixedBytes<32>, + s: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder<&P, permitCall, N> { + self.call_builder( + &permitCall { + owner, + spender, + value, + deadline, + v, + r, + s, + }, + ) + } ///Creates a new call builder for the [`renounceRole`] function. pub fn renounceRole( &self, @@ -8358,6 +10622,12 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn Approval_filter(&self) -> alloy_contract::Event<&P, Approval, N> { self.event_filter::() } + ///Creates a new event filter for the [`EIP712DomainChanged`] event. + pub fn EIP712DomainChanged_filter( + &self, + ) -> alloy_contract::Event<&P, EIP712DomainChanged, N> { + self.event_filter::() + } ///Creates a new event filter for the [`Paused`] event. pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> { self.event_filter::() diff --git a/protocol/src/WrappedToken.sol b/protocol/src/WrappedToken.sol index 3b4bb513..5927496c 100644 --- a/protocol/src/WrappedToken.sol +++ b/protocol/src/WrappedToken.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.20; import {ERC20Burnable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; import {ERC20Pausable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol"; +import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol"; import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; @@ -11,7 +12,7 @@ import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; * @notice A contract for wrapping and unwrapping tokens. * @dev This contract is used to wrap and unwrap tokens between chains. */ -contract WrappedToken is ERC20Burnable, ERC20Pausable, AccessControl { +contract WrappedToken is ERC20Burnable, ERC20Pausable, ERC20Permit, AccessControl { /** * @dev The role for the minter. */ @@ -33,7 +34,7 @@ contract WrappedToken is ERC20Burnable, ERC20Pausable, AccessControl { * @param symbol_ The symbol of the token. * @param decimals_ The number of decimals of the token. */ - constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) { + constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) ERC20Permit(name_) { DECIMALS = decimals_; _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); _grantRole(PAUSER_ROLE, msg.sender);