{ "_format": "hh3-artifact-1", "contractName": "EasyTokenDocument", "sourceName": "contracts/EasyTokenDocument.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "admin", "type": "address" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "AppraisalUpdated", "type": "event" }, { "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": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isBlacklisted", "type": "bool" } ], "name": "BlacklistUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "string", "name": "uri", "type": "string" }, { "indexed": false, "internalType": "bytes32", "name": "documentHash", "type": "bytes32" }, { "indexed": false, "internalType": "uint256", "name": "appraisalValue", "type": "uint256" } ], "name": "DocumentMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "uri", "type": "string" } ], "name": "TokenURIUpdated", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "APPRAISER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "COMPLIANCE_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": "METADATA_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PAUSER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "appraisalOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "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": "documentHashOf", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "address", "name": "account", "type": "address" } ], "name": "grantComplianceRole", "outputs": [], "stateMutability": "nonpayable", "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": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isBlacklisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "address", "name": "to", "type": "address" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "bytes32", "name": "documentHash", "type": "bytes32" }, { "internalType": "uint256", "name": "appraisalValue", "type": "uint256" } ], "name": "safeMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "setAppraisal", "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": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "setBlacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setTokenURI", "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": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "valueDecimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" } ], "bytecode": "0x608060405234801561000f575f5ffd5b506040516123ac3803806123ac83398101604081905261002e91610281565b81815f61003b8382610387565b5060016100488282610387565b5061005791505f905084610137565b506100827f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a84610137565b506100ad7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a684610137565b506100d87f6bd6b5318a46e5fff572d5e4258a20774aab40cc35ac7680654b9081fcc82f8084610137565b506101037f8f831c56b3d9bf5e541f4e1b3b7f898cdb4b80ba7a4af71f8797c706fd21674e84610137565b5061012e7f442a94f1a1fac79af32856af2a64f63648cfa2ef3b98610a5bb7cbec4cee698584610137565b50505050610441565b5f8281526008602090815260408083206001600160a01b038516845290915281205460ff166101db575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101933390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101de565b505f5b92915050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610207575f5ffd5b81516001600160401b03811115610220576102206101e4565b604051601f8201601f19908116603f011681016001600160401b038111828210171561024e5761024e6101e4565b604052818152838201602001851015610265575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f60608486031215610293575f5ffd5b83516001600160a01b03811681146102a9575f5ffd5b60208501519093506001600160401b038111156102c4575f5ffd5b6102d0868287016101f8565b604086015190935090506001600160401b038111156102ed575f5ffd5b6102f9868287016101f8565b9150509250925092565b600181811c9082168061031757607f821691505b60208210810361033557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561038257805f5260205f20601f840160051c810160208510156103605750805b601f840160051c820191505b8181101561037f575f815560010161036c565b50505b505050565b81516001600160401b038111156103a0576103a06101e4565b6103b4816103ae8454610303565b8461033b565b6020601f8211600181146103e6575f83156103cf5750848201515b5f19600385901b1c1916600184901b17845561037f565b5f84815260208120601f198516915b8281101561041557878501518255602094850194600190920191016103f5565b508482101561043257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b611f5e8061044e5f395ff3fe608060405234801561000f575f5ffd5b506004361061021e575f3560e01c80635c975abb1161012a578063a7250552116100b4578063d539139311610079578063d5391393146104eb578063d547741f14610512578063e63ab1e914610525578063e985e9c51461054c578063fe575a871461055f575f5ffd5b8063a725055214610478578063aa0ab9b41461048b578063acdd7c7e1461049e578063b88d4fde146104c5578063c87b56dd146104d8575f5ffd5b806391d14854116100fa57806391d148541461042457806395d89b4114610437578063a217fddf1461043f578063a22cb46514610446578063a2a8516214610459575f5ffd5b80635c975abb146103eb5780636352211e146103f657806370a08231146104095780638456cb591461041c575f5ffd5b8063248a9ca3116101ab578063388417821161017b57806338841782146103875780633e7e8669146103ae5780633f4ba83a146103bd57806342842e0e146103c557806342966c68146103d8575f5ffd5b8063248a9ca31461032c5780632d7d6de31461034e5780632f2ff15d1461036157806336568abe14610374575f5ffd5b8063095ea7b3116101f1578063095ea7b3146102bf57806311053490146102d4578063153b0d1e146102f3578063162094c41461030657806323b872dd14610319575f5ffd5b806301ffc9a714610222578063062d3bd71461024a57806306fdde031461027f578063081812fc14610294575b5f5ffd5b610235610230366004611991565b61058a565b60405190151581526020015b60405180910390f35b6102717f442a94f1a1fac79af32856af2a64f63648cfa2ef3b98610a5bb7cbec4cee698581565b604051908152602001610241565b61028761059a565b60405161024191906119da565b6102a76102a23660046119ec565b610629565b6040516001600160a01b039091168152602001610241565b6102d26102cd366004611a1e565b610650565b005b6102716102e23660046119ec565b5f908152600b602052604090205490565b6102d2610301366004611a46565b6106dd565b6102d2610314366004611b28565b610767565b6102d2610327366004611b6c565b61081e565b61027161033a3660046119ec565b5f9081526008602052604090206001015490565b6102d261035c366004611ba6565b6108a7565b6102d261036f366004611bbf565b6108e0565b6102d2610382366004611bbf565b610904565b6102717f6bd6b5318a46e5fff572d5e4258a20774aab40cc35ac7680654b9081fcc82f8081565b60405160068152602001610241565b6102d2610937565b6102d26103d3366004611b6c565b61096c565b6102d26103e63660046119ec565b610986565b60075460ff16610235565b6102a76104043660046119ec565b610991565b610271610417366004611ba6565b61099b565b6102d26109e0565b610235610432366004611bbf565b610a12565b610287610a3c565b6102715f81565b6102d2610454366004611a46565b610a4b565b6102716104673660046119ec565b5f908152600a602052604090205490565b6102d2610486366004611be9565b610ac2565b610271610499366004611c09565b610b95565b6102717f8f831c56b3d9bf5e541f4e1b3b7f898cdb4b80ba7a4af71f8797c706fd21674e81565b6102d26104d3366004611c63565b610c92565b6102876104e63660046119ec565b610caa565b6102717f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102d2610520366004611bbf565b610cb5565b6102717f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023561055a366004611cda565b610cd9565b61023561056d366004611ba6565b6001600160a01b03165f9081526009602052604090205460ff1690565b5f61059482610d06565b92915050565b60605f80546105a890611d02565b80601f01602080910402602001604051908101604052809291908181526020018280546105d490611d02565b801561061f5780601f106105f65761010080835404028352916020019161061f565b820191905f5260205f20905b81548152906001019060200180831161060257829003601f168201915b5050505050905090565b5f61063382610d2a565b505f828152600460205260409020546001600160a01b0316610594565b335f9081526009602052604090205460ff16156106885760405162461bcd60e51b815260040161067f90611d3a565b60405180910390fd5b6001600160a01b038216156106cf576001600160a01b0382165f9081526009602052604090205460ff16156106cf5760405162461bcd60e51b815260040161067f90611d3a565b6106d98282610d62565b5050565b7f442a94f1a1fac79af32856af2a64f63648cfa2ef3b98610a5bb7cbec4cee698561070781610d6d565b6001600160a01b0383165f81815260096020908152604091829020805460ff191686151590811790915591519182527f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac91015b60405180910390a2505050565b7f6bd6b5318a46e5fff572d5e4258a20774aab40cc35ac7680654b9081fcc82f8061079181610d6d565b5f838152600260205260409020546001600160a01b03166107e45760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161067f565b6107ee8383610d77565b827f931f495b9a8e5d8e61946ea5d61e021f636cfe213a801f97589c18c152e408bd8360405161075a91906119da565b6001600160a01b03821661084757604051633250574960e11b81525f600482015260240161067f565b5f610853838333610dc6565b9050836001600160a01b0316816001600160a01b0316146108a1576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161067f565b50505050565b5f6108b181610d6d565b6108db7f442a94f1a1fac79af32856af2a64f63648cfa2ef3b98610a5bb7cbec4cee698583610edb565b505050565b5f828152600860205260409020600101546108fa81610d6d565b6108a18383610edb565b6001600160a01b038116331461092d5760405163334bd91960e11b815260040160405180910390fd5b6108db8282610f6c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61096181610d6d565b610969610fd7565b50565b6108db83838360405180602001604052805f815250610c92565b6106d95f8233610dc6565b5f61059482610d2a565b5f6001600160a01b0382166109c5576040516322718ad960e21b81525f600482015260240161067f565b506001600160a01b03165f9081526003602052604090205490565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0a81610d6d565b610969611029565b5f9182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600180546105a890611d02565b335f9081526009602052604090205460ff1615610a7a5760405162461bcd60e51b815260040161067f90611d3a565b8015610ab8576001600160a01b0382165f9081526009602052604090205460ff1615610ab85760405162461bcd60e51b815260040161067f90611d3a565b6106d98282611066565b7f8f831c56b3d9bf5e541f4e1b3b7f898cdb4b80ba7a4af71f8797c706fd21674e610aec81610d6d565b5f838152600260205260409020546001600160a01b0316610b3f5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161067f565b5f838152600b602090815260409182902080549085905582518181529182018590529185917f055b6ecdc3a759107dd03f782e78b1bef12002fb27ffddb3a020554573abdc90910160405180910390a250505050565b5f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610bc081610d6d565b6001600160a01b0386165f9081526009602052604090205460ff1615610bf85760405162461bcd60e51b815260040161067f90611d3a565b5f600c5f8154610c0790611d5f565b91829055509050610c188782611071565b610c228187610d77565b5f818152600a60209081526040808320889055600b90915290819020859055516001600160a01b0388169082907f5d58de27b660562743bb3387ee08155a84e64dccc56b63d96ac6d6a563b7e3a990610c80908a908a908a90611d83565b60405180910390a39695505050505050565b610c9d84848461081e565b6108a1338585858561108a565b6060610594826111b2565b5f82815260086020526040902060010154610ccf81610d6d565b6108a18383610f6c565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b03198216637965db0b60e01b14806105945750610594826112bd565b5f818152600260205260408120546001600160a01b03168061059457604051637e27328960e01b81526004810184905260240161067f565b6106d98282336112e1565b61096981336112ee565b5f828152600660205260409020610d8e8282611deb565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b5f828152600260205260408120546001600160a01b03168015610e1b576001600160a01b0381165f9081526009602052604090205460ff1615610e1b5760405162461bcd60e51b815260040161067f90611d3a565b6001600160a01b03851615610e62576001600160a01b0385165f9081526009602052604090205460ff1615610e625760405162461bcd60e51b815260040161067f90611d3a565b6001600160a01b0383165f9081526009602052604090205460ff1615610e9a5760405162461bcd60e51b815260040161067f90611d3a565b5f610ea6868686611327565b90506001600160a01b038616610ed2575f858152600a60209081526040808320839055600b9091528120555b95945050505050565b5f610ee68383610a12565b610f65575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff19166001179055610f1d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610594565b505f610594565b5f610f778383610a12565b15610f65575f8381526008602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610594565b610fdf61133b565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b611031611360565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861100c3390565b6106d9338383611384565b6106d9828260405180602001604052805f815250611422565b6001600160a01b0383163b156111ab57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906110cc908890889087908790600401611ea6565b6020604051808303815f875af1925050508015611106575060408051601f3d908101601f1916820190925261110391810190611ee2565b60015b61116d573d808015611133576040519150601f19603f3d011682016040523d82523d5f602084013e611138565b606091505b5080515f0361116557604051633250574960e11b81526001600160a01b038516600482015260240161067f565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b146111a957604051633250574960e11b81526001600160a01b038516600482015260240161067f565b505b5050505050565b60606111bd82610d2a565b505f82815260066020526040812080546111d690611d02565b80601f016020809104026020016040519081016040528092919081815260200182805461120290611d02565b801561124d5780601f106112245761010080835404028352916020019161124d565b820191905f5260205f20905b81548152906001019060200180831161123057829003601f168201915b505050505090505f61126960408051602081019091525f815290565b905080515f0361127a575092915050565b8151156112ac578082604051602001611294929190611f14565b60405160208183030381529060405292505050919050565b6112b584611439565b949350505050565b5f6001600160e01b03198216632483248360e11b14806105945750610594826114aa565b6108db83838360016114f9565b6112f88282610a12565b6106d95760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161067f565b5f611330611360565b6112b58484846115fd565b60075460ff1661135e57604051638dfc202b60e01b815260040160405180910390fd5b565b60075460ff161561135e5760405163d93c066560e01b815260040160405180910390fd5b6001600160a01b0382166113b657604051630b61174360e31b81526001600160a01b038316600482015260240161067f565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61142c83836116ef565b6108db335f85858561108a565b606061144482610d2a565b505f61145a60408051602081019091525f815290565b90505f8151116114785760405180602001604052805f8152506114a3565b8061148284611750565b604051602001611493929190611f14565b6040516020818303038152906040525b9392505050565b5f6001600160e01b031982166380ac58cd60e01b14806114da57506001600160e01b03198216635b5e139f60e01b145b8061059457506301ffc9a760e01b6001600160e01b0319831614610594565b808061150d57506001600160a01b03821615155b156115ce575f61151c84610d2a565b90506001600160a01b038316158015906115485750826001600160a01b0316816001600160a01b031614155b801561155b57506115598184610cd9565b155b156115845760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161067f565b81156115cc5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f828152600260205260408120546001600160a01b0390811690831615611629576116298184866117e0565b6001600160a01b03811615611663576116445f855f5f6114f9565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615611691576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b03821661171857604051633250574960e11b81525f600482015260240161067f565b5f61172483835f610dc6565b90506001600160a01b038116156108db576040516339e3563760e11b81525f600482015260240161067f565b60605f61175c83611844565b60010190505f8167ffffffffffffffff81111561177b5761177b611a7f565b6040519080825280601f01601f1916602001820160405280156117a5576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846117af57509392505050565b6117eb83838361191b565b6108db576001600160a01b03831661181957604051637e27328960e01b81526004810182905260240161067f565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161067f565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106118825772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106118ae576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106118cc57662386f26fc10000830492506010015b6305f5e10083106118e4576305f5e100830492506008015b61271083106118f857612710830492506004015b6064831061190a576064830492506002015b600a83106105945760010192915050565b5f6001600160a01b038316158015906112b55750826001600160a01b0316846001600160a01b0316148061195457506119548484610cd9565b806112b55750505f908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114610969575f5ffd5b5f602082840312156119a1575f5ffd5b81356114a38161197c565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6114a360208301846119ac565b5f602082840312156119fc575f5ffd5b5035919050565b80356001600160a01b0381168114611a19575f5ffd5b919050565b5f5f60408385031215611a2f575f5ffd5b611a3883611a03565b946020939093013593505050565b5f5f60408385031215611a57575f5ffd5b611a6083611a03565b915060208301358015158114611a74575f5ffd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f67ffffffffffffffff841115611aad57611aad611a7f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715611adc57611adc611a7f565b604052838152905080828401851015611af3575f5ffd5b838360208301375f60208583010152509392505050565b5f82601f830112611b19575f5ffd5b6114a383833560208501611a93565b5f5f60408385031215611b39575f5ffd5b82359150602083013567ffffffffffffffff811115611b56575f5ffd5b611b6285828601611b0a565b9150509250929050565b5f5f5f60608486031215611b7e575f5ffd5b611b8784611a03565b9250611b9560208501611a03565b929592945050506040919091013590565b5f60208284031215611bb6575f5ffd5b6114a382611a03565b5f5f60408385031215611bd0575f5ffd5b82359150611be060208401611a03565b90509250929050565b5f5f60408385031215611bfa575f5ffd5b50508035926020909101359150565b5f5f5f5f60808587031215611c1c575f5ffd5b611c2585611a03565b9350602085013567ffffffffffffffff811115611c40575f5ffd5b611c4c87828801611b0a565b949794965050505060408301359260600135919050565b5f5f5f5f60808587031215611c76575f5ffd5b611c7f85611a03565b9350611c8d60208601611a03565b925060408501359150606085013567ffffffffffffffff811115611caf575f5ffd5b8501601f81018713611cbf575f5ffd5b611cce87823560208401611a93565b91505092959194509250565b5f5f60408385031215611ceb575f5ffd5b611cf483611a03565b9150611be060208401611a03565b600181811c90821680611d1657607f821691505b602082108103611d3457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600b908201526a109b1858dadb1a5cdd195960aa1b604082015260600190565b5f60018201611d7c57634e487b7160e01b5f52601160045260245ffd5b5060010190565b606081525f611d9560608301866119ac565b60208301949094525060400152919050565b601f8211156108db57805f5260205f20601f840160051c81016020851015611dcc5750805b601f840160051c820191505b818110156111ab575f8155600101611dd8565b815167ffffffffffffffff811115611e0557611e05611a7f565b611e1981611e138454611d02565b84611da7565b6020601f821160018114611e4b575f8315611e345750848201515b5f19600385901b1c1916600184901b1784556111ab565b5f84815260208120601f198516915b82811015611e7a5787850151825560209485019460019092019101611e5a565b5084821015611e9757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90611ed8908301846119ac565b9695505050505050565b5f60208284031215611ef2575f5ffd5b81516114a38161197c565b5f81518060208401855e5f93019283525090919050565b5f6112b5611f228386611efd565b84611efd56fea2646970667358221220c5c72ea9c8eac98f8e49c1dae5d77a4a1d83ae2b4bdb95843c023e2ab1134a3664736f6c634300081c0033", "deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061021e575f3560e01c80635c975abb1161012a578063a7250552116100b4578063d539139311610079578063d5391393146104eb578063d547741f14610512578063e63ab1e914610525578063e985e9c51461054c578063fe575a871461055f575f5ffd5b8063a725055214610478578063aa0ab9b41461048b578063acdd7c7e1461049e578063b88d4fde146104c5578063c87b56dd146104d8575f5ffd5b806391d14854116100fa57806391d148541461042457806395d89b4114610437578063a217fddf1461043f578063a22cb46514610446578063a2a8516214610459575f5ffd5b80635c975abb146103eb5780636352211e146103f657806370a08231146104095780638456cb591461041c575f5ffd5b8063248a9ca3116101ab578063388417821161017b57806338841782146103875780633e7e8669146103ae5780633f4ba83a146103bd57806342842e0e146103c557806342966c68146103d8575f5ffd5b8063248a9ca31461032c5780632d7d6de31461034e5780632f2ff15d1461036157806336568abe14610374575f5ffd5b8063095ea7b3116101f1578063095ea7b3146102bf57806311053490146102d4578063153b0d1e146102f3578063162094c41461030657806323b872dd14610319575f5ffd5b806301ffc9a714610222578063062d3bd71461024a57806306fdde031461027f578063081812fc14610294575b5f5ffd5b610235610230366004611991565b61058a565b60405190151581526020015b60405180910390f35b6102717f442a94f1a1fac79af32856af2a64f63648cfa2ef3b98610a5bb7cbec4cee698581565b604051908152602001610241565b61028761059a565b60405161024191906119da565b6102a76102a23660046119ec565b610629565b6040516001600160a01b039091168152602001610241565b6102d26102cd366004611a1e565b610650565b005b6102716102e23660046119ec565b5f908152600b602052604090205490565b6102d2610301366004611a46565b6106dd565b6102d2610314366004611b28565b610767565b6102d2610327366004611b6c565b61081e565b61027161033a3660046119ec565b5f9081526008602052604090206001015490565b6102d261035c366004611ba6565b6108a7565b6102d261036f366004611bbf565b6108e0565b6102d2610382366004611bbf565b610904565b6102717f6bd6b5318a46e5fff572d5e4258a20774aab40cc35ac7680654b9081fcc82f8081565b60405160068152602001610241565b6102d2610937565b6102d26103d3366004611b6c565b61096c565b6102d26103e63660046119ec565b610986565b60075460ff16610235565b6102a76104043660046119ec565b610991565b610271610417366004611ba6565b61099b565b6102d26109e0565b610235610432366004611bbf565b610a12565b610287610a3c565b6102715f81565b6102d2610454366004611a46565b610a4b565b6102716104673660046119ec565b5f908152600a602052604090205490565b6102d2610486366004611be9565b610ac2565b610271610499366004611c09565b610b95565b6102717f8f831c56b3d9bf5e541f4e1b3b7f898cdb4b80ba7a4af71f8797c706fd21674e81565b6102d26104d3366004611c63565b610c92565b6102876104e63660046119ec565b610caa565b6102717f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102d2610520366004611bbf565b610cb5565b6102717f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023561055a366004611cda565b610cd9565b61023561056d366004611ba6565b6001600160a01b03165f9081526009602052604090205460ff1690565b5f61059482610d06565b92915050565b60605f80546105a890611d02565b80601f01602080910402602001604051908101604052809291908181526020018280546105d490611d02565b801561061f5780601f106105f65761010080835404028352916020019161061f565b820191905f5260205f20905b81548152906001019060200180831161060257829003601f168201915b5050505050905090565b5f61063382610d2a565b505f828152600460205260409020546001600160a01b0316610594565b335f9081526009602052604090205460ff16156106885760405162461bcd60e51b815260040161067f90611d3a565b60405180910390fd5b6001600160a01b038216156106cf576001600160a01b0382165f9081526009602052604090205460ff16156106cf5760405162461bcd60e51b815260040161067f90611d3a565b6106d98282610d62565b5050565b7f442a94f1a1fac79af32856af2a64f63648cfa2ef3b98610a5bb7cbec4cee698561070781610d6d565b6001600160a01b0383165f81815260096020908152604091829020805460ff191686151590811790915591519182527f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac91015b60405180910390a2505050565b7f6bd6b5318a46e5fff572d5e4258a20774aab40cc35ac7680654b9081fcc82f8061079181610d6d565b5f838152600260205260409020546001600160a01b03166107e45760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161067f565b6107ee8383610d77565b827f931f495b9a8e5d8e61946ea5d61e021f636cfe213a801f97589c18c152e408bd8360405161075a91906119da565b6001600160a01b03821661084757604051633250574960e11b81525f600482015260240161067f565b5f610853838333610dc6565b9050836001600160a01b0316816001600160a01b0316146108a1576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161067f565b50505050565b5f6108b181610d6d565b6108db7f442a94f1a1fac79af32856af2a64f63648cfa2ef3b98610a5bb7cbec4cee698583610edb565b505050565b5f828152600860205260409020600101546108fa81610d6d565b6108a18383610edb565b6001600160a01b038116331461092d5760405163334bd91960e11b815260040160405180910390fd5b6108db8282610f6c565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61096181610d6d565b610969610fd7565b50565b6108db83838360405180602001604052805f815250610c92565b6106d95f8233610dc6565b5f61059482610d2a565b5f6001600160a01b0382166109c5576040516322718ad960e21b81525f600482015260240161067f565b506001600160a01b03165f9081526003602052604090205490565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a0a81610d6d565b610969611029565b5f9182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600180546105a890611d02565b335f9081526009602052604090205460ff1615610a7a5760405162461bcd60e51b815260040161067f90611d3a565b8015610ab8576001600160a01b0382165f9081526009602052604090205460ff1615610ab85760405162461bcd60e51b815260040161067f90611d3a565b6106d98282611066565b7f8f831c56b3d9bf5e541f4e1b3b7f898cdb4b80ba7a4af71f8797c706fd21674e610aec81610d6d565b5f838152600260205260409020546001600160a01b0316610b3f5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161067f565b5f838152600b602090815260409182902080549085905582518181529182018590529185917f055b6ecdc3a759107dd03f782e78b1bef12002fb27ffddb3a020554573abdc90910160405180910390a250505050565b5f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610bc081610d6d565b6001600160a01b0386165f9081526009602052604090205460ff1615610bf85760405162461bcd60e51b815260040161067f90611d3a565b5f600c5f8154610c0790611d5f565b91829055509050610c188782611071565b610c228187610d77565b5f818152600a60209081526040808320889055600b90915290819020859055516001600160a01b0388169082907f5d58de27b660562743bb3387ee08155a84e64dccc56b63d96ac6d6a563b7e3a990610c80908a908a908a90611d83565b60405180910390a39695505050505050565b610c9d84848461081e565b6108a1338585858561108a565b6060610594826111b2565b5f82815260086020526040902060010154610ccf81610d6d565b6108a18383610f6c565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b03198216637965db0b60e01b14806105945750610594826112bd565b5f818152600260205260408120546001600160a01b03168061059457604051637e27328960e01b81526004810184905260240161067f565b6106d98282336112e1565b61096981336112ee565b5f828152600660205260409020610d8e8282611deb565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b5f828152600260205260408120546001600160a01b03168015610e1b576001600160a01b0381165f9081526009602052604090205460ff1615610e1b5760405162461bcd60e51b815260040161067f90611d3a565b6001600160a01b03851615610e62576001600160a01b0385165f9081526009602052604090205460ff1615610e625760405162461bcd60e51b815260040161067f90611d3a565b6001600160a01b0383165f9081526009602052604090205460ff1615610e9a5760405162461bcd60e51b815260040161067f90611d3a565b5f610ea6868686611327565b90506001600160a01b038616610ed2575f858152600a60209081526040808320839055600b9091528120555b95945050505050565b5f610ee68383610a12565b610f65575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff19166001179055610f1d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610594565b505f610594565b5f610f778383610a12565b15610f65575f8381526008602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610594565b610fdf61133b565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b611031611360565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861100c3390565b6106d9338383611384565b6106d9828260405180602001604052805f815250611422565b6001600160a01b0383163b156111ab57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906110cc908890889087908790600401611ea6565b6020604051808303815f875af1925050508015611106575060408051601f3d908101601f1916820190925261110391810190611ee2565b60015b61116d573d808015611133576040519150601f19603f3d011682016040523d82523d5f602084013e611138565b606091505b5080515f0361116557604051633250574960e11b81526001600160a01b038516600482015260240161067f565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b146111a957604051633250574960e11b81526001600160a01b038516600482015260240161067f565b505b5050505050565b60606111bd82610d2a565b505f82815260066020526040812080546111d690611d02565b80601f016020809104026020016040519081016040528092919081815260200182805461120290611d02565b801561124d5780601f106112245761010080835404028352916020019161124d565b820191905f5260205f20905b81548152906001019060200180831161123057829003601f168201915b505050505090505f61126960408051602081019091525f815290565b905080515f0361127a575092915050565b8151156112ac578082604051602001611294929190611f14565b60405160208183030381529060405292505050919050565b6112b584611439565b949350505050565b5f6001600160e01b03198216632483248360e11b14806105945750610594826114aa565b6108db83838360016114f9565b6112f88282610a12565b6106d95760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161067f565b5f611330611360565b6112b58484846115fd565b60075460ff1661135e57604051638dfc202b60e01b815260040160405180910390fd5b565b60075460ff161561135e5760405163d93c066560e01b815260040160405180910390fd5b6001600160a01b0382166113b657604051630b61174360e31b81526001600160a01b038316600482015260240161067f565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61142c83836116ef565b6108db335f85858561108a565b606061144482610d2a565b505f61145a60408051602081019091525f815290565b90505f8151116114785760405180602001604052805f8152506114a3565b8061148284611750565b604051602001611493929190611f14565b6040516020818303038152906040525b9392505050565b5f6001600160e01b031982166380ac58cd60e01b14806114da57506001600160e01b03198216635b5e139f60e01b145b8061059457506301ffc9a760e01b6001600160e01b0319831614610594565b808061150d57506001600160a01b03821615155b156115ce575f61151c84610d2a565b90506001600160a01b038316158015906115485750826001600160a01b0316816001600160a01b031614155b801561155b57506115598184610cd9565b155b156115845760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161067f565b81156115cc5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f828152600260205260408120546001600160a01b0390811690831615611629576116298184866117e0565b6001600160a01b03811615611663576116445f855f5f6114f9565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615611691576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b03821661171857604051633250574960e11b81525f600482015260240161067f565b5f61172483835f610dc6565b90506001600160a01b038116156108db576040516339e3563760e11b81525f600482015260240161067f565b60605f61175c83611844565b60010190505f8167ffffffffffffffff81111561177b5761177b611a7f565b6040519080825280601f01601f1916602001820160405280156117a5576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846117af57509392505050565b6117eb83838361191b565b6108db576001600160a01b03831661181957604051637e27328960e01b81526004810182905260240161067f565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161067f565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106118825772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106118ae576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106118cc57662386f26fc10000830492506010015b6305f5e10083106118e4576305f5e100830492506008015b61271083106118f857612710830492506004015b6064831061190a576064830492506002015b600a83106105945760010192915050565b5f6001600160a01b038316158015906112b55750826001600160a01b0316846001600160a01b0316148061195457506119548484610cd9565b806112b55750505f908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114610969575f5ffd5b5f602082840312156119a1575f5ffd5b81356114a38161197c565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6114a360208301846119ac565b5f602082840312156119fc575f5ffd5b5035919050565b80356001600160a01b0381168114611a19575f5ffd5b919050565b5f5f60408385031215611a2f575f5ffd5b611a3883611a03565b946020939093013593505050565b5f5f60408385031215611a57575f5ffd5b611a6083611a03565b915060208301358015158114611a74575f5ffd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f67ffffffffffffffff841115611aad57611aad611a7f565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715611adc57611adc611a7f565b604052838152905080828401851015611af3575f5ffd5b838360208301375f60208583010152509392505050565b5f82601f830112611b19575f5ffd5b6114a383833560208501611a93565b5f5f60408385031215611b39575f5ffd5b82359150602083013567ffffffffffffffff811115611b56575f5ffd5b611b6285828601611b0a565b9150509250929050565b5f5f5f60608486031215611b7e575f5ffd5b611b8784611a03565b9250611b9560208501611a03565b929592945050506040919091013590565b5f60208284031215611bb6575f5ffd5b6114a382611a03565b5f5f60408385031215611bd0575f5ffd5b82359150611be060208401611a03565b90509250929050565b5f5f60408385031215611bfa575f5ffd5b50508035926020909101359150565b5f5f5f5f60808587031215611c1c575f5ffd5b611c2585611a03565b9350602085013567ffffffffffffffff811115611c40575f5ffd5b611c4c87828801611b0a565b949794965050505060408301359260600135919050565b5f5f5f5f60808587031215611c76575f5ffd5b611c7f85611a03565b9350611c8d60208601611a03565b925060408501359150606085013567ffffffffffffffff811115611caf575f5ffd5b8501601f81018713611cbf575f5ffd5b611cce87823560208401611a93565b91505092959194509250565b5f5f60408385031215611ceb575f5ffd5b611cf483611a03565b9150611be060208401611a03565b600181811c90821680611d1657607f821691505b602082108103611d3457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600b908201526a109b1858dadb1a5cdd195960aa1b604082015260600190565b5f60018201611d7c57634e487b7160e01b5f52601160045260245ffd5b5060010190565b606081525f611d9560608301866119ac565b60208301949094525060400152919050565b601f8211156108db57805f5260205f20601f840160051c81016020851015611dcc5750805b601f840160051c820191505b818110156111ab575f8155600101611dd8565b815167ffffffffffffffff811115611e0557611e05611a7f565b611e1981611e138454611d02565b84611da7565b6020601f821160018114611e4b575f8315611e345750848201515b5f19600385901b1c1916600184901b1784556111ab565b5f84815260208120601f198516915b82811015611e7a5787850151825560209485019460019092019101611e5a565b5084821015611e9757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90611ed8908301846119ac565b9695505050505050565b5f60208284031215611ef2575f5ffd5b81516114a38161197c565b5f81518060208401855e5f93019283525090919050565b5f6112b5611f228386611efd565b84611efd56fea2646970667358221220c5c72ea9c8eac98f8e49c1dae5d77a4a1d83ae2b4bdb95843c023e2ab1134a3664736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {}, "immutableReferences": {}, "inputSourceName": "project/contracts/EasyTokenDocument.sol", "buildInfoId": "solc-0_8_28-f9fa217b6eb02192b8f34c6bcdba9eedb4043d7e" }