[ { "inputs": [ { "internalType": "uint8", "name": "decimals_", "type": "uint8" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "UUPSUnauthorizedCallContext", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "slot", "type": "bytes32" } ], "name": "UUPSUnsupportedProxiableUUID", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UPGRADE_INTERFACE_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "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": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "admin", "type": "address" }, { "internalType": "address", "name": "minter", "type": "address" }, { "internalType": "address", "name": "upgrader", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60c0604052306080523480156200001557600080fd5b50604051620021d7380380620021d7833981016040819052620000389162000102565b620000426200004e565b60ff1660a0526200012e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156200009f5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000ff5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6000602082840312156200011557600080fd5b815160ff811681146200012757600080fd5b9392505050565b60805160a0516120756200016260003960006102e7015260008181610ea501528181610ece015261103301526120756000f3fe6080604052600436106101b75760003560e01c80637ecebe00116100ec578063ad3cb1cc1161008a578063d547741f11610064578063d547741f146104f3578063db0ed6a014610513578063dd62ed3e14610533578063f72c0d8b1461055357600080fd5b8063ad3cb1cc14610480578063d505accf146104b1578063d5391393146104d157600080fd5b806395d89b41116100c657806395d89b41146104165780639dc29fac1461042b578063a217fddf1461044b578063a9059cbb1461046057600080fd5b80637ecebe00146103ae57806384b0196e146103ce57806391d14854146103f657600080fd5b8063313ce5671161015957806340c10f191161013357806340c10f19146103465780634f1ef2861461036657806352d1902d1461037957806370a082311461038e57600080fd5b8063313ce567146102d35780633644e5151461031157806336568abe1461032657600080fd5b806318160ddd1161019557806318160ddd1461023357806323b872dd14610271578063248a9ca3146102915780632f2ff15d146102b157600080fd5b806301ffc9a7146101bc57806306fdde03146101f1578063095ea7b314610213575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046119a0565b610587565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b506102066105be565b6040516101e89190611a1a565b34801561021f57600080fd5b506101dc61022e366004611a49565b610667565b34801561023f57600080fd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b6040519081526020016101e8565b34801561027d57600080fd5b506101dc61028c366004611a73565b61067f565b34801561029d57600080fd5b506102636102ac366004611aaf565b6106a5565b3480156102bd57600080fd5b506102d16102cc366004611ac8565b6106c7565b005b3480156102df57600080fd5b5060405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101e8565b34801561031d57600080fd5b506102636106e9565b34801561033257600080fd5b506102d1610341366004611ac8565b6106f8565b34801561035257600080fd5b506102d1610361366004611a49565b610730565b6102d1610374366004611b80565b610752565b34801561038557600080fd5b50610263610771565b34801561039a57600080fd5b506102636103a9366004611be2565b61078e565b3480156103ba57600080fd5b506102636103c9366004611be2565b6107c1565b3480156103da57600080fd5b506103e36107cc565b6040516101e89796959493929190611bfd565b34801561040257600080fd5b506101dc610411366004611ac8565b61087d565b34801561042257600080fd5b506102066108b5565b34801561043757600080fd5b506102d1610446366004611a49565b6108f4565b34801561045757600080fd5b50610263600081565b34801561046c57600080fd5b506101dc61047b366004611a49565b610916565b34801561048c57600080fd5b50610206604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156104bd57600080fd5b506102d16104cc366004611c96565b610924565b3480156104dd57600080fd5b5061026360008051602061200083398151915281565b3480156104ff57600080fd5b506102d161050e366004611ac8565b610a7d565b34801561051f57600080fd5b506102d161052e366004611d29565b610a99565b34801561053f57600080fd5b5061026361054e366004611dbf565b610c16565b34801561055f57600080fd5b506102637f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b60006001600160e01b03198216637965db0b60e01b14806105b857506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000600080516020611fa08339815191525b90508060030180546105e390611de9565b80601f016020809104026020016040519081016040528092919081815260200182805461060f90611de9565b801561065c5780601f106106315761010080835404028352916020019161065c565b820191906000526020600020905b81548152906001019060200180831161063f57829003601f168201915b505050505091505090565b600033610675818585610c60565b5060019392505050565b60003361068d858285610c6d565b610698858585610ccd565b60019150505b9392505050565b6000908152600080516020612020833981519152602052604090206001015490565b6106d0826106a5565b6106d981610d2c565b6106e38383610d39565b50505050565b60006106f3610dde565b905090565b6001600160a01b03811633146107215760405163334bd91960e11b815260040160405180910390fd5b61072b8282610de8565b505050565b60008051602061200083398151915261074881610d2c565b61072b8383610e64565b61075a610e9a565b61076382610f41565b61076d8282610f6b565b5050565b600061077b611028565b50600080516020611fe083398151915290565b600080600080516020611fa08339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b60006105b882611071565b60006060808280808381600080516020611fc083398151915280549091501580156107f957506001810154155b6108425760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b61084a61109a565b6108526110d9565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6000918252600080516020612020833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020611fa0833981519152916105e390611de9565b60008051602061200083398151915261090c81610d2c565b61072b83836110f1565b600033610675818585610ccd565b834211156109485760405163313c898160e11b815260048101859052602401610839565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886109b48c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610a0f82611127565b90506000610a1f82878787611154565b9050896001600160a01b0316816001600160a01b031614610a66576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610839565b610a718a8a8a610c60565b50505050505050505050565b610a86826106a5565b610a8f81610d2c565b6106e38383610de8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff16600081158015610adf5750825b905060008267ffffffffffffffff166001148015610afc5750303b155b905081158015610b0a575080155b15610b285760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b5257845460ff60401b1916600160401b1785555b610b5c8a8a611182565b610b658a611194565b610b6d6111bf565b610b756111bf565b610b80600089610d39565b50610b9960008051602061200083398151915288610d39565b50610bc47f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e387610d39565b508315610a7157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050505050565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b61072b83838360016111c7565b6000610c798484610c16565b905060001981146106e35781811015610cbe57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610839565b6106e3848484840360006111c7565b6001600160a01b038316610cf757604051634b637e8f60e11b815260006004820152602401610839565b6001600160a01b038216610d215760405163ec442f0560e01b815260006004820152602401610839565b61072b8383836112af565b610d3681336113ed565b50565b6000600080516020612020833981519152610d54848461087d565b610dd4576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610d8a3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506105b8565b60009150506105b8565b60006106f3611426565b6000600080516020612020833981519152610e03848461087d565b15610dd4576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506105b8565b6001600160a01b038216610e8e5760405163ec442f0560e01b815260006004820152602401610839565b61076d600083836112af565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f2157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f15600080516020611fe0833981519152546001600160a01b031690565b6001600160a01b031614155b15610f3f5760405163703e46dd60e11b815260040160405180910390fd5b565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e361076d81610d2c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610fc5575060408051601f3d908101601f19168201909252610fc291810190611e23565b60015b610fed57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610839565b600080516020611fe0833981519152811461101e57604051632a87526960e21b815260048101829052602401610839565b61072b838361149a565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f3f5760405163703e46dd60e11b815260040160405180910390fd5b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006107a1565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020611fc0833981519152916105e390611de9565b60606000600080516020611fc08339815191526105d2565b6001600160a01b03821661111b57604051634b637e8f60e11b815260006004820152602401610839565b61076d826000836112af565b60006105b8611134610dde565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611166888888886114f0565b92509250925061117682826115bf565b50909695505050505050565b61118a611678565b61076d82826116c1565b61119c611678565b610d3681604051806040016040528060018152602001603160f81b815250611712565b610f3f611678565b600080516020611fa08339815191526001600160a01b0385166112005760405163e602df0560e01b815260006004820152602401610839565b6001600160a01b03841661122a57604051634a1406b160e11b815260006004820152602401610839565b6001600160a01b038086166000908152600183016020908152604080832093881683529290522083905581156112a857836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161129f91815260200190565b60405180910390a35b5050505050565b600080516020611fa08339815191526001600160a01b0384166112eb57818160020160008282546112e09190611e3c565b9091555061135d9050565b6001600160a01b0384166000908152602082905260409020548281101561133e5760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610839565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b03831661137b57600281018054839003905561139a565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113df91815260200190565b60405180910390a350505050565b6113f7828261087d565b61076d5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610839565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611451611773565b6114596117dd565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6114a382611821565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156114e85761072b8282611886565b61076d6118fc565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561152b57506000915060039050826115b5565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561157f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115ab575060009250600191508290506115b5565b9250600091508190505b9450945094915050565b60008260038111156115d3576115d3611e5d565b036115dc575050565b60018260038111156115f0576115f0611e5d565b0361160e5760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561162257611622611e5d565b036116435760405163fce698f760e01b815260048101829052602401610839565b600382600381111561165757611657611e5d565b0361076d576040516335e2f38360e21b815260048101829052602401610839565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610f3f57604051631afcd79f60e31b815260040160405180910390fd5b6116c9611678565b600080516020611fa08339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036117038482611ec3565b50600481016106e38382611ec3565b61171a611678565b600080516020611fc08339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026117548482611ec3565b50600381016117638382611ec3565b5060008082556001909101555050565b6000600080516020611fc08339815191528161178d61109a565b8051909150156117a557805160209091012092915050565b815480156117b4579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020611fc0833981519152816117f76110d9565b80519091501561180f57805160209091012092915050565b600182015480156117b4579392505050565b806001600160a01b03163b60000361185757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610839565b600080516020611fe083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516118a39190611f83565b600060405180830381855af49150503d80600081146118de576040519150601f19603f3d011682016040523d82523d6000602084013e6118e3565b606091505b50915091506118f385838361191b565b95945050505050565b3415610f3f5760405163b398979f60e01b815260040160405180910390fd5b6060826119305761192b82611977565b61069e565b815115801561194757506001600160a01b0384163b155b1561197057604051639996b31560e01b81526001600160a01b0385166004820152602401610839565b508061069e565b8051156119875780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000602082840312156119b257600080fd5b81356001600160e01b03198116811461069e57600080fd5b60005b838110156119e55781810151838201526020016119cd565b50506000910152565b60008151808452611a068160208601602086016119ca565b601f01601f19169290920160200192915050565b60208152600061069e60208301846119ee565b80356001600160a01b0381168114611a4457600080fd5b919050565b60008060408385031215611a5c57600080fd5b611a6583611a2d565b946020939093013593505050565b600080600060608486031215611a8857600080fd5b611a9184611a2d565b9250611a9f60208501611a2d565b9150604084013590509250925092565b600060208284031215611ac157600080fd5b5035919050565b60008060408385031215611adb57600080fd5b82359150611aeb60208401611a2d565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611b2557611b25611af4565b604051601f8501601f19908116603f01168101908282118183101715611b4d57611b4d611af4565b81604052809350858152868686011115611b6657600080fd5b858560208301376000602087830101525050509392505050565b60008060408385031215611b9357600080fd5b611b9c83611a2d565b9150602083013567ffffffffffffffff811115611bb857600080fd5b8301601f81018513611bc957600080fd5b611bd885823560208401611b0a565b9150509250929050565b600060208284031215611bf457600080fd5b61069e82611a2d565b60ff60f81b881681526000602060e06020840152611c1e60e084018a6119ee565b8381036040850152611c30818a6119ee565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611c8457835183529284019291840191600101611c68565b50909c9b505050505050505050505050565b600080600080600080600060e0888a031215611cb157600080fd5b611cba88611a2d565b9650611cc860208901611a2d565b95506040880135945060608801359350608088013560ff81168114611cec57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600082601f830112611d1a57600080fd5b61069e83833560208501611b0a565b600080600080600060a08688031215611d4157600080fd5b853567ffffffffffffffff80821115611d5957600080fd5b611d6589838a01611d09565b96506020880135915080821115611d7b57600080fd5b50611d8888828901611d09565b945050611d9760408701611a2d565b9250611da560608701611a2d565b9150611db360808701611a2d565b90509295509295909350565b60008060408385031215611dd257600080fd5b611ddb83611a2d565b9150611aeb60208401611a2d565b600181811c90821680611dfd57607f821691505b602082108103611e1d57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611e3557600080fd5b5051919050565b808201808211156105b857634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b601f82111561072b576000816000526020600020601f850160051c81016020861015611e9c5750805b601f850160051c820191505b81811015611ebb57828155600101611ea8565b505050505050565b815167ffffffffffffffff811115611edd57611edd611af4565b611ef181611eeb8454611de9565b84611e73565b602080601f831160018114611f265760008415611f0e5750858301515b600019600386901b1c1916600185901b178555611ebb565b600085815260208120601f198616915b82811015611f5557888601518255948401946001909101908401611f36565b5085821015611f735787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251611f958184602087016119ca565b919091019291505056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a602dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a264697066735822122069382ea9b208efbe1587f57dd236b4b7b3cd83cd4d1e3bca2415bbbc8112344a64736f6c634300081800330000000000000000000000000000000000000000000000000000000000000012