3 txs
24 calls
constructor
constructor(bool _isCreditPool, address _WETH9, address _router, address _treasury, string _name)
functions
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
isCreditPool
viewfunction isCreditPool() view returns (bool)
isWhitelisedSigners
viewfunction isWhitelisedSigners(address) view returns (bool)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(uint256) view returns (bool)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
rfqSigners
viewfunction rfqSigners(address) view returns (bool)
router
viewfunction router() view returns (address)
treasury
viewfunction treasury() view returns (address)
WETH9
viewfunction WETH9() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
fillOrder
nonpayablefunction fillOrder(uint256 effectiveAmountIn, tuple quote)
renounceOwnership
nonpayablefunction renounceOwnership()
setSigner
nonpayablefunction setSigner(address signer, bool isSigner)
setTreasury
nonpayablefunction setTreasury(address newTreasury)
setWhitelistedSigner
nonpayablefunction setWhitelistedSigner(address account, bool status)
tradeRFQT
nonpayablefunction tradeRFQT(uint256 effectiveSellerTokenAmount, tuple quote)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
EIP712DomainChanged
event EIP712DomainChanged()
OrderFilled
event OrderFilled(address recipient, address tokenIn, address tokenOut, uint256 amountIn, uint256 amountOut, address marketMaker, bytes orderBookSig, bytes32 orderBookDigest)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
RFQTrade
event RFQTrade(address recipient, address sellerToken, address buyerToken, uint256 sellerTokenAmount, uint256 buyerTokenAmount, bytes16 quoteId, address signer)
SignerUpdated
event SignerUpdated(address signer, bool isSigner)
TreasurySet
event TreasurySet(address treasury)
WhitelistedSignerUpdated
event WhitelistedSignerUpdated(address indexed account, bool status)
errors
InvalidShortString
error InvalidShortString()
InvalidSignature
error InvalidSignature()
InvalidSigner
error InvalidSigner()
NonceUsed
error NonceUsed()
OnlyNativeRouter
error OnlyNativeRouter()
OnlyWETH9
error OnlyWETH9()
Overflow
error Overflow()
StringTooLong
error StringTooLong(string str)
ZeroAddress
error ZeroAddress()
ZeroInput
error ZeroInput()
creation bytecode
0x6101a0604052348015610010575f5ffd5b50604051612fe1380380612fe183398101604081905261002f916102f6565b6040518060400160405280600f81526020016e13985d1a5d994814919448141bdbdb608a1b815250604051806040016040528060018152602001603160f81b8152506100876100826101e060201b60201c565b6101e4565b610092826002610200565b610120526100a1816003610200565b61014052815160208084019190912060e052815190820120610100524660a05261012d60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b0384161580159061015657506001600160a01b03831615155b801561016a57506001600160a01b03821615155b801561017657505f8151115b6101935760405163af458c0760e01b815260040160405180910390fd5b8415156101605260046101a68282610472565b5050600580546001600160a01b03199081166001600160a01b03948516179091559282166101805260068054909316911617905550610584565b3390565b600180546001600160a01b03191690556101fd81610232565b50565b5f60208351101561021b5761021483610281565b905061022c565b816102268482610472565b5060ff90505b92915050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5f829050601f815111156102b4578260405163305a27a960e01b81526004016102ab919061052c565b60405180910390fd5b80516102bf82610561565b179392505050565b80516001600160a01b03811681146102dd575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a0868803121561030a575f5ffd5b85518015158114610319575f5ffd5b9450610327602087016102c7565b9350610335604087016102c7565b9250610343606087016102c7565b60808701519092506001600160401b0381111561035e575f5ffd5b8601601f8101881361036e575f5ffd5b80516001600160401b03811115610387576103876102e2565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103b5576103b56102e2565b6040528181528282016020018a10156103cc575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b600181811c9082168061040257607f821691505b60208210810361042057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561046d57805f5260205f20601f840160051c8101602085101561044b5750805b601f840160051c820191505b8181101561046a575f8155600101610457565b50505b505050565b81516001600160401b0381111561048b5761048b6102e2565b61049f8161049984546103ee565b84610426565b6020601f8211600181146104d1575f83156104ba5750848201515b5f19600385901b1c1916600184901b17845561046a565b5f84815260208120601f198516915b8281101561050057878501518255602094850194600190920191016104e0565b508482101561051d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610420575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516129c06106215f395f818161015d0152818161025201528181610a4f01528181610aa301528181610d5201528181610da6015281816115e1015261163a01525f81816103c901526111d001525f61080e01525f6107e301525f61181a01525f6117f201525f61174d01525f61177701525f6117a101526129c05ff3fe608060405260043610610140575f3560e01c806384b0196e116100bb578063f0f4426011610071578063f2fde38b11610057578063f2fde38b14610453578063f887ea4014610472578063fee5b7a71461049e575f5ffd5b8063f0f4426014610415578063f1fbd69414610434575f5ffd5b806395fa3bd9116100a157806395fa3bd91461038a578063bc58f13d146103b8578063e30c3978146103eb575f5ffd5b806384b0196e1461033a5780638da5cb5b14610361575f5ffd5b806361d027b31161011057806379ba5097116100f657806379ba5097146102d95780637de48b19146102ed5780638264a6f01461031b575f5ffd5b806361d027b314610299578063715018a6146102c5575f5ffd5b806306fdde03146101ba578063141a468c146101e457806331cb6105146102225780634aa4a4fc14610241575f5ffd5b366101b6573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101b4576040517f21aba8c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b5f5ffd5b3480156101c5575f5ffd5b506101ce6104bd565b6040516101db919061209e565b60405180910390f35b3480156101ef575f5ffd5b506102126101fe3660046120b7565b60076020525f908152604090205460ff1681565b60405190151581526020016101db565b34801561022d575f5ffd5b506101b461023c36600461210e565b610549565b34801561024c575f5ffd5b506102747f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101db565b3480156102a4575f5ffd5b506006546102749073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102d0575f5ffd5b506101b461062b565b3480156102e4575f5ffd5b506101b461063e565b3480156102f8575f5ffd5b50610212610307366004612143565b60096020525f908152604090205460ff1681565b348015610326575f5ffd5b506101b461033536600461210e565b6106f8565b348015610345575f5ffd5b5061034e6107d6565b6040516101db979695949392919061215c565b34801561036c575f5ffd5b505f5473ffffffffffffffffffffffffffffffffffffffff16610274565b348015610395575f5ffd5b506102126103a4366004612143565b60086020525f908152604090205460ff1681565b3480156103c3575f5ffd5b506102127f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f6575f5ffd5b5060015473ffffffffffffffffffffffffffffffffffffffff16610274565b348015610420575f5ffd5b506101b461042f366004612143565b610879565b34801561043f575f5ffd5b506101b461044e3660046123c3565b610947565b34801561045e575f5ffd5b506101b461046d366004612143565b610bd7565b34801561047d575f5ffd5b506005546102749073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104a9575f5ffd5b506101b46104b836600461255d565b610c86565b600480546104ca906126b4565b80601f01602080910402602001604051908101604052809291908181526020018280546104f6906126b4565b80156105415780601f1061051857610100808354040283529160200191610541565b820191905f5260205f20905b81548152906001019060200180831161052457829003601f168201915b505050505081565b610551610ea8565b73ffffffffffffffffffffffffffffffffffffffff821661059e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f8181526008602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168515159081179091558251938452908301527ffcaa24b1276bfa7dbf77797c0a984b9df924acbeaabd48cd2f1b0eca379b78fa910160405180910390a15050565b610633610ea8565b61063c5f610f28565b565b600154339073ffffffffffffffffffffffffffffffffffffffff1681146106ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6106f581610f28565b50565b610700610ea8565b73ffffffffffffffffffffffffffffffffffffffff821661074d576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f8181526009602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527ffe2bc6c71a6d209c439c39a17c9b03de57e185513e35ec777d365c6ccbc9c92b910160405180910390a25050565b5f606080828080836108097f00000000000000000000000000000000000000000000000000000000000000006002610f59565b6108347f00000000000000000000000000000000000000000000000000000000000000006003610f59565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b610881610ea8565b73ffffffffffffffffffffffffffffffffffffffff81166108ce576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f9060200160405180910390a150565b60055473ffffffffffffffffffffffffffffffffffffffff163314610998576040517fc61e569100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101008101515f9081526007602052604090205460ff16156109e6576040517f1f6d5aef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101008101515f90815260076020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055608081015173ffffffffffffffffffffffffffffffffffffffff811615610a4d578160800151610a6f565b7f00000000000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff908116608084015260608301511615610aa1578160600151610ac3565b7f00000000000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff166060830152610ae782611004565b5f610b108360200151846040015185608001518587606001518860c001518960a001518b6111a9565b90507fc82975a4eae9f14416813a0bd7312edf547928cd25ae9b8597ee4c92fa6862d283604001518460600151856080015187858861012001518960200151604051610bc9979695949392919073ffffffffffffffffffffffffffffffffffffffff978816815295871660208701529386166040860152606085019290925260808401527fffffffffffffffffffffffffffffffff000000000000000000000000000000001660a083015290911660c082015260e00190565b60405180910390a150505050565b610bdf610ea8565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155610c415f5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60055473ffffffffffffffffffffffffffffffffffffffff163314610cd7576040517fc61e569100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101008101515f9081526007602052604090205460ff1615610d25576040517f1f6d5aef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015173ffffffffffffffffffffffffffffffffffffffff811615610d50578160600151610d72565b7f00000000000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff908116606084015260408301511615610da4578160400151610dc6565b7f00000000000000000000000000000000000000000000000000000000000000005b73ffffffffffffffffffffffffffffffffffffffff1660408301819052602083015160c0840151606085015160a086015160808701515f95610e0d9594939288928b6111a9565b6101008401515f9081526007602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560c0860151828701516060880151928801516101608901516101808a015195519697507f1dfb67e434fa608decc5bfe600f172865b02af65ca9bdf03c9cff4af810cc14096610bc996949593948c938a939092909190612705565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461063c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106e3565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556106f58161136e565b606060ff8314610f7357610f6c836113e2565b9050610ffe565b818054610f7f906126b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610fab906126b4565b8015610ff65780601f10610fcd57610100808354040283529160200191610ff6565b820191905f5260205f20905b815481529060010190602001808311610fd957829003601f168201915b505050505090505b92915050565b60208082015173ffffffffffffffffffffffffffffffffffffffff165f9081526009909152604090205460ff16156110395750565b60208082015173ffffffffffffffffffffffffffffffffffffffff165f9081526008909152604090205460ff1661109c576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61112c7fcdd3cf1659a8da07564b163a4df90f66944547e93f0bb61ba676c459a2db4e208361010001518460200151308660400151876080015188606001518960c001518a60a001518b60e001518c604001518d61012001516040516020016111119c9b9a999897969594939291906127aa565b6040516020818303038152906040528051906020012061141f565b905061113d81836101600151611466565b73ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff16146111a5576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f8282106111b757836111cc565b826111c285846128b8565b6111cc91906128f4565b90507f0000000000000000000000000000000000000000000000000000000000000000156113575761121d7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611488565b821115801561125457506112507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611488565b8111155b61128a576040517f35278d1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065473ffffffffffffffffffffffffffffffffffffffff16637362ecbe8a876112b3866114f7565b8b6112bd876114f7565b60405160e087901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff9586166004820152938516602485015260448401929092529092166064820152608481019190915260a4015f604051808303815f87803b158015611340575f5ffd5b505af1158015611352573d5f5f3e3d5ffd5b505050505b6113628689836115a8565b98975050505050505050565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60605f6113ee836116f4565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f610ffe61142b611734565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b5f5f5f611473858561186f565b91509150611480816118b1565b509392505050565b5f5f8212156114f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016106e3565b5090565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156114f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e7432353600000000000000000000000000000000000000000000000060648201526084016106e3565b73ffffffffffffffffffffffffffffffffffffffff83166116cc5760065461160b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811691163084611a63565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d906024015f604051808303815f87803b158015611690575f5ffd5b505af11580156116a2573d5f5f3e3d5ffd5b506116c79250505073ffffffffffffffffffffffffffffffffffffffff831682611afe565b505050565b6006546116c79073ffffffffffffffffffffffffffffffffffffffff85811691168484611a63565b5f60ff8216601f811115610ffe576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561179957507f000000000000000000000000000000000000000000000000000000000000000046145b156117c357507f000000000000000000000000000000000000000000000000000000000000000090565b61186a604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b905090565b5f5f82516041036118a3576020830151604084015160608501515f1a61189787828585611c54565b945094505050506118aa565b505f905060025b9250929050565b5f8160048111156118c4576118c461292c565b036118cc5750565b60018160048111156118e0576118e061292c565b03611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106e3565b600281600481111561195b5761195b61292c565b036119c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106e3565b60038160048111156119d6576119d661292c565b036106f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016106e3565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611af8908590611d3c565b50505050565b80471015611b68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106e3565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611bbe576040519150601f19603f3d011682016040523d82523d5f602084013e611bc3565b606091505b50509050806116c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106e3565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611c8957505f90506003611d33565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611cda573d5f5f3e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611d2d575f60019250925050611d33565b91505f90505b94509492505050565b5f611d9d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611e499092919063ffffffff16565b905080515f1480611dbd575080806020019051810190611dbd9190612959565b6116c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106e3565b6060611e5784845f85611e5f565b949350505050565b606082471015611ef1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106e3565b5f5f8673ffffffffffffffffffffffffffffffffffffffff168587604051611f199190612974565b5f6040518083038185875af1925050503d805f8114611f53576040519150601f19603f3d011682016040523d82523d5f602084013e611f58565b606091505b5091509150611f6987838387611f74565b979650505050505050565b606083156120095782515f036120025773ffffffffffffffffffffffffffffffffffffffff85163b612002576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106e3565b5081611e57565b611e57838381511561201e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e3919061209e565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6120b06020830184612052565b9392505050565b5f602082840312156120c7575f5ffd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146120f1575f5ffd5b919050565b80151581146106f5575f5ffd5b80356120f1816120f6565b5f5f6040838503121561211f575f5ffd5b612128836120ce565b91506020830135612138816120f6565b809150509250929050565b5f60208284031215612153575f5ffd5b6120b0826120ce565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61219660e0830189612052565b82810360408401526121a88189612052565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561220a5783518352602093840193909201916001016121ec565b50909b9a5050505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610200810167ffffffffffffffff8111828210171561226c5761226c61221b565b60405290565b6040516101c0810167ffffffffffffffff8111828210171561226c5761226c61221b565b80357fffffffffffffffffffffffffffffffff00000000000000000000000000000000811681146120f1575f5ffd5b5f82601f8301126122d4575f5ffd5b813567ffffffffffffffff8111156122ee576122ee61221b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561233b5761233b61221b565b604052818152838201602001851015612352575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6040828403121561237e575f5ffd5b6040805190810167ffffffffffffffff811182821017156123a1576123a161221b565b6040529050806123b0836120ce565b8152602092830135920191909152919050565b5f5f604083850312156123d4575f5ffd5b82359150602083013567ffffffffffffffff8111156123f1575f5ffd5b83016102208186031215612403575f5ffd5b61240b612248565b612414826120ce565b8152612422602083016120ce565b6020820152612433604083016120ce565b6040820152612444606083016120ce565b6060820152612455608083016120ce565b608082015260a0828101359082015260c0808301359082015260e0808301359082015261010080830135908201526124906101208301612296565b6101208201526124a36101408301612103565b61014082015261016082013567ffffffffffffffff8111156124c3575f5ffd5b6124cf878285016122c5565b610160830152506124e486610180840161236e565b6101808201526101c082013567ffffffffffffffff811115612504575f5ffd5b612510878285016122c5565b6101a0830152506101e082013567ffffffffffffffff811115612531575f5ffd5b61253d878285016122c5565b6101c08301525061020091909101356101e0820152919491935090915050565b5f5f6040838503121561256e575f5ffd5b82359150602083013567ffffffffffffffff81111561258b575f5ffd5b83016101e0818603121561259d575f5ffd5b6125a5612272565b6125ae826120ce565b81526125bc602083016120ce565b60208201526125cd604083016120ce565b60408201526125de606083016120ce565b60608201526080828101359082015260a0808301359082015261260360c083016120ce565b60c082015261261460e083016120ce565b60e08201526101008281013590820152610120808301359082015261014082013567ffffffffffffffff811115612649575f5ffd5b612655878285016122c5565b6101408301525061016082013567ffffffffffffffff811115612676575f5ffd5b612682878285016122c5565b6101608301525061018082810135908201526126a2866101a0840161236e565b6101a082015280925050509250929050565b600181811c908216806126c857607f821691505b6020821081036126ff577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff8916815273ffffffffffffffffffffffffffffffffffffffff8816602082015273ffffffffffffffffffffffffffffffffffffffff8716604082015285606082015284608082015273ffffffffffffffffffffffffffffffffffffffff841660a082015261010060c08201525f612795610100830185612052565b90508260e08301529998505050505050505050565b5f610180820190508d82528c602083015273ffffffffffffffffffffffffffffffffffffffff8c16604083015273ffffffffffffffffffffffffffffffffffffffff8b16606083015273ffffffffffffffffffffffffffffffffffffffff8a16608083015273ffffffffffffffffffffffffffffffffffffffff891660a083015273ffffffffffffffffffffffffffffffffffffffff881660c08301528660e0830152856101008301528461012083015261287e61014083018573ffffffffffffffffffffffffffffffffffffffff169052565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083166101608301529d9c50505050505050505050505050565b8082028115828204841417610ffe577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f82612927577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60208284031215612969575f5ffd5b81516120b0816120f6565b5f82518060208501845e5f92019182525091905056fea2646970667358221220d5b762d90738d2d5c284fff90d368ffefdc30b42666df05b6a591d0f6f0eb9ca64736f6c634300081c00330000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006e6283df5edac18ad53c041f7e8205cc79175443000000000000000000000000e3d41d19564922c9952f692c5dd0563030f5f2ef00000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000f4e61746976652052465120506f6f6c0000000000000000000000000000000000