29.3k txs
42.7k calls
constructor
constructor() payable
functions
allowance
viewfunction allowance(address owner, address spender, uint256 id) view returns (uint256 amount)
balanceOf
viewfunction balanceOf(address owner, uint256 id) view returns (uint256 amount)
isOperator
viewfunction isOperator(address owner, address spender) view returns (bool status)
pools
viewfunction pools(uint256 poolId) view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast, uint256 price0CumulativeLast, uint256 price1CumulativeLast, uint256 kLast, uint256 supply)
supportsInterface
purefunction supportsInterface(bytes4 interfaceId) pure returns (bool result)
addLiquidity
payablefunction addLiquidity(tuple poolKey, uint256 amount0Desired, uint256 amount1Desired, uint256 amount0Min, uint256 amount1Min, address to, uint256 deadline) payable returns (uint256 amount0, uint256 amount1, uint256 liquidity)
approve
nonpayablefunction approve(address spender, uint256 id, uint256 amount) returns (bool)
deposit
payablefunction deposit(address token, uint256 id, uint256 amount) payable
make
nonpayablefunction make(address maker, uint256 supply, string uri) returns (uint256 coinId)
makeLiquid
payablefunction makeLiquid(address maker, address liqTo, uint256 mkrAmt, uint256 liqAmt, uint256 swapFee, string uri) payable returns (uint256 coinId, uint256 poolId, uint256 liquidity)
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
recoverTransientBalance
nonpayablefunction recoverTransientBalance(address token, uint256 id, address to) returns (uint256 amount)
removeLiquidity
nonpayablefunction removeLiquidity(tuple poolKey, uint256 liquidity, uint256 amount0Min, uint256 amount1Min, address to, uint256 deadline) returns (uint256 amount0, uint256 amount1)
setFeeTo
payablefunction setFeeTo(address feeTo) payable
setFeeToSetter
payablefunction setFeeToSetter(address feeToSetter) payable
setOperator
nonpayablefunction setOperator(address operator, bool approved) returns (bool)
swap
nonpayablefunction swap(tuple poolKey, uint256 amount0Out, uint256 amount1Out, address to, bytes data)
swapExactIn
payablefunction swapExactIn(tuple poolKey, uint256 amountIn, uint256 amountOutMin, bool zeroForOne, address to, uint256 deadline) payable returns (uint256 amountOut)
swapExactOut
payablefunction swapExactOut(tuple poolKey, uint256 amountOut, uint256 amountInMax, bool zeroForOne, address to, uint256 deadline) payable returns (uint256 amountIn)
transfer
nonpayablefunction transfer(address to, uint256 id, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 id, uint256 amount) returns (bool)
events
Burn
event Burn(uint256 indexed poolId, address indexed sender, uint256 amount0, uint256 amount1, address indexed to)
Mint
event Mint(uint256 indexed poolId, address indexed sender, uint256 amount0, uint256 amount1)
Swap
event Swap(uint256 indexed poolId, address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to)
Sync
event Sync(uint256 indexed poolId, uint112 reserve0, uint112 reserve1)
URI
event URI(string uri, uint256 indexed coinId)
errors
Expired
error Expired()
InsufficientInputAmount
error InsufficientInputAmount()
InsufficientLiquidity
error InsufficientLiquidity()
InsufficientLiquidityMinted
error InsufficientLiquidityMinted()
InsufficientOutputAmount
error InsufficientOutputAmount()
InvalidMsgVal
error InvalidMsgVal()
InvalidPoolTokens
error InvalidPoolTokens()
InvalidSwapFee
error InvalidSwapFee()
K
error K()
Overflow
error Overflow()
Reentrancy
error Reentrancy()
Unauthorized
error Unauthorized()
creation bytecode
0x608080604052325f556131b490816100158239f3fe6080806040526004361015610106575b5036156100ef575f5f5b8091368210156100d657600182357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8401185f1a92019180156100655760019293508153015b90610019565b50607f6002600193357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8601185f1a9401937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8352818111156100cb575b16010161005f565b8381013684376100c3565b5f90389082305af43d5f803e156100eb573d5ff35b3d5ffd5b335f525f6020525f60405260605f2034815c01905d005b5f905f3560e01c908162fdd58e146125935750806301ffc9a714612519578063095bcdb6146124655780630efe6a8b14612404578063426a8493146123a157806348416da814611e4f578063558a729714611db9578063598af9e714611d4f5780636dc2a7b314611c375780637466fde7146118ed578063895ccb3214611487578063a2e74af614611447578063a647fc2a1461135f578063ac4afa38146112ba578063ac9650d814610f65578063b6363cf214610f01578063c2b4148414610a09578063d4ff3f0e146105a3578063f46901ed14610555578063fb575d90146103325763fe99049a0361000f573461032f5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032f5761022b6125e9565b9061023461260c565b916044359060643567edcaa89a822939406034528160285233601452603460202054156102f6575b82601452604060142080548083116102e9578290039055846028528260145260406014208054908282019182106102dc575533845260209081529373ffffffffffffffffffffffffffffffffffffffff90811691167f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859604085a460018152f35b6389560ca186526004601cfd5b63f4d678b886526004601cfd5b8284526054842080546001810161030f575b505061025c565b8083116103225782900390555f80610308565b63deda903086526004601cfd5b80fd5b503461032f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360161014081126105515760a01361032f5760a435610104359073ffffffffffffffffffffffffffffffffffffffff82169283830361032f5768929eee149b4bd212685c610544573068929eee149b4bd212685d42610124351061051c5760a0604051816004823720938482528160205260408220948554956dffffffffffffffffffffffffffff8088169760701c16966103f688828585612a64565b90600483019788549861041561040d8b858c612bc9565b9a8c8b612bc9565b9860c4358b106104f45760e4358a106104f4578960409c9361047a95938361044061046d958c6130ef565b815403905561045b8d610451612725565b8360043591612f1c565b610463612748565b9060243591612f1c565b8882038a82038787612cf5565b6104c8575b508551908582528460208301527fd72b7803f66104fa4755cf48b28b9408682e97a0b000dd97c8ee3219aa8454ec873393a468929eee149b4bd212685d82519182526020820152f35b60036104eb82546dffffffffffffffffffffffffffff808260701c1691166127cd565b9101555f61047f565b6004897f42301c23000000000000000000000000000000000000000000000000000000008152fd5b807f203d82d80000000000000000000000000000000000000000000000000000000060049252fd5b63ab143c0690526004601cfd5b5080fd5b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032f576105886125e9565b815433036105965760205580f35b6382b4290082526004601cfd5b506105ad366126b2565b68929eee149b4bd2126896949291969593955c6109fc573068929eee149b4bd212685d42116109d45781156109ac5760a060405181858237209283855284602052604085208054916dffffffffffffffffffffffffffff8084169360701c16935f1461088a57838510156108625761063261062a608083016127b4565b85858861307b565b97881161083a57604081016106468161276b565b906106548a84358094612bec565b8061080c575b1561070a575b50509288926106b79261069c878760209d8e610693606073ffffffffffffffffffffffffffffffffffffffff9c0161276b565b92013591612f1c565b6106a68a8361278c565b886106b189866127e0565b92612cf5565b604051928684528588850152856040850152606084015216917ff51245804459075de3f63c42324c8ba2021175781c7477a5d8f4f08fb5584a5660803393a45b68929eee149b4bd212685d604051908152f35b73ffffffffffffffffffffffffffffffffffffffff6107288261276b565b166107a95750508734106107815792602098926106b79261069c8773ffffffffffffffffffffffffffffffffffffffff978c3411610770575b94975050509281949a50610660565b61077c8d3403336130d3565b610761565b6004877f85cf0a35000000000000000000000000000000000000000000000000000000008152fd5b346107e4579261069c8773ffffffffffffffffffffffffffffffffffffffff979461077c8d60209f99966107df6106b79a61276b565b61290a565b6004897f85cf0a35000000000000000000000000000000000000000000000000000000008152fd5b341561065a5760048a7f85cf0a35000000000000000000000000000000000000000000000000000000008152fd5b6004877f098fb561000000000000000000000000000000000000000000000000000000008152fd5b6004877fbb55fd27000000000000000000000000000000000000000000000000000000008152fd5b82851015610862576108a96108a1608083016127b4565b84868861307b565b97881161083a57606081016108bd8161276b565b906108ce8a60208501358094612bec565b15610967575b50509288926109239261090e878760209d610906604073ffffffffffffffffffffffffffffffffffffffff9b0161276b565b913591612f1c565b61091887836127e0565b886106b18c8661278c565b604051928584528688850152604084015284606084015216917ff51245804459075de3f63c42324c8ba2021175781c7477a5d8f4f08fb5584a5660803393a46106f7565b346107e4579261090e8773ffffffffffffffffffffffffffffffffffffffff979461099d8d60209f99966107df6109239a61276b565b94975050509281949a506108d4565b6004847f42301c23000000000000000000000000000000000000000000000000000000008152fd5b6004847f203d82d8000000000000000000000000000000000000000000000000000000008152fd5b63ab143c0685526004601cfd5b5060c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032f57610a3c6125e9565b610a4461260c565b606435919060843560443560a43567ffffffffffffffff8111610efd57610a6f903690600401612684565b6127108411610ed55782198711610ead5760a09392917f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b9160405160208101907fc2b414840000000000000000000000000000000000000000000000000000000082527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602482015242603882015260388152610b126058826127ed565b5190209784898096610e9c575b505050610b3960405192839260208452602084019161285b565b0390a2604051908682528460208301528660408301523060608301526080820152209283855284602052604085206020541515610c0a610b7984346127cd565b8070ffffffffffffffffffffffffffffffffff1060071b81811c68ffffffffffffffffff1060061b1781811c64ffffffffff1060051b1781811c62ffffff1060041b1760b56201000083831c019160011c1b0260121c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8080920410900390565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18810194818611610e6f578515610e47578588610c4692612c96565b60048301556dffffffffffffffffffffffffffff3411610e1f576dffffffffffffffffffffffffffff8311610e1f57857f1857d6b557d31cf8c2bf0cb9e6bf60aaeb9d8a0c5829169328ccf950adc4496f6040610d8b979899855463ffffffff8160e01c814216031680151580610e18575b80610e11575b610da4575b50164260e01b7fffffffff000000000000000000000000000000000000000000000000000000001617346dffffffffffffffffffffffffffff908116918217607089901b7bffffffffffffffffffffffffffff000000000000000000000000000016178755825191825287166020820152a2610d8f575b50604051903482526020820152847f5a3e96f397e68b20a43c25f664b628805b877334dadfcc925c6c1a3ad434045860403393a3604051938493846040919493926060820195825260208201520152565b0390f35b6003610d9b83346127cd565b9101555f610d3a565b807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff610dcc8580613144565b1602600189019081540190557bffffffffffffffffffffffffffffffffffffffffffffffffffffffff610dff8480613144565b1602600288019081540190555f610cc3565b5082610cbe565b5082610cb8565b6004877f35278d12000000000000000000000000000000000000000000000000000000008152fd5b6004897fd226f9d4000000000000000000000000000000000000000000000000000000008152fd5b6024897f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b610ea592612c96565b5f8085610b1f565b6004887f35278d12000000000000000000000000000000000000000000000000000000008152fd5b6004887fda7459b7000000000000000000000000000000000000000000000000000000008152fd5b8680fd5b503461032f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032f57610f396125e9565b90610f4261260c565b9167edcaa89a822939406020526014525260206034600c20546040519015158152f35b503461032f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032f576004359067ffffffffffffffff821161032f573660238301121561032f57816004013567ffffffffffffffff8111610551573660248260051b8501011161055157610fdf81612899565b92610fed60405194856127ed565b8184527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061101a83612899565b01835b8181106112a757505082907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbd81360301915b838103611110578585604051918291602083016020845282518091526040840191602060408360051b870101940192815b83831061108d5786860387f35b919395602080877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08294600196989a030187527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f838c518051918291828752018686015e888582860101520116010197019301930190928695949293611080565b8381969496101561127a5760248160051b830101358381121561127657820160248101359067ffffffffffffffff8211610efd576044018136038113610efd57818792918392604051928392833781018381520390305af43d1561126e573d9067ffffffffffffffff821161124157604051916111b560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846127ed565b82523d87602084013e5b15611239576111ce82866128b1565b526111d981856128b1565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461120c5760010194929461104f565b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b602081519101fd5b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b6060906111bf565b8580fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b606060208288018101919091520161101d565b503461032f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032f57604060e0916004358152806020522080549060018101549060028101546004600383015492015492604051946dffffffffffffffffffffffffffff811686526dffffffffffffffffffffffffffff8160701c166020870152861c60408601526060850152608084015260a083015260c0820152f35b503461032f5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032f576113976125e9565b9060443560243573ffffffffffffffffffffffffffffffffffffffff821682036114435768929eee149b4bd212685c611436579282916020943068929eee149b4bd212685d60405191338552838752816040526060852092835c9687948561142e575b50506040528261141c575b5050505068929eee149b4bd212685d604051908152f35b61142593612f1c565b5f828180611405565b5d855f6113fa565b63ab143c0683526004601cfd5b8280fd5b5060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032f5761147a6125e9565b8154330361059657815580f35b503461185f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601610120811261185f5760a01361185f5760e43573ffffffffffffffffffffffffffffffffffffffff81169060a43560c43583830361185f576101043567ffffffffffffffff811161185f57611509903690600401612684565b68929eee149b4bd212689391935c6118e0573068929eee149b4bd212685d8115801580916118d7575b156118af5760a060405181600482372094855f525f60205260405f20928354976dffffffffffffffffffffffffffff808a169960701c169389871015611887578488101561188757611876575b8680611863575b5050806117c7575b50506115b6836115b16115ab6115a2612725565b6004359061304f565b8961278c565b6127e0565b956115d8856115b16115d26115c9612748565b6024359061304f565b8561278c565b848203808911156117bf578803975b868403808311156117b7578203945b89158015906117ae575b156117865761271082028281046127101483151715611759576116429061163c6bffffffffffffffffffffffff611635612799565b168d6127cd565b906127e0565b6127108402848104612710148515171561172c579061167d6116839261163c6bffffffffffffffffffffffff611676612799565b168b6127cd565b906127cd565b61168d86866127cd565b906305f5e1008202918083046305f5e100149015171561172c57106117045790886116ba95949392612cf5565b6040519485526020850152604084015260608301527ff51245804459075de3f63c42324c8ba2021175781c7477a5d8f4f08fb5584a5660803393a48068929eee149b4bd212685d80f35b60048c7fa932492f000000000000000000000000000000000000000000000000000000008152fd5b60248e7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60248d7f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b60048c7f098fb561000000000000000000000000000000000000000000000000000000008152fd5b50851515611600565b508a946115f6565b5089976115e7565b883b1561185f57611828915f9160405193849283927ffe2cbab70000000000000000000000000000000000000000000000000000000084528b60048501523360248501528960448501528a606485015260a0608485015260a484019161285b565b0381838c5af180156118545761183f575b8061158e565b61184c9198505f906127ed565b5f965f611839565b6040513d5f823e3d90fd5b5f80fd5b61186f91610463612748565b5f86611586565b61188286610451612725565b61157f565b7fbb55fd27000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f42301c23000000000000000000000000000000000000000000000000000000005f5260045ffd5b50831515611532565b63ab143c065f526004601cfd5b6118f6366126b2565b68929eee149b4bd212689591939492955c6118e0573068929eee149b4bd212685d4211611c0f578115611be75760a0604051818382372092835f525f60205260405f20918254966dffffffffffffffffffffffffffff8089169860701c1690805f14611bc7576119748661196c6040860161276b565b853590612bec565b80611b99575b15611afc575b15611a495761199c611994608084016127b4565b828a88612ec9565b9687156118af5787106118af57808710156118875760209773ffffffffffffffffffffffffffffffffffffffff946119e08985878d61069360606119f59a0161276b565b6119ea878361278c565b886106b18b866127e0565b6040519283525f868401525f604084015284606084015216917ff51245804459075de3f63c42324c8ba2021175781c7477a5d8f4f08fb5584a5660803393a45b5f68929eee149b4bd212685d604051908152f35b611a60611a58608084016127b4565b898388612ec9565b9687156118af5787106118af57878710156118875760209773ffffffffffffffffffffffffffffffffffffffff94611aa38985876109066040611ab8990161276b565b611aad89836127e0565b886106b1898661278c565b604051925f8452868401528460408401525f606084015216917ff51245804459075de3f63c42324c8ba2021175781c7477a5d8f4f08fb5584a5660803393a4611a35565b8015611b79576040830173ffffffffffffffffffffffffffffffffffffffff611b248261276b565b16611b5f5750853403611b37575b611980565b7f85cf0a35000000000000000000000000000000000000000000000000000000005f5260045ffd5b34611b375786611b71611b329261276b565b85359061290a565b34611b3757611b3286611b8e6060860161276b565b60208601359061290a565b341561197a577f85cf0a35000000000000000000000000000000000000000000000000000000005f5260045ffd5b611be286611bd76060860161276b565b602086013590612bec565b61197a565b7f098fb561000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f203d82d8000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461185f5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261185f57611c6e6125e9565b60443567ffffffffffffffff811161185f576020917f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b611cb5611d2f933690600401612684565b604051868101907f6dc2a7b30000000000000000000000000000000000000000000000000000000082527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602482015242603882015260388152611d1f6058826127ed565b5190209485948560243591612c96565b611d446040519283928884528884019161285b565b0390a2604051908152f35b3461185f5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261185f57611d866125e9565b611d8e61260c565b9067edcaa89a822939406034526028526014526044355f52602060545f20545f603452604051908152f35b3461185f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261185f57611df06125e9565b6024359081151580920361185f5767edcaa89a82293940602052336014525f52806034600c2055602052600c5160601c337fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa267602080a360015f5260205ff35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601610160811261185f5760a01361185f5760a43560c4356101243573ffffffffffffffffffffffffffffffffffffffff8116810361185f5768929eee149b4bd212685c6118e0573068929eee149b4bd212685d426101443510611c0f5760a0604051816004823720805f525f60205260405f20908154916dffffffffffffffffffffffffffff8084169360701c16600482019384548015155f146123945750611f1c82828686612a64565b918554975b881590811561231e5799985b611f35612725565b90611f448b6004358094612bec565b806122f0575b15612288575b611f58612748565b92611f678d6024358096612bec565b15612276575b15612226575073ffffffffffffffffffffffffffffffffffffffff611f90612725565b16156121f8575b611f9f612725565b73ffffffffffffffffffffffffffffffffffffffff80611fbd612748565b16911610918215612191575b505015612169576127106bffffffffffffffffffffffff611fe8612799565b161161214157611ffb610b798a8a6127cd565b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1883019280841161211457839784156120ec5761204061205e9589610d8b9c612c96565b555b61204c818a61278c565b612056838c61278c565b908787612cf5565b6120c0575b50604051908482528560208301527f5a3e96f397e68b20a43c25f664b628805b877334dadfcc925c6c1a3ad434045860403393a35f68929eee149b4bd212685d604051938493846040919493926060820195825260208201520152565b60036120e382546dffffffffffffffffffffffffffff808260701c1691166127cd565b91015585612063565b7fd226f9d4000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fda7459b7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f0ab6dd12000000000000000000000000000000000000000000000000000000005f5260045ffd5b90915061219c612725565b73ffffffffffffffffffffffffffffffffffffffff806121ba612748565b1691161491826121ee575b826121e4575b826121da575b50508a80611fc9565b1090508a806121d1565b81151592506121cb565b80151592506121c5565b8015611f97577f0ab6dd12000000000000000000000000000000000000000000000000000000005f5260045ffd5b9798939150506122428261223b838a8d612bc9565b988c612bc9565b8781109088180280881897146120ec57610d8b97612264888861205e96612c29565b61226f88825461278c565b9055612042565b6122838d856107df612748565b611f6d565b73ffffffffffffffffffffffffffffffffffffffff6122a5612725565b166122d957348b14611f50577f85cf0a35000000000000000000000000000000000000000000000000000000005f5260045ffd5b34611b37576122eb8b836107df612725565b611f50565b3415611f4a577f85cf0a35000000000000000000000000000000000000000000000000000000005f5260045ffd5b61232984848d612bc9565b9080821161234357506101043581106118af579998611f2d565b9050612350838583612bc9565b9a8b116123675760e4358b106118af579998611f2d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b9691602054151592611f21565b3461185f576123af3661262f565b909167edcaa89a8229394060345233602852601452815f528060545f20555f5260205160601c337fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760205fa460015f5260205ff35b61240d3661262f565b9173ffffffffffffffffffffffffffffffffffffffff811615801561245f57835b3403611b37571561244f575b335f5260205260405260605f2090815c01905d005b61245a83838361290a565b61243a565b5f61242e565b3461185f576124733661262f565b909167edcaa89a8229394060205233601452825f5260405f20805480841161250c57839003905580601452825f5260405f209182548181019081106124ff5773ffffffffffffffffffffffffffffffffffffffff9355335f5260205216337f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885960405fa460015f5260205ff35b6389560ca15f526004601cfd5b63f4d678b85f526004601cfd5b3461185f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261185f576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361185f5760209060e01c604051906301ffc9a7630f632fb3821491141715158152f35b3461185f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261185f576020906125cd6125e9565b67edcaa89a8229394083526014526024355f5260405f20548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361185f57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361185f57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc606091011261185f5760043573ffffffffffffffffffffffffffffffffffffffff8116810361185f57906024359060443590565b9181601f8401121561185f5782359167ffffffffffffffff831161185f576020838186019501011161185f57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01610140811261185f5760a01361185f5760049060a4359060c4359060e435801515810361185f57906101043573ffffffffffffffffffffffffffffffffffffffff8116810361185f57906101243590565b60443573ffffffffffffffffffffffffffffffffffffffff8116810361185f5790565b60643573ffffffffffffffffffffffffffffffffffffffff8116810361185f5790565b3573ffffffffffffffffffffffffffffffffffffffff8116810361185f5790565b9190820180921161211457565b6084356bffffffffffffffffffffffff8116810361185f5790565b356bffffffffffffffffffffffff8116810361185f5790565b8181029291811591840414171561211457565b9190820391821161211457565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761282e57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b67ffffffffffffffff811161282e5760051b60200190565b80518210156128c55760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9081602091031261185f5751801515810361185f5790565b73ffffffffffffffffffffffffffffffffffffffff811630810361293657505090612934916130ef565b565b9091806129a757505060405191606052306040523360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c82855af1908160015f51141615612989575b50505f606052604052565b3b153d17101561299a575f8061297e565b637939f4245f526004601cfd5b602092506084905f60409593955195869485937ffe99049a000000000000000000000000000000000000000000000000000000008552336004860152306024860152604485015260648401525af1801561185457612a025750565b612a239060203d602011612a26575b612a1b81836127ed565b8101906128f2565b50565b503d612a11565b8115612a37570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b60205480158015969591929190612bb25760038201549485612a89575b505050505050565b610b79612aac916dffffffffffffffffffffffffffff80612b3e951691166127cd565b948070ffffffffffffffffffffffffffffffffff1060071b81811c68ffffffffffffffffff1060061b1781811c64ffffffffff1060051b1781811c62ffffff1060041b1760b56201000083831c019160011c1b0260121c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8082040160011c8080920410900390565b90818511612b4d575b80612a81565b60040193612b60855461167d84846127e0565b9060058102908082046005149015171561211457612b8792612b819161278c565b90612a2d565b809281612ba1575b50505081540190555f80808080612b47565b612baa92612c29565b5f8181612b8f565b5091505060039150018054612bc45750565b5f9055565b8181029181159183041417820215612bdf570490565b63ad251c275f526004601cfd5b9092915f9360405192335f5260205260405260605f2090815c81811015612c16575b505050604052565b909192945003905d6001915f8080612c0e565b91909167edcaa89a8229394060205280601452825f5260405f209182548181019081106124ff5773ffffffffffffffffffffffffffffffffffffffff9355335f52602052165f7f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859604082a4565b73ffffffffffffffffffffffffffffffffffffffff919267edcaa89a8229394060205281601452835f528060405f2055335f52602052165f7f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859604082a4565b9392949190946dffffffffffffffffffffffffffff8211612e79576dffffffffffffffffffffffffffff8111612e7957846dffffffffffffffffffffffffffff7bffffffffffffffffffffffffffff00000000000000000000000000009481946040977f1857d6b557d31cf8c2bf0cb9e6bf60aaeb9d8a0c5829169328ccf950adc4496f99549263ffffffff8460e01c81421603169182151580612e6e575b80612e63575b612e06575b5050509091164260e01b7fffffffff00000000000000000000000000000000000000000000000000000000168117607085901b7bffffffffffffffffffffffffffff00000000000000000000000000001617909255508451908152911660208201529050a2565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff918a612e4f928585612e3a83858760701b16613144565b160260018b0190815401905560701b16613144565b1602600285019081540190555f8080612d9f565b508582161515612d9a565b508581161515612d94565b7f35278d12000000000000000000000000000000000000000000000000000000005f5260045ffd5b6bffffffffffffffffffffffff1661271003906bffffffffffffffffffffffff821161211457565b612eef906bffffffffffffffffffffffff612ee8612ef6949596612ea1565b16906127cd565b92836127cd565b90612710810290808204612710149015171561211457612f1992612b819161278c565b90565b92919073ffffffffffffffffffffffffffffffffffffffff8116308103612f5b57505060405192335f5260205260405260605f2090815c01905d604052565b73ffffffffffffffffffffffffffffffffffffffff8516308103612f855750506129349350612c29565b91929180612f9a5750505061293492506130d3565b82612ffa575050506014526034526fa9059cbb0000000000000000000000005f5260205f6044601082855af1908160015f51141615612fdc575b50505f603452565b3b153d171015612fed575f80612fd4565b6390b8ec185f526004601cfd5b602094955060649293505f9060405196879586947f095bcdb60000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af1801561185457612a025750565b919060405192335f5260205260405260605f2091825c9283613072575b50604052565b5f905d5f61306c565b9081613089919493946127cd565b916127108302928084046127101490151715612114576bffffffffffffffffffffffff612ee86130bf612b81946130c5976127e0565b92612ea1565b600181018091116121145790565b5f80809338935af1156130e257565b63b12d13eb5f526004601cfd5b9067edcaa89a8229394060205233601452815f5260405f20805480831161250c578290039055335f526020525f337f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859604083a4565b906dffffffffffffffffffffffffffff16908115612a37577bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16049056fea26469706673582212200cf4f437b8a130d688256bcf4b66cf749daa93ac35ff148c053eda98c75c376964736f6c634300081d0033