@alpsfinance/core
Version:
This is the official Alps Finance smart contract repository.
441 lines • 613 kB
JSON
{
"contractName": "ERC721Custom",
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "approved",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"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": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "approve",
"outputs": [],
"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": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"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": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ownerOf",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"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": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "string",
"name": "uri",
"type": "string"
}
],
"name": "safeMint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "tokenURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.11+commit.d7f03943\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"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\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"safeMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Burns `tokenId`. See {ERC721-_burn}. Requirements: - The caller must own `tokenId` or be an approved operator.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/token/ERC721Custom.sol\":\"ERC721Custom\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e12cbaa7378fd9b62280e4e1d164bedcb4399ce238f5f98fc0eefb7e50577981\",\"dweb:/ipfs/QmXRoFGUgfsaRkoPT5bxNMtSayKTQ8GZATLPXf69HcRA51\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x11b84bb56dc112a6590bfe3e0efa118aa1b5891132342200d04c4ef544cb93de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbc4803332d45dff58f865ed21c942fe4668e47cc7196c8dfe84102040b1d70f\",\"dweb:/ipfs/QmXhZLsocznRWCSyhjo3vo66Z1VsuuNptAVb6ASPYsWtGx\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a439187f7126d31add4557f82d8aed6be0162007cd7182c48fd934dbab8f3849\",\"dweb:/ipfs/QmRPLguRFvrRJS7r6F1bcLvsx6q1VrgjEpZafyeL8D7xZh\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33017a30a99cc5411a9e376622c31fc4a55cfc6a335e2f57f00cbf24a817ff3f\",\"dweb:/ipfs/QmWNQtWTPhA7Lo8nbxbc8KFMvZwbFYB8fSeEQ3vuapSV4a\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol\":{\"keccak256\":\"0x1f16f9737853b988865ab819d1ebf8b5009defe981c75bc9079e0f40ed2a2e57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05e50f827969ca93b0d7bad1e022aa3147c8f390e9f91bb814752e8fbbbe621c\",\"dweb:/ipfs/QmdR2fJ2a3HM7FyC9pGD4JeKF9z6bxqU9FbhMyQfH1sDJH\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"keccak256\":\"0x1cbe42915bc66227970fe99bc0f783eb1de30f2b48f984af01ad45edb9658698\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2baa08eb67d9da46e6c4c049f17b7684a1c68c5268d0f466cfa0eb23ce2bf9b0\",\"dweb:/ipfs/Qmdnj8zj4PfErB2HM2eKmDt7FrqrhggsZ6Qd8MpD593tgj\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"project:/contracts/token/ERC721Custom.sol\":{\"keccak256\":\"0xeaccfb8b741b240b87d4753e4e323421319bec06aab2077ed521a0cb2f4d08a5\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://e351e95ec34fe9fc6eff853a0c78d18af659a8e7d305eb108387437609dc281b\",\"dweb:/ipfs/QmZQ7tYZEbj8jUJNtymRBkgL1a9MLudx4MKt6yQmAcifvQ\"]},\"project:/contracts/token/interfaces/IERC721Custom.sol\":{\"keccak256\":\"0xcfbf99e794852a2c4aa0e0be701ed04ea6515340e9aea7aa314b8bcf3f867719\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://8c1265907aaaea006a6bdf77939e8b7598f482bf00f916253599363ed6309077\",\"dweb:/ipfs/QmVC6Kkx4BhwbGWsf7uXmm57Kx1VAt6TVQTFLhJSMxDwoX\"]}},\"version\":1}",
"bytecode": "0x60806040523480156200001157600080fd5b5060405162001da438038062001da4833981016040819052620000349162000251565b8151829082906200004d906000906020850190620000de565b50805162000063906001906020840190620000de565b505050620000806200007a6200008860201b60201c565b6200008c565b5050620002f8565b3390565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000ec90620002bb565b90600052602060002090601f0160209004810192826200011057600085556200015b565b82601f106200012b57805160ff19168380011785556200015b565b828001600101855582156200015b579182015b828111156200015b5782518255916020019190600101906200013e565b50620001699291506200016d565b5090565b5b808211156200016957600081556001016200016e565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001ac57600080fd5b81516001600160401b0380821115620001c957620001c962000184565b604051601f8301601f19908116603f01168101908282118183101715620001f457620001f462000184565b816040528381526020925086838588010111156200021157600080fd5b600091505b8382101562000235578582018301518183018401529082019062000216565b83821115620002475760008385830101525b9695505050505050565b600080604083850312156200026557600080fd5b82516001600160401b03808211156200027d57600080fd5b6200028b868387016200019a565b93506020850151915080821115620002a257600080fd5b50620002b1858286016200019a565b9150509250929050565b600181811c90821680620002d057607f821691505b60208210811415620002f257634e487b7160e01b600052602260045260246000fd5b50919050565b611a9c80620003086000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde14610239578063c87b56dd1461024c578063cd279c7c1461025f578063e985e9c514610272578063f2fde38b146102ae57600080fd5b8063715018a6146102055780638da5cb5b1461020d57806395d89b411461021e578063a22cb4651461022657600080fd5b806323b872dd116100e957806323b872dd1461019857806342842e0e146101ab57806342966c68146101be5780636352211e146101d157806370a08231146101e457600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e6101293660046114f6565b6102c1565b60405190151581526020015b60405180910390f35b61014b610313565b60405161013a919061156b565b61016b61016636600461157e565b6103a5565b6040516001600160a01b03909116815260200161013a565b6101966101913660046115b3565b610432565b005b6101966101a63660046115dd565b610548565b6101966101b93660046115dd565b61057a565b6101966101cc36600461157e565b610595565b61016b6101df36600461157e565b61060f565b6101f76101f2366004611619565b610686565b60405190815260200161013a565b61019661070d565b6007546001600160a01b031661016b565b61014b610743565b610196610234366004611634565b610752565b6101966102473660046116fc565b610761565b61014b61025a36600461157e565b610799565b61019661026d366004611778565b6107a4565b61012e6102803660046117e3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101966102bc366004611619565b6107e2565b60006001600160e01b031982166380ac58cd60e01b14806102f257506001600160e01b03198216635b5e139f60e01b145b8061030d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461032290611816565b80601f016020809104026020016040519081016040528092919081815260200182805461034e90611816565b801561039b5780601f106103705761010080835404028352916020019161039b565b820191906000526020600020905b81548152906001019060200180831161037e57829003601f168201915b5050505050905090565b60006103b08261087a565b6104165760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061043d8261060f565b9050806001600160a01b0316836001600160a01b031614156104ab5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161040d565b336001600160a01b03821614806104c757506104c78133610280565b6105395760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161040d565b6105438383610897565b505050565b610553335b82610905565b61056f5760405162461bcd60e51b815260040161040d90611851565b6105438383836109ef565b61054383838360405180602001604052806000815250610761565b61059e3361054d565b6106035760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b606482015260840161040d565b61060c81610b8b565b50565b6000818152600260205260408120546001600160a01b03168061030d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161040d565b60006001600160a01b0382166106f15760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161040d565b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b031633146107375760405162461bcd60e51b815260040161040d906118a2565b6107416000610b94565b565b60606001805461032290611816565b61075d338383610be6565b5050565b61076b3383610905565b6107875760405162461bcd60e51b815260040161040d90611851565b61079384848484610cb5565b50505050565b606061030d82610ce8565b6007546001600160a01b031633146107ce5760405162461bcd60e51b815260040161040d906118a2565b6107d88383610e57565b6105438282610e71565b6007546001600160a01b0316331461080c5760405162461bcd60e51b815260040161040d906118a2565b6001600160a01b0381166108715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040d565b61060c81610b94565b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906108cc8261060f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006109108261087a565b6109715760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161040d565b600061097c8361060f565b9050806001600160a01b0316846001600160a01b031614806109b75750836001600160a01b03166109ac846103a5565b6001600160a01b0316145b806109e757506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316610a028261060f565b6001600160a01b031614610a665760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161040d565b6001600160a01b038216610ac85760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161040d565b610ad3600082610897565b6001600160a01b0383166000908152600360205260408120805460019290610afc9084906118ed565b90915550506001600160a01b0382166000908152600360205260408120805460019290610b2a908490611904565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61060c81610efc565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03161415610c485760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161040d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610cc08484846109ef565b610ccc84848484610f3c565b6107935760405162461bcd60e51b815260040161040d9061191c565b6060610cf38261087a565b610d595760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b606482015260840161040d565b60008281526006602052604081208054610d7290611816565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9e90611816565b8015610deb5780601f10610dc057610100808354040283529160200191610deb565b820191906000526020600020905b815481529060010190602001808311610dce57829003601f168201915b505050505090506000610e0960408051602081019091526000815290565b9050805160001415610e1c575092915050565b815115610e4e578082604051602001610e3692919061196e565b60405160208183030381529060405292505050919050565b6109e78461103a565b61075d828260405180602001604052806000815250611112565b610e7a8261087a565b610edd5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161040d565b6000828152600660209081526040909120825161054392840190611411565b610f0581611145565b60008181526006602052604090208054610f1e90611816565b15905061060c57600081815260066020526040812061060c91611495565b60006001600160a01b0384163b1561102f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610f8090339089908890889060040161199d565b6020604051808303816000875af1925050508015610fbb575060408051601f3d908101601f19168201909252610fb8918101906119da565b60015b611015573d808015610fe9576040519150601f19603f3d011682016040523d82523d6000602084013e610fee565b606091505b50805161100d5760405162461bcd60e51b815260040161040d9061191c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506109e7565b506001949350505050565b60606110458261087a565b6110a95760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161040d565b60006110c060408051602081019091526000815290565b905060008151116110e0576040518060200160405280600081525061110b565b806110ea846111e0565b6040516020016110fb92919061196e565b6040516020818303038152906040525b9392505050565b61111c83836112de565b6111296000848484610f3c565b6105435760405162461bcd60e51b815260040161040d9061191c565b60006111508261060f565b905061115d600083610897565b6001600160a01b03811660009081526003602052604081208054600192906111869084906118ed565b909155505060008281526002602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6060816112045750506040805180820190915260018152600360fc1b602082015290565b8160005b811561122e5780611218816119f7565b91506112279050600a83611a28565b9150611208565b60008167ffffffffffffffff81111561124957611249611670565b6040519080825280601f01601f191660200182016040528015611273576020820181803683370190505b5090505b84156109e7576112886001836118ed565b9150611295600a86611a3c565b6112a0906030611904565b60f81b8183815181106112b5576112b5611a50565b60200101906001600160f81b031916908160001a9053506112d7600a86611a28565b9450611277565b6001600160a01b0382166113345760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161040d565b61133d8161087a565b1561138a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161040d565b6001600160a01b03821660009081526003602052604081208054600192906113b3908490611904565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461141d90611816565b90600052602060002090601f01602090048101928261143f5760008555611485565b82601f1061145857805160ff1916838001178555611485565b82800160010185558215611485579182015b8281111561148557825182559160200191906001019061146a565b506114919291506114cb565b5090565b5080546114a190611816565b6000825580601f106114b1575050565b601f01602090049060005260206000209081019061060c91905b5b8082111561149157600081556001016114cc565b6001600160e01b03198116811461060c57600080fd5b60006020828403121561150857600080fd5b813561110b816114e0565b60005b8381101561152e578181015183820152602001611516565b838111156107935750506000910152565b60008151808452611557816020860160208601611513565b601f01601f19169290920160200192915050565b60208152600061110b602083018461153f565b60006020828403121561159057600080fd5b5035919050565b80356001600160a01b03811681146115ae57600080fd5b919050565b600080604083850312156115c657600080fd5b6115cf83611597565b946020939093013593505050565b6000806000606084860312156115f257600080fd5b6115fb84611597565b925061160960208501611597565b9150604084013590509250925092565b60006020828403121561162b57600080fd5b61110b82611597565b6000806040838503121561164757600080fd5b61165083611597565b91506020830135801515811461166557600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156116a1576116a1611670565b604051601f8501601f19908116603f011681019082821181831017156116c9576116c9611670565b816040528093508581528686860111156116e257600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561171257600080fd5b61171b85611597565b935061172960208601611597565b925060408501359150606085013567ffffffffffffffff81111561174c57600080fd5b8501601f8101871361175d57600080fd5b61176c87823560208401611686565b91505092959194509250565b60008060006060848603121561178d57600080fd5b61179684611597565b925060208401359150604084013567ffffffffffffffff8111156117b957600080fd5b8401601f810186136117ca57600080fd5b6117d986823560208401611686565b9150509250925092565b600080604083850312156117f657600080fd5b6117ff83611597565b915061180d60208401611597565b90509250929050565b600181811c9082168061182a57607f821691505b6020821081141561184b57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156118ff576118ff6118d7565b500390565b60008219821115611917576119176118d7565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351611980818460208801611513565b835190830190611994818360208801611513565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906119d09083018461153f565b9695505050505050565b6000602082840312156119ec57600080fd5b815161110b816114e0565b6000600019821415611a0b57611a0b6118d7565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611a3757611a37611a12565b500490565b600082611a4b57611a4b611a12565b500690565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220db11f95f0a83531a0d6fe04d905db2cf0289c08dd5cf5af750ff808c3dd34eb664736f6c634300080b0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde14610239578063c87b56dd1461024c578063cd279c7c1461025f578063e985e9c514610272578063f2fde38b146102ae57600080fd5b8063715018a6146102055780638da5cb5b1461020d57806395d89b411461021e578063a22cb4651461022657600080fd5b806323b872dd116100e957806323b872dd1461019857806342842e0e146101ab57806342966c68146101be5780636352211e146101d157806370a08231146101e457600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e6101293660046114f6565b6102c1565b60405190151581526020015b60405180910390f35b61014b610313565b60405161013a919061156b565b61016b61016636600461157e565b6103a5565b6040516001600160a01b03909116815260200161013a565b6101966101913660046115b3565b610432565b005b6101966101a63660046115dd565b610548565b6101966101b93660046115dd565b61057a565b6101966101cc36600461157e565b610595565b61016b6101df36600461157e565b61060f565b6101f76101f2366004611619565b610686565b60405190815260200161013a565b61019661070d565b6007546001600160a01b031661016b565b61014b610743565b610196610234366004611634565b610752565b6101966102473660046116fc565b610761565b61014b61025a36600461157e565b610799565b61019661026d366004611778565b6107a4565b61012e6102803660046117e3565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101966102bc366004611619565b6107e2565b60006001600160e01b031982166380ac58cd60e01b14806102f257506001600160e01b03198216635b5e139f60e01b145b8061030d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461032290611816565b80601f016020809104026020016040519081016040528092919081815260200182805461034e90611816565b801561039b5780601f106103705761010080835404028352916020019161039b565b820191906000526020600020905b81548152906001019060200180831161037e57829003601f168201915b5050505050905090565b60006103b08261087a565b6104165760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061043d8261060f565b9050806001600160a01b0316836001600160a01b031614156104ab5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161040d565b336001600160a01b03821614806104c757506104c78133610280565b6105395760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161040d565b6105438383610897565b505050565b610553335b82610905565b61056f5760405162461bcd60e51b815260040161040d90611851565b6105438383836109ef565b61054383838360405180602001604052806000815250610761565b61059e3361054d565b6106035760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b606482015260840161040d565b61060c81610b8b565b50565b6000818152600260205260408120546001600160a01b03168061030d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161040d565b60006001600160a01b0382166106f15760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161040d565b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b031633146107375760405162461bcd60e51b815260040161040d906118a2565b6107416000610b94565b565b60606001805461032290611816565b61075d338383610be6565b5050565b61076b3383610905565b6107875760405162461bcd60e51b815260040161040d90611851565b61079384848484610cb5565b50505050565b606061030d82610ce8565b6007546001600160a01b031633146107ce5760405162461bcd60e51b815260040161040d906118a2565b6107d88383610e57565b6105438282610e71565b6007546001600160a01b0316331461080c5760405162461bcd60e51b815260040161040d906118a2565b6001600160a01b0381166108715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040d565b61060c81610b94565b6000908152600260205260409020546001600160a01b0316151590565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906108cc8261060f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006109108261087a565b6109715760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161040d565b600061097c8361060f565b9050806001600160a01b0316846001600160a01b031614806109b75750836001600160a01b03166109ac846103a5565b6001600160a01b0316145b806109e757506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316610a028261060f565b6001600160a01b031614610a665760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b606482015260840161040d565b6001600160a01b038216610ac85760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161040d565b610ad3600082610897565b6001600160a01b0383166000908152600360205260408120805460019290610afc9084906118ed565b90915550506001600160a01b0382166000908152600360205260408120805460019290610b2a908490611904565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61060c81610efc565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03161415610c485760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161040d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610cc08484846109ef565b610ccc84848484610f3c565b6107935760405162461bcd60e51b815260040161040d9061191c565b6060610cf38261087a565b610d595760405162461bcd60e51b815260206004820152603160248201527f45524337323155524953746f726167653a2055524920717565727920666f72206044820152703737b732bc34b9ba32b73a103a37b5b2b760791b606482015260840161040d565b60008281526006602052604081208054610d7290611816565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9e90611816565b8015610deb5780601f10610dc057610100808354040283529160200191610deb565b820191906000526020600020905b815481529060010190602001808311610dce57829003601f168201915b505050505090506000610e0960408051602081019091526000815290565b9050805160001415610e1c575092915050565b815115610e4e578082604051602001610e3692919061196e565b60405160208183030381529060405292505050919050565b6109e78461103a565b61075d828260405180602001604052806000815250611112565b610e7a8261087a565b610edd5760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161040d565b6000828152600660209081526040909120825161054392840190611411565b610f0581611145565b60008181526006602052604090208054610f1e90611816565b15905061060c57600081815260066020526040812061060c91611495565b60006001600160a01b0384163b1561102f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610f8090339089908890889060040161199d565b6020604051808303816000875af1925050508015610fbb575060408051601f3d908101601f19168201909252610fb8918101906119da565b60015b611015573d808015610fe9576040519150601f19603f3d011682016040523d82523d6000602084013e610fee565b606091505b50805161100d5760405162461bcd60e51b815260040161040d9061191c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506109e7565b506001949350505050565b60606110458261087a565b6110a95760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161040d565b60006110c060408051602081019091526000815290565b905060008151116110e0576040518060200160405280600081525061110b565b806110ea846111e0565b6040516020016110fb92919061196e565b6040516020818303038152906040525b9392505050565b61111c83836112de565b6111296000848484610f3c565b6105435760405162461bcd60e51b815260040161040d9061191c565b60006111508261060f565b905061115d600083610897565b6001600160a01b03811660009081526003602052604081208054600192906111869084906118ed565b909155505060008281526002602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6060816112045750506040805180820190915260018152600360fc1b602082015290565b8160005b811561122e5780611218816119f7565b91506112279050600a83611a28565b9150611208565b60008167ffffffffffffffff81111561124957611249611670565b6040519080825280601f01601f191660200182016040528015611273576020820181803683370190505b5090505b84156109e7576112886001836118ed565b9150611295600a86611a3c565b6112a0906030611904565b60f81b8183815181106112b5576112b5611a50565b60200101906001600160f81b031916908160001a9053506112d7600a86611a28565b9450611277565b6001600160a01b0382166113345760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161040d565b61133d8161087a565b1561138a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161040d565b6001600160a01b03821660009081526003602052604081208054600192906113b3908490611904565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461141d90611816565b90600052602060002090601f01602090048101928261143f5760008555611485565b82601f1061145857805160ff1916838001178555611485565b82800160010185558215611485579182015b8281111561148557825182559160200191906001019061146a565b506114919291506114cb565b5090565b5080546114a190611816565b6000825580601f106114b1575050565b601f01602090049060005260206000209081019061060c91905b5b8082111561149157600081556001016114cc565b6001600160e01b03198116811461060c57600080fd5b60006020828403121561150857600080fd5b813561110b816114e0565b60005b8381101561152e578181015183820152602001611516565b838111156107935750506000910152565b60008151808452611557816020860160208601611513565b601f01601f19169290920160200192915050565b60208152600061110b602083018461153f565b60006020828403121561159057600080fd5b5035919050565b80356001600160a01b03811681146115ae57600080fd5b919050565b600080604083850312156115c657600080fd5b6115cf83611597565b946020939093013593505050565b6000806000606084860312156115f257600080fd5b6115fb84611597565b925061160960208501611597565b9150604084013590509250925092565b60006020828403121561162b57600080fd5b61110b82611597565b6000806040838503121561164757600080fd5b61165083611597565b91506020830135801515811461166557600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156116a1576116a1611670565b604051601f8501601f19908116603f011681019082821181831017156116c9576116c9611670565b816040528093508581528686860111156116e257600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561171257600080fd5b61171b85611597565b935061172960208601611597565b925060408501359150606085013567ffffffffffffffff81111561174c57600080fd5b8501601f8101871361175d57600080fd5b61176c87823560208401611686565b91505092959194509250565b60008060006060848603121561178d57600080fd5b61179684611597565b925060208401359150604084013567ffffffffffffffff8111156117b957600080fd5b8401601f810186136117ca57600080fd5b6117d986823560208401611686565b9150509250925092565b600080604083850312156117f657600080fd5b6117ff83611597565b915061180d60208401611597565b90509250929050565b600181811c9082168061182a57607f821691505b6020821081141561184b57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000828210156118ff576118ff6118d7565b500390565b60008219821115611917576119176118d7565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008351611980818460208801611513565b835190830190611994818360208801611513565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906119d09083018461153f565b9695505050505050565b6000602082840312156119ec57600080fd5b81516