[ { "inputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "admin", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "lpTokenReserve", "type": "address" }, { "internalType": "address", "name": "teamReserve", "type": "address" } ], "internalType": "struct ConstructorConfig", "name": "config_", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "DNAlreadyInitialized", "type": "error" }, { "inputs": [], "name": "DNNotInitialized", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "FnSelectorNotRecognized", "type": "error" }, { "inputs": [], "name": "InsufficientAllowance", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InvalidUnit", "type": "error" }, { "inputs": [], "name": "LinkMirrorContractFailed", "type": "error" }, { "inputs": [], "name": "MirrorAddressIsZero", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "SenderNotMirror", "type": "error" }, { "inputs": [], "name": "TokenDoesNotExist", "type": "error" }, { "inputs": [], "name": "TotalSupplyOverflow", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "status", "type": "bool" } ], "name": "SkipNFTSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "MAX_COIN_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_lpTokenReserve", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_teamReserve", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "admin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "quantity", "type": "uint32" } ], "name": "adminAddToBurnPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "price_", "type": "uint256" }, { "internalType": "uint8", "name": "drop_", "type": "uint8" } ], "name": "adminChangePrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "enum Louder.State", "name": "state_", "type": "uint8" } ], "name": "adminChangeState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "adminSetLpTokenReserve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" }, { "internalType": "bool", "name": "_skipNFT", "type": "bool" } ], "name": "adminSetSkipNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "adminSetTeamReserve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "payee", "type": "address" } ], "name": "adminWithdrawETH", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "lock_", "type": "bool" } ], "name": "changeLockState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "currentDrop", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentState", "outputs": [ { "internalType": "enum Louder.State", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "name": "dropData", "outputs": [ { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint256", "name": "supply", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "endDrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "drop_", "type": "uint8" } ], "name": "getDropSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "address_", "type": "address" } ], "name": "getOwnedNFTs", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "getSkipNFT", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "quantity", "type": "uint64" }, { "internalType": "uint8", "name": "drop_", "type": "uint8" } ], "name": "mintPresale", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mirrorERC721", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" } ], "internalType": "struct TransferTo[]", "name": "transfers_", "type": "tuple[]" } ], "name": "multiTransferToEOA", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" }, { "internalType": "bool", "name": "_canTransfer", "type": "bool" } ], "name": "setCanAlwaysTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "skipNFT", "type": "bool" } ], "name": "setSkipNFT", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint256", "name": "dropSupply", "type": "uint256" } ], "name": "startDrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAdmin_", "type": "address" } ], "name": "transferAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unlockForever", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526b033b2e3c9fd0803ce80000006002556006805462ffff00191690553480156200002d57600080fd5b5060405162005be738038062005be7833981016040819052620000509162000d40565b60608101516001600160a01b0381166200008557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200009081620001d1565b506007805460ff60a01b191690556040810151620000ae9062000221565b6060810151620000be90620001d1565b8051600390620000cf908262000ea9565b506020810151600490620000e4908262000ea9565b506006805461ffff191660019081179091556040808301516001600160a01b03166000908152600960205220805460ff1916909117905560808101516200012b9062000273565b60a08101516200013b90620002c8565b6000336040516200014c9062000c19565b6001600160a01b039091168152602001604051809103906000f08015801562000179573d6000803e3d6000fd5b509050620001946000836040015183620002f060201b60201c565b6040820151620001a690600162000491565b600754620001c9906001600160a01b03166a084595161401484a00000062000533565b505062000f9d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec690600090a35050565b600680546301000000600160b81b03191663010000006001600160a01b03841602179055620002a481600162000491565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b600780546001600160a01b0319166001600160a01b038316179055620002a481600162000491565b68a20d6e21d0e52553095468a20d6e21d0e5255308906001600160a01b0316156200032e57604051633ab534b960e21b815260040160405180910390fd5b6001600160a01b03821662000356576040516339a84a7b60e01b815260040160405180910390fd5b630f4599e560005233602052602060006024601c6000865af160016000511416620003895763d125259c6000526004601cfd5b805463ffffffff60201b19166401000000001781556001810180546001600160a01b0384166001600160a01b031990911617905583156200048b576001600160a01b038316620003ec57604051633a954ecd60e21b815260040160405180910390fd5b606084901c69021e19e0c9bab2400000850463fffffffe101715620004245760405163e5cfe95760e01b815260040160405180910390fd5b80546001600160601b038516600160a01b026001600160a01b03918216811783558482166000818152600b850160209081526040822080549095169093178455878152909160008051602062005bc78339815191529082a36200048984600162000491565b505b50505050565b600068a20d6e21d0e52553086001600160a01b0384166000818152600b92909201602090815260408320805486158015865291955060ff6b0100000000000000000000009091049081166002918216159092180218600117927fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d64203939190a2815460ff9091166b0100000000000000000000000260ff60581b199091161790555050565b6001600160a01b0382166200055b57604051633a954ecd60e21b815260040160405180910390fd5b68a20d6e21d0e52553095468a20d6e21d0e5255308906001600160a01b0316620005985760405163040739bf60e41b815260040160405180910390fd5b6001600160a01b0383166000908152600b8201602052604081208254909190620005d4908590600160a01b90046001600160601b031662000f75565b9050600254811115620006415760405162461bcd60e51b815260206004820152602e60248201527f546f74616c20737570706c79206f6620636f696e732063616e206e6f7420657860448201526d31b2b2b21018903134b63634b7b760911b60648201526084016200007c565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915282546001600160601b03600160a01b80830482168801918216026001600160a01b0390921691909117845569021e19e0c9bab2400000810460408301525083546001600160601b038316600160a01b026001600160a01b03909116178455600080620006f8606085901c69021e19e0c9bab2400000860463fffffffe10171515151590565b90508684108117156200071e5760405163e5cfe95760e01b815260040160405180910390fd5b505069021e19e0c9bab24000008204620007388762000979565b62000941576001600160a01b03871660009081526008860160205260408082208654918501519092600a890192600160801b900463ffffffff169162000782908380821191030290565b6080870181905203620007985750505062000941565b60808501516040805160a0810183815260059390931b810160c09081018352918101929092528101815260a0860181905260608b901b6020909101526080850151885463ffffffff600160801b80830482169093018116830263ffffffff60801b19928316178b5560408801518a54911690920291161787556200081d878b620009ca565b63ffffffff9081166060870152885464010000000090041684811180159091021785525b84515b6200087583600019830160011b60008160031c8360601b0180546007841660051b1c63ffffffff1691505092915050565b63ffffffff1615620008935760010184811180159091021762000844565b600181018581118015909102178652600382901c606085901b018054600584901b60e01681811c841863ffffffff16901b189055620008e5838288606001518580600101965062000b3f60201b60201c565b60a08601518051602080830151600885901b178252019052508460400151810362000841578451885463ffffffff9091166401000000000263ffffffff60201b1990911617885560a08501516200093d908962000b81565b5050505b5060008581526001600160a01b0387169060008051602062005bc7833981519152602082a362000971565b505050565b505050505050565b6001600160a01b038116600090815268a20d6e21d0e525531360205260409020546b01000000000000000000000090046002811615159060ff811690600116620009c457823b151591505b50919050565b81546c01000000000000000000000000900463ffffffff1668a20d6e21d0e52553088162000a6457805463ffffffff198116600163ffffffff928316019182169081178355855463ffffffff60601b19166c0100000000000000000000000082021786556000818152600284016020526040902080546001600160a01b0319166001600160a01b03871617905590925062000a6457600080fd5b5092915050565b600183019250825419915080831182171562000a6b578083111562000a975760ff86191691821b90911c905b50801562000b355782820360081b7e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405821960010183166101e07a1412563212c14164235266736f7425221143267a4524367526767760fc7b2aaaaaaaba69a69a6db6db6db2cb2cb2ce739ce73def7bdeffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1717858111878210176000031793505b5050509392505050565b600183038060021c8560601b0180546003831660061b92508463ffffffff168460201b178082851c186001600160401b0316841b821883555050505050505050565b6001810154604083015163263c69d6603f1982019081526020601f19830181905282516001600160a01b039094169360051b6044019282908490602319016000875af16001825114166200048957600081fd5b80821462000bf257815160a01b60a81c825260208201915062000bd4565b50505b919050565b80821462000c115783825260208201915062000bfa565b505092915050565b610d5f8062004e6883390190565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171562000c625762000c6262000c27565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000c935762000c9362000c27565b604052919050565b600082601f83011262000cad57600080fd5b81516001600160401b0381111562000cc95762000cc962000c27565b602062000cdf601f8301601f1916820162000c68565b828152858284870101111562000cf457600080fd5b60005b8381101562000d1457858101830151828201840152820162000cf7565b506000928101909101919091529392505050565b80516001600160a01b038116811462000bf557600080fd5b60006020828403121562000d5357600080fd5b81516001600160401b038082111562000d6b57600080fd5b9083019060c0828603121562000d8057600080fd5b62000d8a62000c3d565b82518281111562000d9a57600080fd5b62000da88782860162000c9b565b82525060208301518281111562000dbe57600080fd5b62000dcc8782860162000c9b565b60208301525062000de06040840162000d28565b604082015262000df36060840162000d28565b606082015262000e066080840162000d28565b608082015262000e1960a0840162000d28565b60a082015295945050505050565b600181811c9082168062000e3c57607f821691505b602082108103620009c457634e487b7160e01b600052602260045260246000fd5b601f8211156200096c576000816000526020600020601f850160051c8101602086101562000e885750805b601f850160051c820191505b81811015620009715782815560010162000e94565b81516001600160401b0381111562000ec55762000ec562000c27565b62000edd8162000ed6845462000e27565b8462000e5d565b602080601f83116001811462000f15576000841562000efc5750858301515b600019600386901b1c1916600185901b17855562000971565b600085815260208120601f198616915b8281101562000f465788860151825594840194600190910190840162000f25565b508582101562000f655787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111562000f9757634e487b7160e01b600052601160045260246000fd5b92915050565b613ebb8062000fad6000396000f3fe6080604052600436106102555760003560e01c806370a0823111610139578063a9059cbb116100b6578063e3163ee51161007a578063e3163ee5146109e9578063ea5cb2a414610a09578063f10e737314610a29578063f2fde38b14610a49578063f851a44014610a69578063fc46a07614610a8957610267565b8063a9059cbb14610934578063b6e6e3aa14610954578063ba486f3514610974578063c1a2c2171461098a578063dd62ed3e146109aa57610267565b80638da5cb5b116100fd5780638da5cb5b1461088357806395d89b41146108a157806398d5fdca146108b65780639b58d54c146108cb578063a79f5b15146108eb57610267565b806370a08231146107f9578063715018a61461081957806372b03ef31461082e57806375829def1461084e57806375be58461461086e57610267565b806330f33395116101d25780634508d6ff116101965780634508d6ff1461073857806348fc03361461074d57806349b01efd1461076d5780634ef41efc146107a05780634fc75ad9146107c657806355f804b3146107d957610267565b806330f3339514610690578063313ce567146106c457806334d7d378146106d857806336d0c1be146106f8578063449a52f81461071857610267565b806318148f1b1161021957806318148f1b146105cc57806318160ddd146105f957806323b872dd14610630578063274e430b146106505780632a6a935d1461067057610267565b806306fdde0314610503578063095ea7b31461052e5780630c3f6acf1461055e5780631245c65314610580578063134f81c5146105ac57610267565b3661026757341561026557600080fd5b005b68a20d6e21d0e525530860003560e01c63e5eb36c88190036102ce5760018201546001600160a01b031633146102b05760405163ce5a776b60e01b815260040160405180910390fd5b6102c4600435602435604435606435610aa9565b6102ce6001610df4565b8063813500fc0361033a5760018201546001600160a01b031633146103065760405163ce5a776b60e01b815260040160405180910390fd5b600435602890815260443560145268a20d6e21d0e525530b60009081526048812091526024351515905561033a6001610df4565b8063e985e9c503610364576000610355600435602435610dfe565b9050610362811515610df4565b505b80636352211e0361038b5761038b61037d600435610e27565b6001600160a01b0316610df4565b806324359879036103a4576103a461037d600435610e54565b8063d10b6e0c036104055760018201546001600160a01b031633146103dc5760405163ce5a776b60e01b815260040160405180910390fd5b60006103ef600435602435604435610eb0565b9050610403816001600160a01b0316610df4565b505b8063081812fc0361041e5761041e61037d600435610f7e565b8063f5b100ea03610462576001600160a01b0360043516600090815268a20d6e21d0e5255313602052604090205461046290600160801b900463ffffffff16610df4565b8063e2c792810361048e5768a20d6e21d0e52553085461048e90600160801b900463ffffffff16610df4565b8063c87b56dd036104d55760206040510160405260006104b56104b060043590565b610fca565b90506020810360408251016000818301526020825280601f01601f191682f35b8063b7a94eb8036104ea576104ea6001610df4565b604051631e085ca760e11b815260040160405180910390fd5b34801561050f57600080fd5b50610518611013565b60405161052591906136db565b60405180910390f35b34801561053a57600080fd5b5061054e610549366004613723565b6110a5565b6040519015158152602001610525565b34801561056a57600080fd5b506105736110bb565b6040516105259190613765565b34801561058c57600080fd5b5060065462010000900460ff165b60405160ff9091168152602001610525565b3480156105b857600080fd5b506102656105c736600461378d565b6110cb565b3480156105d857600080fd5b506105ec6105e73660046137b3565b61110a565b60405161052591906137d0565b34801561060557600080fd5b5068a20d6e21d0e525530854600160a01b90046001600160601b03165b604051908152602001610525565b34801561063c57600080fd5b5061054e61064b366004613814565b61115a565b34801561065c57600080fd5b5061054e61066b3660046137b3565b6111b6565b34801561067c57600080fd5b5061054e61068b366004613865565b6111fe565b34801561069c57600080fd5b506006546106b790630100000090046001600160a01b031681565b6040516105259190613880565b3480156106d057600080fd5b50601261059a565b3480156106e457600080fd5b506102656106f3366004613894565b611212565b34801561070457600080fd5b506007546106b7906001600160a01b031681565b34801561072457600080fd5b50610265610733366004613723565b6114d2565b34801561074457600080fd5b5061026561150a565b34801561075957600080fd5b506102656107683660046137b3565b611695565b34801561077957600080fd5b506106226107883660046138c7565b60ff1660009081526008602052604090206001015490565b3480156107ac57600080fd5b5068a20d6e21d0e5255309546001600160a01b03166106b7565b6102656107d43660046138e2565b61171a565b3480156107e557600080fd5b506102656107f4366004613923565b6119f7565b34801561080557600080fd5b506106226108143660046137b3565b611a2e565b34801561082557600080fd5b50610265611a61565b34801561083a57600080fd5b50610265610849366004613994565b611a75565b34801561085a57600080fd5b506102656108693660046137b3565b611bae565b34801561087a57600080fd5b50610265611c48565b34801561088f57600080fd5b506000546001600160a01b03166106b7565b3480156108ad57600080fd5b50610518611c83565b3480156108c257600080fd5b50610622611c92565b3480156108d757600080fd5b506102656108e63660046137b3565b611cc4565b3480156108f757600080fd5b5061091f6109063660046138c7565b6008602052600090815260409020805460019091015482565b60408051928352602083019190915201610525565b34801561094057600080fd5b5061054e61094f366004613723565b611d01565b34801561096057600080fd5b5061026561096f3660046139c0565b611d52565b34801561098057600080fd5b5061062260025481565b34801561099657600080fd5b506102656109a53660046139e3565b611da1565b3480156109b657600080fd5b506106226109c5366004613a04565b602890815260149190915268a20d6e21d0e525530f60009081526048812091525490565b3480156109f557600080fd5b50610265610a04366004613a3d565b611df8565b348015610a1557600080fd5b50610265610a24366004613865565b611e7d565b348015610a3557600080fd5b50610265610a443660046137b3565b611f48565b348015610a5557600080fd5b50610265610a643660046137b3565b611f8e565b348015610a7557600080fd5b506001546106b7906001600160a01b031681565b348015610a9557600080fd5b50610265610aa4366004613994565b611fc9565b6001600160a01b038316610ad057604051633a954ecd60e21b815260040160405180910390fd5b68a20d6e21d0e52553095468a20d6e21d0e5255308906001600160a01b0316610b0c5760405163040739bf60e41b815260040160405180910390fd5b600a8101600282016000610b3083610b2b600160201b8910890261201e565b612028565b63ffffffff1681526020810191909152604001600020546001600160a01b03878116911614610b715760405162a1148160e81b815260040160405180910390fd5b856001600160a01b0316836001600160a01b031614610bd257610b948684610dfe565b610bd257826001600160a01b0316610bab85610f7e565b6001600160a01b031614610bd257604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038681166000908152600b8401602052604080822092881682529020815469021e19e0c9bab2400000906008860190600160a01b90046001600160601b031680831115610c3957604051631e9acf1760e31b815260040160405180910390fd5b84546001600160601b03918490038216600160a01b9081026001600160a01b039283161787558554818104841686019093160291161783556005860160601b600889901c015460ff89161c60011615610cba57610c9b8660050189600061204c565b6000888152600487016020526040902080546001600160a01b03191690555b6001600160a01b038a166000908152602082905260408120855463ffffffff60801b198116600160801b9182900463ffffffff9081166000190116918202178755909190610d09908390612028565b90506000610d21886000198d01600190811b01612028565b9050610d34838263ffffffff1684612070565b610d4f8860001963ffffffff851601600190811b0183612070565b5050835463ffffffff60801b198116600160801b9182900463ffffffff908116600181019091169092021785556001600160a01b038b166000908152602084905260409020909150610da290828b612070565b610db7868a610db1878e61209b565b84612128565b50816000528860601b60601c8a60601b60601c600080516020613e6683398151915260206000a3610de8565b505050565b50505050505050505050565b8060005260206000f35b6028818152601483905268a20d6e21d0e525530b60009081526048812091525415155b92915050565b6000610e3282612187565b610e4f5760405163677510db60e11b815260040160405180910390fd5b610e21825b600068a20d6e21d0e525530868a20d6e21d0e525530a82610e8968a20d6e21d0e5255312610b2b600160201b8810880261201e565b63ffffffff1681526020810191909152604001600020546001600160a01b03169392505050565b600068a20d6e21d0e525530868a20d6e21d0e525530a82610ee568a20d6e21d0e5255312610b2b600160201b8910890261201e565b63ffffffff1681526020810191909152604001600020546001600160a01b03908116925083168214610f3857610f1b8284610dfe565b610f38576040516367d9dca160e11b815260040160405180910390fd5b6000848152600482016020526040902080546001600160a01b0319166001600160a01b038716908117909155610f769060058301908690151561204c565b509392505050565b6000610f8982612187565b610fa65760405163677510db60e11b815260040160405180910390fd5b50600090815268a20d6e21d0e525530c60205260409020546001600160a01b031690565b606060058054610fd990613a9f565b15905061100e576005610feb836121a4565b604051602001610ffc929190613ad3565b60405160208183030381529060405290505b919050565b60606003805461102290613a9f565b80601f016020809104026020016040519081016040528092919081815260200182805461104e90613a9f565b801561109b5780601f106110705761010080835404028352916020019161109b565b820191906000526020600020905b81548152906001019060200180831161107e57829003601f168201915b5050505050905090565b60006110b2338484612236565b50600192915050565b600754600160a01b900460ff1690565b6001546001600160a01b031633146110fe5760405162461bcd60e51b81526004016110f590613b5a565b60405180910390fd5b61110781612298565b50565b6001600160a01b038116600090815268a20d6e21d0e5255313602052604081205460609168a20d6e21d0e525530891600160801b900463ffffffff16611151858383612437565b95945050505050565b60065460009060ff16158061118757506001600160a01b03841660009081526009602052604090205460ff165b6111a35760405162461bcd60e51b81526004016110f590613b9c565b6111ae8484846124ed565b949350505050565b6001600160a01b038116600090815268a20d6e21d0e52553136020526040902054600160581b90046002811615159060ff8116906001166111f857823b151591505b50919050565b600061120a338361255b565b506001919050565b6001546001600160a01b0316331461123c5760405162461bcd60e51b81526004016110f590613b5a565b60016112466110bb565b60028111156112575761125761374f565b0361129f5760405162461bcd60e51b8152602060048201526018602482015277412064726f7020697320616c72656164792061637469766560401b60448201526064016110f5565b6006805462010000900460ff169060026112b883613be9565b91906101000a81548160ff021916908360ff160217905550506000600860006001600660029054906101000a900460ff166112f39190613c08565b60ff1681526020810191909152604001600020600101546113149083613c21565b905060025481111561137b5760405162461bcd60e51b815260206004820152602a60248201527f546f74616c20737570706c792063616e6e6f742065786365656420312062696c6044820152696c696f6e20636f696e7360b01b60648201526084016110f5565b600061139169021e19e0c9bab240000084613c4a565b9050600081116114035760405162461bcd60e51b815260206004820152603760248201527f44726f7020737570706c7920746f6f206c6f772c206e656564206174206c656160448201527673742031204e465420776f727468206f6620636f696e7360481b60648201526084016110f5565b60065462010000900460ff1660009081526008602052604081208581556001810184905590806114348660056125ed565b915091508161144557611445613c6c565b60065461146290630100000090046001600160a01b031682612621565b6000806114708860036129f9565b915091508161148157611481613c6c565b61148c8160146125ed565b90945092508361149e5761149e613c6c565b6007546114b4906001600160a01b031684612621565b50506007805460ff60a01b1916600160a01b17905550505050505050565b6001546001600160a01b031633146114fc5760405162461bcd60e51b81526004016110f590613b5a565b6115068282612621565b5050565b6001546001600160a01b031633146115345760405162461bcd60e51b81526004016110f590613b5a565b600061153e6110bb565b600281111561154f5761154f61374f565b0361156c5760405162461bcd60e51b81526004016110f590613c82565b60026115766110bb565b60028111156115875761158761374f565b036115cd5760405162461bcd60e51b8152602060048201526016602482015275111c9bdc081a185cc8185b1c9958591e48195b99195960521b60448201526064016110f5565b68a20d6e21d0e5255308805460065462010000900460ff16600090815260086020526040812060010154600160201b90920463ffffffff16919069021e19e0c9bab240000061161c9083613c4a565b9050600061162a8483613cab565b905061163581612298565b8454600160a01b90046001600160601b031683111561167b57845460009061166d90600160a01b90046001600160601b031685613cc8565b90506116793382612621565b505b50506007805460ff60a01b1916600160a11b179055505050565b6001546001600160a01b031633146116bf5760405162461bcd60e51b81526004016110f590613b5a565b6007546001600160a01b03166116d482612a42565b60006116df82611a2e565b90506116ec828483612a8c565b6116f782600061255b565b506001600160a01b03166000908152600960205260409020805460ff1916905550565b60006117246110bb565b60028111156117355761173561374f565b036117825760405162461bcd60e51b815260206004820152601a60248201527f50726573616c65206861736e277420737461727465642079657400000000000060448201526064016110f5565b600261178c6110bb565b600281111561179d5761179d61374f565b036117de5760405162461bcd60e51b8152602060048201526011602482015270141c995cd85b19481a185cc8195b991959607a1b60448201526064016110f5565b60065460ff82811662010000909204161461183b5760405162461bcd60e51b815260206004820152601c60248201527f57726f6e672070726573616c652073746167652073656c65637465640000000060448201526064016110f5565b816001600160401b03166000036118895760405162461bcd60e51b815260206004820152601260248201527143616e2774206d696e74203020636f696e7360701b60448201526064016110f5565b60006118a66001600160401b038416670de0b6b3a7640000613cdb565b68a20d6e21d0e52553088054919250906000906118d4908490600160a01b90046001600160601b0316613c21565b9050600860006118ed60065460ff620100009091041690565b60ff1660ff1681526020019081526020016000206001015481111561194c5760405162461bcd60e51b8152602060048201526015602482015274139bdd08195b9bdd59da0818dbda5b9cc81b19599d605a1b60448201526064016110f5565b60008061198d876001600160401b03166008600061197360065460ff620100009091041690565b60ff168152602081019190915260400160002054906129f9565b915091508161199e5761199e613c6c565b348111156119e45760405162461bcd60e51b8152602060048201526013602482015272139bdd08195b9bdd59da08115512081cd95b9d606a1b60448201526064016110f5565b6119ee3386612621565b50505050505050565b6001546001600160a01b03163314611a215760405162461bcd60e51b81526004016110f590613b5a565b6005610de3828483613d50565b6001600160a01b0316600090815268a20d6e21d0e52553136020526040902054600160a01b90046001600160601b031690565b611a696132ac565b611a7360006132d9565b565b6001546001600160a01b03163314611a9f5760405162461bcd60e51b81526004016110f590613b5a565b6006546001600160a01b03838116630100000090920416148015611ac1575080155b611b275760405162461bcd60e51b815260206004820152603160248201527f4c5020546f6b656e20526573657276652063616e206e6f742062652061626c65604482015270103a37903932b1b2b4bb329027232a399760791b60648201526084016110f5565b6007546001600160a01b038381169116148015611b42575080155b611ba45760405162461bcd60e51b815260206004820152602d60248201527f5465616d20526573657276652063616e206e6f742062652061626c6520746f2060448201526c3932b1b2b4bb329027232a399760991b60648201526084016110f5565b611506828261255b565b6001546001600160a01b03163314611bd85760405162461bcd60e51b81526004016110f590613b5a565b6001600160a01b038116611c3f5760405162461bcd60e51b815260206004820152602860248201527f41646d696e61626c653a206e65772061646d696e20697320746865207a65726f604482015267206164647265737360c01b60648201526084016110f5565b61110781613329565b6001546001600160a01b03163314611c725760405162461bcd60e51b81526004016110f590613b5a565b6006805461ffff1916610100179055565b60606004805461102290613a9f565b600060086000611cab60065460ff620100009091041690565b60ff168152602081019190915260400160002054919050565b6001546001600160a01b03163314611cee5760405162461bcd60e51b81526004016110f590613b5a565b6111076001600160a01b0382164761337b565b60065460009060ff161580611d2557503360009081526009602052604090205460ff165b611d415760405162461bcd60e51b81526004016110f590613b9c565b611d4b8383613412565b9392505050565b6001546001600160a01b03163314611d7c5760405162461bcd60e51b81526004016110f590613b5a565b611d8a82633b9aca00613cdb565b60ff90911660009081526008602052604090205550565b6001546001600160a01b03163314611dcb5760405162461bcd60e51b81526004016110f590613b5a565b6007805482919060ff60a01b1916600160a01b836002811115611df057611df061374f565b021790555050565b60008060005b83811015611e7657848482818110611e1857611e18613e0f565b9050604002016020016020810190611e3091906137b3565b9250848482818110611e4457611e44613e0f565b905060400201600001359150826001600160a01b03163b600003611e6e57611e6c8383611d01565b505b600101611dfe565b5050505050565b6001546001600160a01b03163314611ea75760405162461bcd60e51b81526004016110f590613b5a565b600654610100900460ff1615611f355760405162461bcd60e51b815260206004820152604760248201527f5472616e73666572732063616e206e6f74206265206c6f636b6564206167616960448201527f6e2c206f6e636520746865792068617665206265656e20756e6c6f636b6564206064820152663337b932bb32b960c91b608482015260a4016110f5565b6006805460ff1916911515919091179055565b6001546001600160a01b03163314611f725760405162461bcd60e51b81526004016110f590613b5a565b600654630100000090046001600160a01b03166116d48261341f565b611f966132ac565b6001600160a01b038116611fc0576000604051631e4fbdf760e01b81526004016110f59190613880565b611107816132d9565b6001546001600160a01b03163314611ff35760405162461bcd60e51b81526004016110f590613b5a565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000190160011b90565b60008160031c8360601b0180546007841660051b1c63ffffffff1691505092915050565b8160081c8360601b018260ff16821515811b6001821b198354161782555050505050565b8160031c8360601b016007831660051b815480821c841863ffffffff16821b81188355505050505050565b8154600160601b900463ffffffff1668a20d6e21d0e52553088161212157805463ffffffff198116600163ffffffff928316019182169081178355855463ffffffff60601b1916600160601b82021786556000818152600284016020526040902080546001600160a01b0319166001600160a01b03871617905590925061212157600080fd5b5092915050565b600183038060021c8560601b0180546003831660061b92508463ffffffff168460201b178082851c186001600160401b0316841b821883555050505050505050565b80821461217f5783825260208201915061216a565b505092915050565b60008061219383610e54565b6001600160a01b0316141592915050565b606060006121b18361344e565b60010190506000816001600160401b038111156121d0576121d0613cf2565b6040519080825280601f01601f1916602001820160405280156121fa576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461220457509392505050565b6028828152601484905268a20d6e21d0e525530f600090815260488120915281905560008181526001600160a01b0380841691908516907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590602090a3505050565b60016122a26110bb565b60028111156122b3576122b361374f565b146122d05760405162461bcd60e51b81526004016110f590613c82565b60065462010000900460ff1660009081526008602052604081206001015468a20d6e21d0e52553089169021e19e0c9bab240000061230e9083613c4a565b8354909150600160201b900463ffffffff16600061232c8683613e25565b9050828163ffffffff1611156123a05760405162461bcd60e51b815260206004820152603360248201527f43616e2774206164642074686174206d616e79204e46547320746f206275726e604482015272020706f6f6c20666f7220746869732064726f7606c1b60648201526084016110f5565b8454600160601b900463ffffffff165b6123da60098701826123c181613e42565b935063ffffffff16856123d381613e42565b9650612070565b8163ffffffff168363ffffffff1611156123b05785546fffffffff00000000ffffffff000000001916600160601b63ffffffff9283160267ffffffff00000000191617600160201b93909116929092029190911790935550505050565b6001600160a01b038316600090815268a20d6e21d0e52553106020908152604080832068a20d6e21d0e525531390925291829020549151600160801b90920463ffffffff16838111938118939093029092189168a20d6e21d0e525530890845b848110156124d3578060031c8260601b0180546007831660051b1c63ffffffff1690508087830360051b60208701015250600181019050612497565b9490940380835260051b8201602001604052509392505050565b336028908152601484905268a20d6e21d0e525530f6000908152604881209181905281549091906000198114612544578084111561253e576040516313be252b60e01b815260040160405180910390fd5b83810382555b61254f868686612a8c565b50600195945050505050565b600068a20d6e21d0e52553086001600160a01b0384166000818152600b92909201602090815260408320805486158015865291955060ff600160581b9091049081166002918216159092180218600117927fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d64203939190a2815460ff909116600160581b0260ff60581b199091161790555050565b600080826000036126035750600090508061261a565b600183858161261457612614613c34565b04915091505b9250929050565b6001600160a01b03821661264857604051633a954ecd60e21b815260040160405180910390fd5b68a20d6e21d0e52553095468a20d6e21d0e5255308906001600160a01b03166126845760405163040739bf60e41b815260040160405180910390fd5b6001600160a01b0383166000908152600b82016020526040812082549091906126be908590600160a01b90046001600160601b0316613c21565b90506002548111156127295760405162461bcd60e51b815260206004820152602e60248201527f546f74616c20737570706c79206f6620636f696e732063616e206e6f7420657860448201526d31b2b2b21018903134b63634b7b760911b60648201526084016110f5565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915282546001600160601b03600160a01b80830482168801918216026001600160a01b0390921691909117845569021e19e0c9bab2400000810460408301525083546001600160601b038316600160a01b026001600160a01b039091161784556000806127df606085901c69021e19e0c9bab2400000860463fffffffe10171515151590565b90508684108117156128045760405163e5cfe95760e01b815260040160405180910390fd5b505069021e19e0c9bab2400000820461281c876111b6565b6129cc576001600160a01b03871660009081526008860160205260408082208654918501519092600a890192600160801b900463ffffffff1691828103908310026080870181905203612871575050506129cc565b60808501516040805160a0810183815260059390931b810160c09081018352918101929092528101815260a0860181905260608b901b6020909101526080850151885463ffffffff600160801b80830482169093018116830263ffffffff60801b19928316178b5560408801518a54911690920291161787556128f4878b61209b565b63ffffffff90811660608701528854600160201b90041684811180159091021785525b84515b61292783610b2b8361201e565b63ffffffff16156129435760010184811180159091021761291a565b60018101858111801590910217865261295d848383612070565b6129738382886060015185806001019650612128565b60a08601518051602080830151600885901b1782520190525084604001518103612917578451885463ffffffff909116600160201b0267ffffffff000000001990911617885560a08501516129c890896135f7565b5050505b5060008581526001600160a01b03871690600080516020613e66833981519152602082a35b505050505050565b60008083600003612a10575060019050600061261a565b83830283858281612a2357612a23613c34565b0414612a3657600080925092505061261a565b60019590945092505050565b600780546001600160a01b0319166001600160a01b038316179055612a6881600161255b565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6001600160a01b038216612ab357604051633a954ecd60e21b815260040160405180910390fd5b6001600160a01b03838116600090815268a20d6e21d0e525531360205260408082208584168352912068a20d6e21d0e52553095468a20d6e21d0e52553089316612b105760405163040739bf60e41b815260040160405180910390fd5b612b8660405180610180016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600063ffffffff16815260200160008152602001600063ffffffff16815260200160008019168152602001600080191681525090565b825463ffffffff600160801b808304821660408501528454041660608301526001600160601b03600160a01b9091041680861115612bd757604051631e9acf1760e31b815260040160405180910390fd5b83546001600160601b0391879003828116600160a01b9081026001600160a01b03938416178755855481810485168a0194851690910292169190911784556040830151909190612c4a90612c3269021e19e0c9bab240000090565b8481612c4057612c40613c34565b0480821191030290565b8352612c55886111b6565b612ca457876001600160a01b0316896001600160a01b031603612c8057825160408401510360608401525b612c9e69021e19e0c9bab24000008204846060015180821191030290565b60208401525b5050612cae600190565b15612e99576000612ce08260400151612cd584600001518560200151808218908211021890565b808218908211021890565b905080612ced5750612e99565b8151819003825260208201805182900390526001600160a01b0380881690891603612d22576060820180519091019052612e99565b6040805163144027d3818301526001600160a01b038a8116606080840191909152908a16608083015260a082015260c0810183815260e0600585901b83018101909352602082015290810181526101408301526001600160a01b038089166000908152600887016020526040808220928a1682529020612da2858a61209b565b63ffffffff1660e08501526060840151928301925b6000612dd184876040018051600190039081815250612028565b63ffffffff169050612de4838383612070565b612df789600a01828860e0015185612128565b61014086015180518281526020019052600881901c60058a0160601b015460ff82161c60011615612e5057612e318960050182600061204c565b600081815260048a016020526040902080546001600160a01b03191690555b50838160010191508103612db75760608501819052855463ffffffff918216600160801b90810263ffffffff60801b199283161788556040870151895493160291161786555050505b805160208201518554600160801b80820463ffffffff90811684018590036080870181905263ffffffff60801b19909316921602178655604080519190920160a0820181815260059190911b820160c09081018452928201529081018152600a8501906101608301528454600160601b900463ffffffff1661012083015281511561307057610160820151600160608a901b81176020928301526001600160a01b038a16600090815260088801909252604091829020918401518451810360a08601819052875463ffffffff60801b1916600160801b63ffffffff909216919091021787556101208501519192915b600019909101906000612f9b8484612028565b63ffffffff169050612fb08682600080612128565b6101608701518051602080830151600885901b1782520190528415612fe957612fe98a6009018380600101945063ffffffff1683612070565b600881901c60058b0160601b015460ff82161c60011615613032576130138a60050182600061204c565b600081815260048b016020526040902080546001600160a01b03191690555b508560a001518203612f8857831561306b5763ffffffff81166101208701819052895463ffffffff60601b1916600160601b9091021789555b505050505b60208201511561324c57610160820151606088901b6020909101526001600160a01b038716600090815260088601602052604090206130af848961209b565b63ffffffff1660e0840152600069021e19e0c9bab24000008754600160a01b90046001600160601b0316816130e6576130e6613c34565b885463ffffffff600160201b909104811661010088015260608701516020880151810160c089018190528954908316600160801b0263ffffffff60801b199091161789558a549390920493509091600160401b9004165b600086610120015163ffffffff168263ffffffff161461317d576131708a6009018380600101945063ffffffff16612028565b63ffffffff1690506131c2565b506101008601515b61319286610b2b8361201e565b63ffffffff16156131ae57600101838111801590910217613185565b600181018481118015909102176101008801525b6131cd858483612070565b6131e386828960e0015186806001019750612128565b6101608701518051602080830151600885901b178252019052508560c00151820361313d57885461010087015163ffffffff908116600160201b0267ffffffff000000001991909316600160401b02166bffffffffffffffff0000000019909116171788555050505b61014082015115613266576132668261014001518661366c565b6101608201511561328057613280826101600151866135f7565b50846000528560601b60601c8760601b60601c600080516020613e6683398151915260206000a36119ee565b6000546001600160a01b03163314611a73573360405163118cdaa760e01b81526004016110f59190613880565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec690600090a35050565b8047101561339e573060405163cd78605960e01b81526004016110f59190613880565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146133eb576040519150601f19603f3d011682016040523d82523d6000602084013e6133f0565b606091505b5050905080610de357604051630a12f52160e11b815260040160405180910390fd5b60006110b2338484612a8c565b600680546301000000600160b81b03191663010000006001600160a01b03841602179055612a6881600161255b565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061348d5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106134b9576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106134d757662386f26fc10000830492506010015b6305f5e10083106134ef576305f5e100830492506008015b612710831061350357612710830492506004015b60648310613515576064830492506002015b600a8310610e215760010192915050565b600183019250825419915080831182171561352657808311156135505760ff86191691821b90911c905b5080156135ed5782820360081b7e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405821960010183166101e07a1412563212c14164235266736f7425221143267a4524367526767760fc7b2aaaaaaaba69a69a6db6db6db2cb2cb2ce739ce73def7bdeffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1717858111878210176000031793505b5050509392505050565b6001810154604083015163263c69d6603f1982019081526020601f19830181905282516001600160a01b039094169360051b6044019282908490602319016000875af1600182511416611e7657600081fd5b80821461366557815160a01b60a81c8252602082019150613649565b5050919050565b60008160010160009054906101000a90046001600160a01b031690506020830151805160051b60840160808203915060208282601c85016000875af1600183511416611e7657600082fd5b60005b838110156136d25781810151838201526020016136ba565b50506000910152565b60208152600082518060208401526136fa8160408501602087016136b7565b601f01601f19169190910160400192915050565b6001600160a01b038116811461110757600080fd5b6000806040838503121561373657600080fd5b82356137418161370e565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061378757634e487b7160e01b600052602160045260246000fd5b91905290565b60006020828403121561379f57600080fd5b813563ffffffff81168114611d4b57600080fd5b6000602082840312156137c557600080fd5b8135611d4b8161370e565b6020808252825182820181905260009190848201906040850190845b81811015613808578351835292840192918401916001016137ec565b50909695505050505050565b60008060006060848603121561382957600080fd5b83356138348161370e565b925060208401356138448161370e565b929592945050506040919091013590565b8035801515811461100e57600080fd5b60006020828403121561387757600080fd5b611d4b82613855565b6001600160a01b0391909116815260200190565b600080604083850312156138a757600080fd5b50508035926020909101359150565b803560ff8116811461100e57600080fd5b6000602082840312156138d957600080fd5b611d4b826138b6565b600080604083850312156138f557600080fd5b82356001600160401b038116811461390c57600080fd5b915061391a602084016138b6565b90509250929050565b6000806020838503121561393657600080fd5b82356001600160401b038082111561394d57600080fd5b818501915085601f83011261396157600080fd5b81358181111561397057600080fd5b86602082850101111561398257600080fd5b60209290920196919550909350505050565b600080604083850312156139a757600080fd5b82356139b28161370e565b915061391a60208401613855565b600080604083850312156139d357600080fd5b8235915061391a602084016138b6565b6000602082840312156139f557600080fd5b813560038110611d4b57600080fd5b60008060408385031215613a1757600080fd5b8235613a228161370e565b91506020830135613a328161370e565b809150509250929050565b60008060208385031215613a5057600080fd5b82356001600160401b0380821115613a6757600080fd5b818501915085601f830112613a7b57600080fd5b813581811115613a8a57600080fd5b8660208260061b850101111561398257600080fd5b600181811c90821680613ab357607f821691505b6020821081036111f857634e487b7160e01b600052602260045260246000fd5b6000808454613ae181613a9f565b60018281168015613af95760018114613b0e57613b3d565b60ff1984168752821515830287019450613b3d565b8860005260208060002060005b85811015613b345781548a820152908401908201613b1b565b50505082870194505b505050508351613b518183602088016136b7565b01949350505050565b60208082526022908201527f41646d696e61626c653a2063616c6c6572206973206e6f74207468652061646d60408201526134b760f11b606082015260800190565b6020808252601f908201527f5472616e7366657273206172652063757272656e746c79206c6f636b65642e00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103613bff57613bff613bd3565b60010192915050565b60ff8281168282160390811115610e2157610e21613bd3565b80820180821115610e2157610e21613bd3565b634e487b7160e01b600052601260045260246000fd5b600082613c6757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052600160045260246000fd5b6020808252600f908201526e4e6f206163746976652044726f707360881b604082015260600190565b63ffffffff82811682821603908082111561212157612121613bd3565b81810381811115610e2157610e21613bd3565b8082028115828204841417610e2157610e21613bd3565b634e487b7160e01b600052604160045260246000fd5b601f821115610de3576000816000526020600020601f850160051c81016020861015613d315750805b601f850160051c820191505b818110156129f157828155600101613d3d565b6001600160401b03831115613d6757613d67613cf2565b613d7b83613d758354613a9f565b83613d08565b6000601f841160018114613daf5760008515613d975750838201355b600019600387901b1c1916600186901b178355611e76565b600083815260209020601f19861690835b82811015613de05786850135825560209485019460019092019101613dc0565b5086821015613dfd5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b634e487b7160e01b600052603260045260246000fd5b63ffffffff81811683821601908082111561212157612121613bd3565b600063ffffffff808316818103613e5b57613e5b613bd3565b600101939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203b1c163230b7c31bd7b2494d4c96b2dba27abeff5081be3170a81f18d290610c64736f6c63430008180033608060405234801561001057600080fd5b50604051610d5f380380610d5f83398101604081905261002f9161005c565b683602298b8c10b0123180546001600160a01b0319166001600160a01b039290921691909117905561008c565b60006020828403121561006e57600080fd5b81516001600160a01b038116811461008557600080fd5b9392505050565b610cc48061009b6000396000f3fe6080604052600436106100ed5760003560e01c80636cef16e6116100855780636cef16e61461042357806370a08231146104385780638da5cb5b1461045857806395d89b411461047e57806397e5311c14610493578063a22cb465146104a8578063b88d4fde146104c8578063c87b56dd146104db578063e985e9c5146104fb576100ff565b806301ffc9a7146102db57806306fdde031461032d578063081812fc1461034f578063095ea7b31461038757806318160ddd1461039a57806323b872dd146103bd57806324359879146103d057806342842e0e146103f05780636352211e14610403576100ff565b366100ff5734156100fd57600080fd5b005b683602298b8c10b0123060003560e01c63263c69d68190036101a35781546001600160a01b0316331461014557604051631b1e598960e11b815260040160405180910390fd5b600435602401602081033560051b81015b8082146101965781358060601c816001168260a01b60a81c81158302828402600080516020610c6f833981519152600038a4505050816020019150610156565b5050600160005260206000f35b8063144027d3036102275781546001600160a01b031633146101d857604051631b1e598960e11b815260040160405180910390fd5b600435602435604435602401602081033560051b81015b8082146102185781358385600080516020610c6f833981519152600038a48160200191506101ef565b50505050600160005260206000f35b80630f4599e5036102c25760018201546001600160a01b03161561027d5760018201546001600160a01b03166004356001600160a01b03161461027d576040516362cf623d60e11b815260040160405180910390fd5b81546001600160a01b0316156102a657604051635fb2b52360e11b815260040160405180910390fd5b81546001600160a01b0319163317825560016000908152602090f35b604051631e085ca760e11b815260040160405180910390fd5b3480156102e757600080fd5b506103186102f6366004610a2e565b6301ffc9a760e09190911c9081146380ac58cd821417635b5e139f9091141790565b60405190151581526020015b60405180910390f35b34801561033957600080fd5b5061034261051b565b6040516103249190610a5f565b34801561035b57600080fd5b5061036f61036a366004610aae565b610531565b6040516001600160a01b039091168152602001610324565b6100fd610395366004610ae3565b610549565b3480156103a657600080fd5b506103af6105cf565b604051908152602001610324565b6100fd6103cb366004610b0d565b6105e1565b3480156103dc57600080fd5b5061036f6103eb366004610aae565b61065e565b6100fd6103fe366004610b0d565b610670565b34801561040f57600080fd5b5061036f61041e366004610aae565b6106a2565b34801561042f57600080fd5b506103186106b4565b34801561044457600080fd5b506103af610453366004610b49565b61076f565b34801561046457600080fd5b50683602298b8c10b01232546001600160a01b031661036f565b34801561048a57600080fd5b5061034261078a565b34801561049f57600080fd5b5061036f61079b565b3480156104b457600080fd5b506100fd6104c3366004610b64565b6107d0565b6100fd6104d6366004610ba0565b610853565b3480156104e757600080fd5b506103426104f6366004610aae565b6108ae565b34801561050757600080fd5b50610318610516366004610c3b565b6108c8565b606061052c6306fdde0360006108f4565b905090565b600061054363081812fc83600061095a565b92915050565b600061055361079b565b90508260601b60601c925060405163d10b6e0c600052836020528260405233606052602060006064601c34865af1601f3d1116610593573d6000823e3d81fd5b806040525060006060528183600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600038a4505050565b600061052c63e2c7928160008061095a565b60006105eb61079b565b90508360601b60601c93508260601b60601c925060405163e5eb36c881528460208201528360408201528260608201523360808201526020816084601c840134865af1600182511416610641573d6000823e3d81fd5b50818385600080516020610c6f833981519152600038a450505050565b6000610543632435987983600061095a565b61067b8383836105e1565b813b1561069d5761069d838383604051806020016040528060008152506109a2565b505050565b6000610543636352211e83600061095a565b60008060006106c161079b565b9050638da5cb5b600052602060006004601c845afa600c51683602298b8c10b0123254601f3d119290921660609190911c029250683602298b8c10b01230906001600160a01b039081169084168114610764576002820180546001600160a01b0319166001600160a01b0386811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35b600194505050505090565b600061054363f5b100ea836001600160a01b0316600061095a565b606061052c6395d89b4160006108f4565b683602298b8c10b01230546001600160a01b0316806107cd57604051632d9523d760e11b815260040160405180910390fd5b90565b60006107da61079b565b90508260601b60601c925060405163813500fc6000528360205282151560405233606052602060006064601c34865af16001600051141661081e573d6000823e3d81fd5b83337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a36040525050600060605250565b61085e8585856105e1565b833b156108a7576108a785858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109a292505050565b5050505050565b60606108b9826106a2565b5061054363c87b56dd836108f4565b60006108eb63e985e9c5846001600160a01b0316846001600160a01b031661095a565b15159392505050565b6060600061090061079b565b9050604051915083600052826020526000806024601c845afa610926573d6000833e3d82fd5b60206000803e6020600051833e8151602060005101602084013e815160208301016000815260208101604052505092915050565b60008061096561079b565b9050604051856000528460205283604052602060006044601c855afa601f3d1116610993573d6000823e3d81fd5b60405250506000519392505050565b60405163150b7a028082523360208301528560601b60601c604083015283606083015260808083015282518060a084015280156109e9578060c08401826020870160045afa505b60208360a48301601c860160008a5af1610a0c573d15610a0c573d6000843e3d83fd5b508060e01b825114610a265763d1a57ed66000526004601cfd5b505050505050565b600060208284031215610a4057600080fd5b81356001600160e01b031981168114610a5857600080fd5b9392505050565b60006020808352835180602085015260005b81811015610a8d57858101830151858201604001528201610a71565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215610ac057600080fd5b5035919050565b80356001600160a01b0381168114610ade57600080fd5b919050565b60008060408385031215610af657600080fd5b610aff83610ac7565b946020939093013593505050565b600080600060608486031215610b2257600080fd5b610b2b84610ac7565b9250610b3960208501610ac7565b9150604084013590509250925092565b600060208284031215610b5b57600080fd5b610a5882610ac7565b60008060408385031215610b7757600080fd5b610b8083610ac7565b915060208301358015158114610b9557600080fd5b809150509250929050565b600080600080600060808688031215610bb857600080fd5b610bc186610ac7565b9450610bcf60208701610ac7565b935060408601359250606086013567ffffffffffffffff80821115610bf357600080fd5b818801915088601f830112610c0757600080fd5b813581811115610c1657600080fd5b896020828501011115610c2857600080fd5b9699959850939650602001949392505050565b60008060408385031215610c4e57600080fd5b610c5783610ac7565b9150610c6560208401610ac7565b9050925092905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122075d9dd627cf493a8c3d709a1ff261f6f267246b831b12e78fe5a146a852196a164736f6c63430008180033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000007c7391247c0d16b90b3e340bcf85a3d5e7f1714500000000000000000000000058feb550bf08c4c04d239882bce23f56c567d3c900000000000000000000000058ebfb5811825cb2dbb2c3dac4e7e343e543f0b0000000000000000000000000f50720fb4675ef5e68ad95f31b27005a73192e3b00000000000000000000000000000000000000000000000000000000000000064c4f55444552000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064c4f554445520000000000000000000000000000000000000000000000000000
0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000007c7391247c0d16b90b3e340bcf85a3d5e7f1714500000000000000000000000058feb550bf08c4c04d239882bce23f56c567d3c900000000000000000000000058ebfb5811825cb2dbb2c3dac4e7e343e543f0b0000000000000000000000000f50720fb4675ef5e68ad95f31b27005a73192e3b00000000000000000000000000000000000000000000000000000000000000064c4f55444552000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064c4f554445520000000000000000000000000000000000000000000000000000