[ { "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": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": "account", "type": "address" } ], "name": "AdminAccountAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "AdminAccountRemoved", "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": "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": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "MaxMintAllowance", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "MintAllowance", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Recovered", "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": "account", "type": "address" } ], "name": "SystemAccountAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "SystemAccountRemoved", "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": "ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "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": "SYSTEM_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": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addAdminAccount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addSystemAccount", "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": "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": "_controller", "type": "address" }, { "internalType": "address[]", "name": "_owner", "type": "address[]" }, { "internalType": "address[]", "name": "_spender", "type": "address[]" } ], "name": "batchApprove", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes32", "name": "", "type": "bytes32" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "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": [], "name": "getMaxMintAllowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getMintAllowance", "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": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "getPermitDigest", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": "_validator", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isAdminAccount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isSystemAccount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bytes32", "name": "", "type": "bytes32" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "recover", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeAdminAccount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeSystemAccount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "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": "uint256", "name": "amount", "type": "uint256" } ], "name": "setMaxMintAllowance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setMintAllowance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_validator", "type": "address" } ], "name": "setValidator", "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": "amount", "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": "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": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "validator", "outputs": [ { "internalType": "contract IValidator", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516138d7620001046000396000818161202e01528181612057015261219801526138d76000f3fe6080604052600436106102935760003560e01c806370a082311161015a578063a217fddf116100c1578063dd62ed3e1161007a578063dd62ed3e146107fa578063e30c39781461081a578063ebbc3d461461082f578063f27c5f6e1461084f578063f2fde38b1461086f578063fd2319c41461088f57600080fd5b8063a217fddf14610734578063a84c56d014610749578063a9059cbb14610769578063ad3cb1cc14610789578063d505accf146107ba578063d547741f146107da57600080fd5b806384b0196e1161011357806384b0196e1461066e5780638d1247ba146106965780638da5cb5b146106b657806391d14854146106cb57806395d89b41146106eb5780639ea33e191461070057600080fd5b806370a08231146105c0578063715018a6146105e057806375071d2a146105f557806375b238fc1461061757806379ba5097146106395780637ecebe001461064e57600080fd5b8063329e0587116101fe5780634a36703b116101b75780634a36703b146105185780634f1ef286146105385780634fe57e7a1461054b57806352d1902d1461056b57806367a89a72146105805780636eb4c609146105a057600080fd5b8063329e05871461044b57806333de68f11461046b5780633644e5151461048b57806336568abe146104a05780633a5381b5146104c057806340c10f19146104f857600080fd5b806323b872dd1161025057806323b872dd1461038f578063248a9ca3146103af5780632c19e8b5146103cf5780632f2ff15d146103ef578063313ce5671461040f578063326ecb051461042b57600080fd5b806301ffc9a71461029857806306fdde03146102cd578063077f224a146102ef578063095ea7b3146103115780631327d3d81461033157806318160ddd14610351575b600080fd5b3480156102a457600080fd5b506102b86102b3366004612f55565b6108af565b60405190151581526020015b60405180910390f35b3480156102d957600080fd5b506102e26108e6565b6040516102c49190612fcf565b3480156102fb57600080fd5b5061030f61030a3660046130a1565b61098f565b005b34801561031d57600080fd5b506102b861032c366004613115565b610bac565b34801561033d57600080fd5b5061030f61034c36600461313f565b610bc4565b34801561035d57600080fd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b6040519081526020016102c4565b34801561039b57600080fd5b506102b86103aa36600461315a565b610cbb565b3480156103bb57600080fd5b506103816103ca366004613196565b610d95565b3480156103db57600080fd5b506103816103ea3660046131af565b610db7565b3480156103fb57600080fd5b5061030f61040a3660046131fc565b610e7b565b34801561041b57600080fd5b50604051601281526020016102c4565b34801561043757600080fd5b506102b861044636600461313f565b610e9d565b34801561045757600080fd5b506102b861046636600461313f565b610eb7565b34801561047757600080fd5b5061030f610486366004613274565b610ed1565b34801561049757600080fd5b50610381611159565b3480156104ac57600080fd5b5061030f6104bb3660046131fc565b611168565b3480156104cc57600080fd5b506000546104e0906001600160a01b031681565b6040516001600160a01b0390911681526020016102c4565b34801561050457600080fd5b5061030f610513366004613115565b6111a0565b34801561052457600080fd5b5061038161053336600461313f565b6111ec565b61030f6105463660046132f5565b61121f565b34801561055757600080fd5b5061030f61056636600461313f565b61123a565b34801561057757600080fd5b50610381611292565b34801561058c57600080fd5b5061030f61059b36600461313f565b6112af565b3480156105ac57600080fd5b506103816105bb366004613354565b611307565b3480156105cc57600080fd5b506103816105db36600461313f565b611485565b3480156105ec57600080fd5b5061030f61149c565b34801561060157600080fd5b506103816000805160206137c283398151915281565b34801561062357600080fd5b5061038160008051602061386283398151915281565b34801561064557600080fd5b5061030f6114ec565b34801561065a57600080fd5b5061038161066936600461313f565b611531565b34801561067a57600080fd5b5061068361153c565b6040516102c497969594939291906133b3565b3480156106a257600080fd5b5061030f6106b1366004613449565b6115e8565b3480156106c257600080fd5b506104e06116a6565b3480156106d757600080fd5b506102b86106e63660046131fc565b6116db565b3480156106f757600080fd5b506102e2611713565b34801561070c57600080fd5b507fb337526095403ef89c7becef1792605e55dadf16cfa1d0df874fad9581a6937e54610381565b34801561074057600080fd5b50610381600081565b34801561075557600080fd5b5061030f61076436600461313f565b611752565b34801561077557600080fd5b506102b8610784366004613115565b6117aa565b34801561079557600080fd5b506102e2604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156107c657600080fd5b5061030f6107d53660046134aa565b611885565b3480156107e657600080fd5b5061030f6107f53660046131fc565b6119de565b34801561080657600080fd5b50610381610815366004613514565b6119fa565b34801561082657600080fd5b506104e0611a44565b34801561083b57600080fd5b5061030f61084a36600461313f565b611a6d565b34801561085b57600080fd5b5061030f61086a366004613115565b611ac5565b34801561087b57600080fd5b5061030f61088a36600461313f565b611b46565b34801561089b57600080fd5b5061030f6108aa366004613196565b611bcb565b60006001600160e01b03198216637965db0b60e01b14806108e057506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060006000805160206137e28339815191525b905080600301805461090b9061353e565b80601f01602080910402602001604051908101604052809291908181526020018280546109379061353e565b80156109845780601f1061095957610100808354040283529160200191610984565b820191906000526020600020905b81548152906001019060200180831161096757829003601f168201915b505050505091505090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156109d55750825b905060008267ffffffffffffffff1660011480156109f25750303b155b905081158015610a00575080155b15610a1e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a4857845460ff60401b1916600160401b1785555b610a528888611bdc565b610a5b88611bee565b610a63611c19565b610a6b611c23565b600080546001600160a01b0319166001600160a01b03881690811790915560408051630f8d521f60e21b815290517f5341d189213c4172d0c7256f80bc5f8e6350af3aaff7a029625d8dd94f0f82a59291633e35487c9160048083019260209291908290030181865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190613578565b14610b5c5760405162461bcd60e51b815260206004820152601f60248201527f4e6f74204d6f6e657269756d2056616c696461746f7220436f6e74726163740060448201526064015b60405180910390fd5b8315610ba257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b600033610bba818585611d42565b5060019392505050565b610bcc611d4f565b600080546001600160a01b0319166001600160a01b03831690811790915560408051630f8d521f60e21b815290517f5341d189213c4172d0c7256f80bc5f8e6350af3aaff7a029625d8dd94f0f82a59291633e35487c9160048083019260209291908290030181865afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b9190613578565b14610cb85760405162461bcd60e51b815260206004820152601f60248201527f4e6f74204d6f6e657269756d2056616c696461746f7220436f6e7472616374006044820152606401610b53565b50565b60008054604051632a8eb53960e21b81526001600160a01b0386811660048301528581166024830152604482018590529091169063aa3ad4e4906064016020604051808303816000875af1158015610d17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3b9190613591565b610d805760405162461bcd60e51b8152602060048201526016602482015275151c985b9cd9995c881b9bdd081d985b1a59185d195960521b6044820152606401610b53565b610d8b848484611d81565b90505b9392505050565b6000908152600080516020613842833981519152602052604090206001015490565b6000610dc1611da5565b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960208201526001600160a01b03808a169282019290925290871660608201526080810186905260a0810185905260c0810184905260e00160405160208183030381529060405280519060200120604051602001610e5a92919061190160f01b81526002810192909252602282015260420190565b60405160208183030381529060405280519060200120905095945050505050565b610e8482610d95565b610e8d81611daf565b610e978383611db9565b50505050565b60006108e06000805160206137c2833981519152836116db565b60006108e0600080516020613862833981519152836116db565b8473c5f3370131bb7ce0d28d83735447576aaed1b9933314610f5b5760405162461bcd60e51b815260206004820152603960248201527f7468652063616c6c6572206973206e6f7420746865206164647265737320757360448201527f656420746f206465706c6f792074686520636f6e7472616374000000000000006064820152608401610b53565b838214610fb95760405162461bcd60e51b815260206004820152602660248201527f696e707574207661726961626c6573206861766520646966666572656e74206c604482015265656e6774687360d01b6064820152608401610b53565b60005b8481101561115057611015868683818110610fd957610fd96135b3565b9050602002016020810190610fee919061313f565b858584818110611000576110006135b3565b9050602002016020810190610815919061313f565b60000361113e5761113e868683818110611031576110316135b3565b9050602002016020810190611046919061313f565b858584818110611058576110586135b3565b905060200201602081019061106d919061313f565b846001600160a01b031663dd62ed3e8a8a8781811061108e5761108e6135b3565b90506020020160208101906110a3919061313f565b8989888181106110b5576110b56135b3565b90506020020160208101906110ca919061313f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611115573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111399190613578565b611d42565b80611148816135df565b915050610fbc565b50505050505050565b6000611163611da5565b905090565b6001600160a01b03811633146111915760405163334bd91960e11b815260040160405180910390fd5b61119b8282611e5e565b505050565b6111b86000805160206137c2833981519152336116db565b6111d45760405162461bcd60e51b8152600401610b53906135f8565b6111de3382611eda565b6111e88282611fed565b5050565b6000806000805160206138828339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b611227612023565b611230826120c8565b6111e882826120d0565b611242611d4f565b61125a60008051602061386283398151915282611db9565b506040516001600160a01b038216907f5c7eb798b922f0164aa9c5340006161c64436190a49eebc58b4e6e0715700ae690600090a250565b600061129c61218d565b5060008051602061382283398151915290565b6112b7611d4f565b6112cf60008051602061386283398151915282611e5e565b506040516001600160a01b038216907fc3198db98a2c50068f0a99b9297e60b2dbf0eafcde57e366e70a29f887c44e1090600090a250565b60006113216000805160206137c2833981519152336116db565b61133d5760405162461bcd60e51b8152600401610b53906135f8565b60608315158061134c57508215155b1561138b5760408051602081018690529081018490526001600160f81b031960f887901b16606082015260610160405160208183030381529060405290505b6113bf6001600160a01b0389167fb77c35c892a1b24b10a2ce49b424e578472333ee8d2456234fff90626332c50f836121d6565b61140b5760405162461bcd60e51b815260206004820152601d60248201527f7369676e61747572652f6861736820646f6573206e6f74206d617463680000006044820152606401610b53565b600061141689611485565b90506114228982612238565b61142c8882611fed565b876001600160a01b0316896001600160a01b03167ffff3b3844276f57024e0b42afec1a37f75db36511e43819a4f2a63ab7862b6488360405161147191815260200190565b60405180910390a398975050505050505050565b6000806000805160206137e28339815191526111ff565b6114a4611d4f565b60405162461bcd60e51b815260206004820152601d60248201527f4f776e6572736869702063616e6e6f742062652072656e6f756e6365640000006044820152606401610b53565b33806114f6611a44565b6001600160a01b0316146115285760405163118cdaa760e01b81526001600160a01b0382166004820152602401610b53565b610cb88161226e565b60006108e0826122a6565b60006060808280808381600080516020613802833981519152805490915015801561156957506001810154155b6115ad5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610b53565b6115b56122cf565b6115bd61230e565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6116006000805160206137c2833981519152336116db565b61161c5760405162461bcd60e51b8152600401610b53906135f8565b6116506001600160a01b0385167fb77c35c892a1b24b10a2ce49b424e578472333ee8d2456234fff90626332c50f836121d6565b61169c5760405162461bcd60e51b815260206004820152601d60248201527f7369676e61747572652f6861736820646f6573206e6f74206d617463680000006044820152606401610b53565b610e978484612238565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b6000918252600080516020613842833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060916000805160206137e28339815191529161090b9061353e565b61175a611d4f565b6117726000805160206137c283398151915282611db9565b506040516001600160a01b038216907fdfb5b1167ef9eadf5cac67570f1a2971a6f6175303b9d4166a65a11d0a294e3490600090a250565b600080546001600160a01b031663aa3ad4e4336040516001600160e01b031960e084901b1681526001600160a01b0391821660048201529086166024820152604481018590526064016020604051808303816000875af1158015611812573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118369190613591565b61187b5760405162461bcd60e51b8152602060048201526016602482015275151c985b9cd9995c881b9bdd081d985b1a59185d195960521b6044820152606401610b53565b610d8e8383612326565b834211156118a95760405163313c898160e11b815260048101859052602401610b53565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886119158c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061197082612334565b9050600061198082878787612361565b9050896001600160a01b0316816001600160a01b0316146119c7576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610b53565b6119d28a8a8a611d42565b50505050505050505050565b6119e782610d95565b6119f081611daf565b610e978383611e5e565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c006116cb565b611a75611d4f565b611a8d6000805160206137c283398151915282611e5e565b506040516001600160a01b038216907f21bfb3de07221bc6197a8c23f7a059308b7a741f259cf4ef3b519cde0fde7ac390600090a250565b611add600080516020613862833981519152336116db565b611b3c5760405162461bcd60e51b815260206004820152602a60248201527f53797374656d526f6c653a2063616c6c6572206973206e6f7420616e2061646d6044820152691a5b881858d8dbdd5b9d60b21b6064820152608401610b53565b6111e8828261238f565b611b4e611d4f565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b0383169081178255611b926116a6565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b611bd3611d4f565b610cb881612476565b611be46124e2565b6111e8828261252b565b611bf66124e2565b610cb881604051806040016040528060018152602001603160f81b81525061257c565b611c216124e2565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff16600081158015611c695750825b905060008267ffffffffffffffff166001148015611c865750303b155b905081158015611c94575080155b15611cb25760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611cdc57845460ff60401b1916600160401b1785555b611ce4611c19565b611ced336125dd565b611cf5611c19565b8315611d3b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b61119b83838360016125ee565b33611d586116a6565b6001600160a01b031614611c215760405163118cdaa760e01b8152336004820152602401610b53565b600033611d8f8582856126d5565b611d9a858585612735565b506001949350505050565b6000611163612794565b610cb88133612808565b6000600080516020613842833981519152611dd484846116db565b611e54576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611e0a3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506108e0565b60009150506108e0565b6000600080516020613842833981519152611e7984846116db565b15611e54576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506108e0565b6001600160a01b03821660009081526000805160206138828339815191526020819052604090912054821115611f6f5760405162461bcd60e51b815260206004820152603460248201527f4d696e74416c6c6f77616e63653a206e6f7420616c6c6f77656420746f206d696044820152731b9d081b5bdc99481d1a185b88185b1b1bddd95960621b6064820152608401610b53565b6001600160a01b03831660009081526020829052604081208054849290611f97908490613642565b90915550506001600160a01b038316600081815260208381526040918290205491519182527f8fe74a1bbab5a9534a04463cd7b9423b985ed316426821cace8ed4aeac5a4d1491015b60405180910390a2505050565b6001600160a01b0382166120175760405163ec442f0560e01b815260006004820152602401610b53565b6111e860008383612841565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806120aa57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661209e600080516020613822833981519152546001600160a01b031690565b6001600160a01b031614155b15611c215760405163703e46dd60e11b815260040160405180910390fd5b610cb8611d4f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561212a575060408051601f3d908101601f1916820190925261212791810190613578565b60015b61215257604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b53565b600080516020613822833981519152811461218357604051632a87526960e21b815260048101829052602401610b53565b61119b838361297f565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c215760405163703e46dd60e11b815260040160405180910390fd5b60008060006121e585856129d5565b50909250905060008160038111156121ff576121ff613655565b14801561221d5750856001600160a01b0316826001600160a01b0316145b8061222e575061222e868686612a22565b9695505050505050565b6001600160a01b03821661226257604051634b637e8f60e11b815260006004820152602401610b53565b6111e882600083612841565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556111e882612afd565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006111ff565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060916000805160206138028339815191529161090b9061353e565b606060006000805160206138028339815191526108fa565b600033610bba818585612735565b60006108e0612341611da5565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061237388888888612b6e565b9250925092506123838282612c3d565b50909695505050505050565b7fb337526095403ef89c7becef1792605e55dadf16cfa1d0df874fad9581a6937e546000805160206138828339815191529082111561242c5760405162461bcd60e51b815260206004820152603360248201527f4d696e74416c6c6f77616e63653a2063616e6e6f742073657420616c6c6f77616044820152720dcc6ca40d0d2ced0cae440e8d0c2dc40dac2f606b1b6064820152608401610b53565b6001600160a01b0383166000818152602083815260409182902085905590518481527f8fe74a1bbab5a9534a04463cd7b9423b985ed316426821cace8ed4aeac5a4d149101611fe0565b7fb337526095403ef89c7becef1792605e55dadf16cfa1d0df874fad9581a6937e819055604080518281529051600080516020613882833981519152917f34affbf2a21d1f1d12e5e49bdca58fb75dba6879f5430f2fbf5c1d07476018d2919081900360200190a15050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611c2157604051631afcd79f60e31b815260040160405180910390fd5b6125336124e2565b6000805160206137e28339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0361256d84826136b9565b5060048101610e9783826136b9565b6125846124e2565b6000805160206138028339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026125be84826136b9565b50600381016125cd83826136b9565b5060008082556001909101555050565b6125e56124e2565b610cb881612cf6565b6000805160206137e28339815191526001600160a01b0385166126275760405163e602df0560e01b815260006004820152602401610b53565b6001600160a01b03841661265157604051634a1406b160e11b815260006004820152602401610b53565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115611d3b57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516126c691815260200190565b60405180910390a35050505050565b60006126e184846119fa565b90506000198114610e97578181101561272657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610b53565b610e97848484840360006125ee565b6001600160a01b03831661275f57604051634b637e8f60e11b815260006004820152602401610b53565b6001600160a01b0382166127895760405163ec442f0560e01b815260006004820152602401610b53565b61119b838383612841565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6127bf612d28565b6127c7612d92565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b61281282826116db565b6111e85760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b53565b6000805160206137e28339815191526001600160a01b03841661287d57818160020160008282546128729190613779565b909155506128ef9050565b6001600160a01b038416600090815260208290526040902054828110156128d05760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610b53565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b03831661290d57600281018054839003905561292c565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161297191815260200190565b60405180910390a350505050565b61298882612dd6565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156129cd5761119b8282612e3b565b6111e8612eb1565b60008060008351604103612a0f5760208401516040850151606086015160001a612a0188828585612b6e565b955095509550505050612a1b565b50508151600091506002905b9250925092565b6000806000856001600160a01b03168585604051602401612a4492919061378c565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b17905251612a7991906137a5565b600060405180830381855afa9150503d8060008114612ab4576040519150601f19603f3d011682016040523d82523d6000602084013e612ab9565b606091505b5091509150818015612acd57506020815110155b801561222e57508051630b135d3f60e11b90612af29083016020908101908401613578565b149695505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612ba95750600091506003905082612c33565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612bfd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c2957506000925060019150829050612c33565b9250600091508190505b9450945094915050565b6000826003811115612c5157612c51613655565b03612c5a575050565b6001826003811115612c6e57612c6e613655565b03612c8c5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612ca057612ca0613655565b03612cc15760405163fce698f760e01b815260048101829052602401610b53565b6003826003811115612cd557612cd5613655565b036111e8576040516335e2f38360e21b815260048101829052602401610b53565b612cfe6124e2565b6001600160a01b03811661152857604051631e4fbdf760e01b815260006004820152602401610b53565b600060008051602061380283398151915281612d426122cf565b805190915015612d5a57805160209091012092915050565b81548015612d69579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b600060008051602061380283398151915281612dac61230e565b805190915015612dc457805160209091012092915050565b60018201548015612d69579392505050565b806001600160a01b03163b600003612e0c57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b53565b60008051602061382283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612e5891906137a5565b600060405180830381855af49150503d8060008114612e93576040519150601f19603f3d011682016040523d82523d6000602084013e612e98565b606091505b5091509150612ea8858383612ed0565b95945050505050565b3415611c215760405163b398979f60e01b815260040160405180910390fd5b606082612ee557612ee082612f2c565b610d8e565b8151158015612efc57506001600160a01b0384163b155b15612f2557604051639996b31560e01b81526001600160a01b0385166004820152602401610b53565b5080610d8e565b805115612f3c5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b600060208284031215612f6757600080fd5b81356001600160e01b031981168114610d8e57600080fd5b60005b83811015612f9a578181015183820152602001612f82565b50506000910152565b60008151808452612fbb816020860160208601612f7f565b601f01601f19169290920160200192915050565b602081526000610d8e6020830184612fa3565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261300957600080fd5b813567ffffffffffffffff8082111561302457613024612fe2565b604051601f8301601f19908116603f0116810190828211818310171561304c5761304c612fe2565b8160405283815286602085880101111561306557600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b038116811461309c57600080fd5b919050565b6000806000606084860312156130b657600080fd5b833567ffffffffffffffff808211156130ce57600080fd5b6130da87838801612ff8565b945060208601359150808211156130f057600080fd5b506130fd86828701612ff8565b92505061310c60408501613085565b90509250925092565b6000806040838503121561312857600080fd5b61313183613085565b946020939093013593505050565b60006020828403121561315157600080fd5b610d8e82613085565b60008060006060848603121561316f57600080fd5b61317884613085565b925061318660208501613085565b9150604084013590509250925092565b6000602082840312156131a857600080fd5b5035919050565b600080600080600060a086880312156131c757600080fd5b6131d086613085565b94506131de60208701613085565b94979496505050506040830135926060810135926080909101359150565b6000806040838503121561320f57600080fd5b8235915061321f60208401613085565b90509250929050565b60008083601f84011261323a57600080fd5b50813567ffffffffffffffff81111561325257600080fd5b6020830191508360208260051b850101111561326d57600080fd5b9250929050565b60008060008060006060868803121561328c57600080fd5b61329586613085565b9450602086013567ffffffffffffffff808211156132b257600080fd5b6132be89838a01613228565b909650945060408801359150808211156132d757600080fd5b506132e488828901613228565b969995985093965092949392505050565b6000806040838503121561330857600080fd5b61331183613085565b9150602083013567ffffffffffffffff81111561332d57600080fd5b61333985828601612ff8565b9150509250929050565b803560ff8116811461309c57600080fd5b60008060008060008060c0878903121561336d57600080fd5b61337687613085565b955061338460208801613085565b94506040870135935061339960608801613343565b92506080870135915060a087013590509295509295509295565b60ff60f81b881681526000602060e0818401526133d360e084018a612fa3565b83810360408501526133e5818a612fa3565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156134375783518352928401929184019160010161341b565b50909c9b505050505050505050505050565b6000806000806080858703121561345f57600080fd5b61346885613085565b93506020850135925060408501359150606085013567ffffffffffffffff81111561349257600080fd5b61349e87828801612ff8565b91505092959194509250565b600080600080600080600060e0888a0312156134c557600080fd5b6134ce88613085565b96506134dc60208901613085565b955060408801359450606088013593506134f860808901613343565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561352757600080fd5b61353083613085565b915061321f60208401613085565b600181811c9082168061355257607f821691505b60208210810361357257634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561358a57600080fd5b5051919050565b6000602082840312156135a357600080fd5b81518015158114610d8e57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016135f1576135f16135c9565b5060010190565b6020808252602a908201527f53797374656d526f6c653a2063616c6c6572206973206e6f7420612073797374604082015269195b481858d8dbdd5b9d60b21b606082015260800190565b818103818111156108e0576108e06135c9565b634e487b7160e01b600052602160045260246000fd5b601f82111561119b57600081815260208120601f850160051c810160208610156136925750805b601f850160051c820191505b818110156136b15782815560010161369e565b505050505050565b815167ffffffffffffffff8111156136d3576136d3612fe2565b6136e7816136e1845461353e565b8461366b565b602080601f83116001811461371c57600084156137045750858301515b600019600386901b1c1916600185901b1785556136b1565b600085815260208120601f198616915b8281101561374b5788860151825594840194600190910190840161372c565b50858210156137695787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156108e0576108e06135c9565b828152604060208201526000610d8b6040830184612fa3565b600082516137b7818460208701612f7f565b919091019291505056fe5719df9ef2c4678b547f89e4f5ae410dbf400fc51cf3ded434c55f6adea2c43f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775b337526095403ef89c7becef1792605e55dadf16cfa1d0df874fad9581a6937da26469706673582212202a0d2d31e904f0a26175676becdd48a3be553122c501db24c9e9dfc3bf8de6b364736f6c63430008140033