solc-0.8.36-doubleshift20 0xdac17f958d2ee523a2206206994597c13d831ec7 optimized

5476 bytes

608060405234801561000f575f5ffd5b50600436106101e7575f3560e01c806370a0823111610109578063db006a751161009e578063e4997dc51161006e578063e4997dc514610435578063e5b5019a14610448578063f2fde38b14610450578063f3bdc22814610463575f5ffd5b8063db006a75146103e4578063dd62ed3e146103f7578063dd644f721461040a578063e47d606014610413575f5ffd5b806395d89b41116100d957806395d89b41146103a3578063a9059cbb146103ab578063c0324c77146103be578063cc872b66146103d1575f5ffd5b806370a08231146103665780638456cb5914610379578063893d20e8146103815780638da5cb5b14610391575f5ffd5b806327e235e31161017f5780633f4ba83a1161014f5780633f4ba83a146102f657806359bf1abe146102fe5780635c658165146103295780635c975abb14610353575f5ffd5b806327e235e3146102bc578063313ce567146102db57806335390714146102e45780633eaaf86b146102ed575f5ffd5b80630ecb93c0116101ba5780630ecb93c01461025557806318160ddd1461026857806323b872dd1461027e57806326976e3f14610291575f5ffd5b806306fdde03146101eb5780630753c30c14610209578063095ea7b31461021e5780630e136b1914610231575b5f5ffd5b6101f3610476565b6040516102009190611254565b60405180910390f35b61021c61021736600461129f565b610502565b005b61021c61022c3660046112b8565b610573565b600a5461024590600160a01b900460ff1681565b6040519015158152602001610200565b61021c61026336600461129f565b610619565b610270610681565b604051908152602001610200565b61021c61028c3660046112e0565b61070d565b600a546102a4906001600160a01b031681565b6040516001600160a01b039091168152602001610200565b6102706102ca36600461129f565b60026020525f908152604090205481565b61027060095481565b61027060045481565b61027060015481565b61021c6107aa565b61024561030c36600461129f565b6001600160a01b03165f9081526006602052604090205460ff1690565b61027061033736600461131a565b600560209081525f928352604080842090915290825290205481565b5f5461024590600160a01b900460ff1681565b61027061037436600461129f565b610808565b61021c6108b0565b5f546001600160a01b03166102a4565b5f546102a4906001600160a01b031681565b6101f3610915565b61021c6103b93660046112b8565b610922565b61021c6103cc36600461134b565b6109dd565b61021c6103df36600461136b565b610a72565b61021c6103f236600461136b565b610b3c565b61027061040536600461131a565b610bf4565b61027060035481565b61024561042136600461129f565b60066020525f908152604090205460ff1681565b61021c61044336600461129f565b610cad565b6102705f1981565b61021c61045e36600461129f565b610d12565b61021c61047136600461129f565b610d54565b6007805461048390611382565b80601f01602080910402602001604051908101604052809291908181526020018280546104af90611382565b80156104fa5780601f106104d1576101008083540402835291602001916104fa565b820191905f5260205f20905b8154815290600101906020018083116104dd57829003601f168201915b505050505081565b5f546001600160a01b03163314610517575f5ffd5b600a80546001600160a01b0383166001600160a81b03199091168117600160a01b179091556040519081527fcc358699805e9a8b7f77b522628c7cb9abd07d9efb86b6fb616af1609036a99e906020015b60405180910390a150565b60406105808160046113ce565b36101561058b575f5ffd5b600a54600160a01b900460ff161561060a57600a5460405163aee92d3360e01b81523360048201526001600160a01b038581166024830152604482018590529091169063aee92d33906064015b5f604051808303815f87803b1580156105ef575f5ffd5b505af1158015610601573d5f5f3e3d5ffd5b50505050505050565b6106148383610e0b565b505050565b5f546001600160a01b0316331461062e575f5ffd5b6001600160a01b0381165f81815260066020908152604091829020805460ff1916600117905590519182527f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc9101610568565b600a545f90600160a01b900460ff161561070657600a54604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156106dd573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070191906113e1565b905090565b5060015490565b5f54600160a01b900460ff1615610722575f5ffd5b6001600160a01b0383165f9081526006602052604090205460ff1615610746575f5ffd5b600a54600160a01b900460ff161561079f57600a54604051638b477adb60e01b81523360048201526001600160a01b03858116602483015284811660448301526064820184905290911690638b477adb906084016105d8565b610614838383610ebb565b5f546001600160a01b031633146107bf575f5ffd5b5f54600160a01b900460ff166107d3575f5ffd5b5f805460ff60a01b191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a1565b600a545f90600160a01b900460ff161561088e57600a546040516370a0823160e01b81526001600160a01b038481166004830152909116906370a0823190602401602060405180830381865afa158015610864573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088891906113e1565b92915050565b6001600160a01b0382165f90815260026020526040902054610888565b919050565b5f546001600160a01b031633146108c5575f5ffd5b5f54600160a01b900460ff16156108da575f5ffd5b5f805460ff60a01b1916600160a01b1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a1565b6008805461048390611382565b5f54600160a01b900460ff1615610937575f5ffd5b335f9081526006602052604090205460ff1615610952575f5ffd5b600a54600160a01b900460ff16156109cf57600a5460405163370c4c0560e11b81523360048201526001600160a01b0384811660248301526044820184905290911690636e18980a906064015f604051808303815f87803b1580156109b5575f5ffd5b505af11580156109c7573d5f5f3e3d5ffd5b505050505050565b6109d9828261107c565b5050565b5f546001600160a01b031633146109f2575f5ffd5b601482106109fe575f5ffd5b60328110610a0a575f5ffd5b6003829055600954610a2890610a2190600a6114db565b82906111cc565b60048190556003546040517fb044a1e409eac5c48e5af22d4af52670dd1a99059537a78b31b48c6500a6354e92610a66928252602082015260400190565b60405180910390a15050565b5f546001600160a01b03163314610a87575f5ffd5b600154610a9482826113ce565b11610a9d575f5ffd5b5f80546001600160a01b0316815260026020526040902054610abf82826113ce565b11610ac8575f5ffd5b5f80546001600160a01b031681526002602052604081208054839290610aef9084906113ce565b925050819055508060015f828254610b0791906113ce565b90915550506040518181527fcb8241adb0c3fdb35b70c24ce35c5eb0c17af7431c99f827d44a445ca624176a90602001610568565b5f546001600160a01b03163314610b51575f5ffd5b806001541015610b5f575f5ffd5b5f80546001600160a01b0316815260026020526040902054811115610b82575f5ffd5b8060015f828254610b9391906114e6565b90915550505f80546001600160a01b031681526002602052604081208054839290610bbf9084906114e6565b90915550506040518181527f702d5967f45f6513a38ffc42d6ba9bf230bd40e8f53b16363c7eb4fd2deb9a4490602001610568565b600a545f90600160a01b900460ff1615610c8357600a54604051636eb1769f60e11b81526001600160a01b03858116600483015284811660248301529091169063dd62ed3e90604401602060405180830381865afa158015610c58573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7c91906113e1565b9050610888565b6001600160a01b038084165f90815260056020908152604080832093861683529290522054610c7c565b5f546001600160a01b03163314610cc2575f5ffd5b6001600160a01b0381165f81815260066020908152604091829020805460ff1916905590519182527fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c9101610568565b5f546001600160a01b03163314610d27575f5ffd5b6001600160a01b03811615610d51575f80546001600160a01b0319166001600160a01b0383161790555b50565b5f546001600160a01b03163314610d69575f5ffd5b6001600160a01b0381165f9081526006602052604090205460ff16610d8c575f5ffd5b5f610d9682610808565b6001600160a01b0383165f908152600260205260408120819055600180549293508392909190610dc79084906114e6565b9091555050604080516001600160a01b0384168152602081018390527f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c69101610a66565b6040610e188160046113ce565b361015610e23575f5ffd5b8115801590610e535750335f9081526005602090815260408083206001600160a01b038716845290915290205415155b15610e5c575f5ffd5b335f8181526005602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6060610ec88160046113ce565b361015610ed3575f5ffd5b6001600160a01b0384165f908152600560209081526040808320338452909152812054600354909190610f159061271090610f0f9087906111cc565b90611207565b9050600454811115610f2657506004545b5f19821015610f5d57610f39828561121b565b6001600160a01b0387165f9081526005602090815260408083203384529091529020555b5f610f68858361121b565b6001600160a01b0388165f90815260026020526040902054909150610f8d908661121b565b6001600160a01b038089165f908152600260205260408082209390935590881681522054610fbb9082611236565b6001600160a01b0387165f908152600260205260409020558115611043575f80546001600160a01b0316815260026020526040902054610ffb9083611236565b5f80546001600160a01b039081168252600260209081526040808420949094559154925185815292811692908a16915f5160206115445f395f51905f52910160405180910390a35b6040518181526001600160a01b0380881691908916905f5160206115445f395f51905f529060200160405180910390a350505050505050565b60406110898160046113ce565b361015611094575f5ffd5b5f6110b0612710610f0f600354866111cc90919063ffffffff16565b90506004548111156110c157506004545b5f6110cc848361121b565b335f908152600260205260409020549091506110e8908561121b565b335f90815260026020526040808220929092556001600160a01b038716815220546111139082611236565b6001600160a01b0386165f908152600260205260409020558115611198575f80546001600160a01b03168152600260205260409020546111539083611236565b5f80546001600160a01b039081168252600260209081526040808420949094559154925185815292169133915f5160206115445f395f51905f52910160405180910390a35b6040518181526001600160a01b0386169033905f5160206115445f395f51905f529060200160405180910390a35050505050565b5f825f036111db57505f610888565b5f6111e683856114f9565b9050826111f38583611510565b146112005761120061152f565b9392505050565b5f806112138385611510565b949350505050565b5f8282111561122c5761122c61152f565b61120082846114e6565b5f8061124283856113ce565b9050838110156112005761120061152f565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146108ab575f5ffd5b5f602082840312156112af575f5ffd5b61120082611289565b5f5f604083850312156112c9575f5ffd5b6112d283611289565b946020939093013593505050565b5f5f5f606084860312156112f2575f5ffd5b6112fb84611289565b925061130960208501611289565b929592945050506040919091013590565b5f5f6040838503121561132b575f5ffd5b61133483611289565b915061134260208401611289565b90509250929050565b5f5f6040838503121561135c575f5ffd5b50508035926020909101359150565b5f6020828403121561137b575f5ffd5b5035919050565b600181811c9082168061139657607f821691505b6020821081036113b457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610888576108886113ba565b5f602082840312156113f1575f5ffd5b5051919050565b6001815b600184111561143357808504811115611417576114176113ba565b600184161561142557908102905b60019390931c9280026113fc565b935093915050565b5f8261144957506001610888565b8161145557505f610888565b816001811461146b576002811461147557611491565b6001915050610888565b60ff841115611486576114866113ba565b50506001821b610888565b5060208310610133831016604e8410600b84101617156114b4575081810a610888565b6114c05f1984846113f8565b805f19048211156114d3576114d36113ba565b029392505050565b5f611200838361143b565b81810381811115610888576108886113ba565b8082028115828204841417610888576108886113ba565b5f8261152a57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52600160045260245ffdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef