[ { "inputs": [], "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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "API_DELEGATE_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": "NFT_MANAGER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SERVICE_STATUS_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TOKEN_RECOVERY_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "claim", "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": [], "name": "getIsServiceActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getShouldLockTokensAfterMint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getShouldPreventTransferWhenLocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTokenLock", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "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": "isNumbered", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nftAnimationUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nftDescription", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nftImageUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nftTitle", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "recoverToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "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": "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": "bool", "name": "newIsNumbered", "type": "bool" } ], "name": "setIsNumbered", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "isServiceActive_", "type": "bool" } ], "name": "setIsServiceActive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newAnimationUri", "type": "string" } ], "name": "setNftAnimationUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newDescription", "type": "string" } ], "name": "setNftDescription", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newImageUri", "type": "string" } ], "name": "setNftImageUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newTitle", "type": "string" } ], "name": "setNftTitle", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_shouldLockTokensAfterMint", "type": "bool" } ], "name": "setShouldLockTokensAfterMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "lock", "type": "bool" } ], "name": "setShouldPreventTransferWhenLocked", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bool", "name": "locked", "type": "bool" } ], "name": "setTokenLock", "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": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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" } ]
60c0604052600f60809081526e1311d508115e185b5c1b1948139195608a1b60a052600890620000309082620003d0565b5060408051808201909152601681527f5468697320697320616e206578616d706c65204e4654000000000000000000006020820152600990620000749082620003d0565b50604080516020810190915260008152600a90620000939082620003d0565b506040518060800160405280605081526020016200360260509139600b90620000bd9082620003d0565b50600c805460ff19166001179055600e80546201010162ffffff19909116179055348015620000eb57600080fd5b50604080518082018252600d8082526c0446f6b796f4761636861506f7609c1b602080840182905284518086019095529184529083015290818181816001620001358382620003d0565b506002620001448282620003d0565b506000600455506200015a90506000336200022c565b620001867fbb99d67b6918694de70ec0223c9220db4cab33527a6e578d6a9d1b7dd96c5594336200022c565b50620001a49050600080516020620035e2833981519152336200022c565b620001bf60008051602062003652833981519152336200022c565b620001db600080516020620035e283398151915260006200023c565b620001f76000805160206200365283398151915260006200023c565b620002247f72d64eedbf63ef7644113b50b68861b1541fedf25e444f932c10247ea6a6424960006200023c565b50506200049c565b62000238828262000287565b5050565b600082815260076020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff16620002385760008281526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620002e73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200035657607f821691505b6020821081036200037757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003cb57600081815260208120601f850160051c81016020861015620003a65750805b601f850160051c820191505b81811015620003c757828155600101620003b2565b5050505b505050565b81516001600160401b03811115620003ec57620003ec6200032b565b6200040481620003fd845462000341565b846200037d565b602080601f8311600181146200043c5760008415620004235750858301515b600019600386901b1c1916600185901b178555620003c7565b600085815260208120601f198616915b828110156200046d578886015182559484019460019091019084016200044c565b50858210156200048c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61313680620004ac6000396000f3fe608060405234801561001057600080fd5b506004361061029e5760003560e01c80637a93683211610167578063b0b5babe116100ce578063d547741f11610087578063d547741f146105e7578063d8697598146105fa578063e68f3bd814610621578063e985e9c514610634578063eac21fa614610670578063f71373f01461068357600080fd5b8063b0b5babe14610563578063b88d4fde14610576578063bacef21a14610589578063c5ec3894146105b0578063c87b56dd146105c1578063cb1a233d146105d457600080fd5b80638c68051c116101205780638c68051c1461051257806391d148541461051a57806395d89b411461052d578063a217fddf14610535578063a22cb4651461053d578063aad3ec961461055057600080fd5b80637a936832146104a75780637c35aefb146104af5780637d37dbdc146104c25780638462151c146104d557806387c3e561146104f55780638ad44fd5146104fd57600080fd5b8063334344f91161020b5780634d11fac6116101c45780634d11fac614610424578063541deaf11461043757806358a5a2921461045e5780636352211e1461046e5780636a6278421461048157806370a082311461049457600080fd5b8063334344f9146103b257806336568abe146103c55780633c0f1e0f146103d857806340c10f19146103eb57806342842e0e146103fe57806342b545fc1461041157600080fd5b80630ac2f3271161025d5780630ac2f327146103405780631249c58b1461034b57806318160ddd1461035357806323b872dd14610369578063248a9ca31461037c5780632f2ff15d1461039f57600080fd5b8062340cf3146102a35780627cdadf146102c557806301ffc9a7146102da57806306fdde03146102ed578063081812fc14610302578063095ea7b31461032d575b600080fd5b600c546102b09060ff1681565b60405190151581526020015b60405180910390f35b6102d86102d33660046126a1565b61068b565b005b6102b06102e8366004612700565b6106d8565b6102f56106e9565b6040516102bc919061276d565b610315610310366004612780565b61077b565b6040516001600160a01b0390911681526020016102bc565b6102d861033b3660046127b5565b610806565b600e5460ff166102b0565b6102d861091d565b61035b61095e565b6040519081526020016102bc565b6102d86103773660046127df565b61096d565b61035b61038a366004612780565b60009081526007602052604090206001015490565b6102d86103ad36600461281b565b61099e565b6102d86103c03660046126a1565b6109c3565b6102d86103d336600461281b565b610a03565b6102d86103e6366004612857565b610a7d565b6102d86103f93660046127b5565b610b36565b6102d861040c3660046127df565b610b74565b6102d861041f3660046126a1565b610b8f565b6102d86104323660046126a1565b610bcf565b61035b7fbb99d67b6918694de70ec0223c9220db4cab33527a6e578d6a9d1b7dd96c559481565b600e54610100900460ff166102b0565b61031561047c366004612780565b610c0f565b6102d861048f366004612872565b610c23565b61035b6104a2366004612872565b610c65565b6102f5610d33565b6102d86104bd366004612857565b610dc1565b6102d86104d0366004612857565b610e08565b6104e86104e3366004612872565b610e72565b6040516102bc919061288d565b6102f5610f39565b61035b600080516020612f8183398151915281565b6102f5610f46565b6102b061052836600461281b565b610f53565b6102f5610f7e565b61035b600081565b6102d861054b3660046128d1565b610f8d565b6102d861055e3660046127b5565b611051565b6102b0610571366004612780565b61111a565b6102d86105843660046128fb565b611125565b61035b7f7a87a5aed8ddea36a21c49f3a893ecbb03e497df92e2c7914fabedb76920df9581565b600e5462010000900460ff166102b0565b6102f56105cf366004612780565b61115d565b6102d86105e2366004612780565b6111d5565b6102d86105f536600461281b565b611274565b61035b7f72d64eedbf63ef7644113b50b68861b1541fedf25e444f932c10247ea6a6424981565b6102d861062f366004612977565b611299565b6102b061064236600461299a565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b6102d861067e366004612857565b6112e9565b6102f561134c565b6106a3600080516020612f8183398151915233610f53565b6106c85760405162461bcd60e51b81526004016106bf906129c4565b60405180910390fd5b600a6106d48282612a80565b5050565b60006106e382611359565b92915050565b6060600180546106f890612a00565b80601f016020809104026020016040519081016040528092919081815260200182805461072490612a00565b80156107715780601f1061074657610100808354040283529160200191610771565b820191906000526020600020905b81548152906001019060200180831161075457829003601f168201915b5050505050905090565b600061078682611364565b6107ea5760405162461bcd60e51b815260206004820152602f60248201527f4552433732315073693a20617070726f76656420717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106bf565b506000908152600560205260409020546001600160a01b031690565b600061081182610c0f565b9050806001600160a01b0316836001600160a01b0316036108805760405162461bcd60e51b8152602060048201526024808201527f4552433732315073693a20617070726f76616c20746f2063757272656e74206f6044820152633bb732b960e11b60648201526084016106bf565b336001600160a01b038216148061089c575061089c8133610642565b61090e5760405162461bcd60e51b815260206004820152603b60248201527f4552433732315073693a20617070726f76652063616c6c6572206973206e6f7460448201527f206f776e6572206e6f7220617070726f76656420666f7220616c6c000000000060648201526084016106bf565b6109188383611380565b505050565b610935600080516020612f8183398151915233610f53565b6109515760405162461bcd60e51b81526004016106bf906129c4565b61095c3360016113ee565b565b6000610968611408565b905090565b6109773382611418565b6109935760405162461bcd60e51b81526004016106bf90612b40565b610918838383611505565b6000828152600760205260409020600101546109b98161170b565b6109188383611715565b6109db600080516020612f8183398151915233610f53565b6109f75760405162461bcd60e51b81526004016106bf906129c4565b600b6106d48282612a80565b6001600160a01b0381163314610a735760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016106bf565b6106d4828261179b565b610aa77f7a87a5aed8ddea36a21c49f3a893ecbb03e497df92e2c7914fabedb76920df9533610f53565b610b1a5760405162461bcd60e51b815260206004820152604a6024820152600080516020612fe183398151915260448201527f746f2073657420746865207365727669636520737461747573206f66207468696064820152691cc818dbdb9d1c9858dd60b21b608482015260a4016106bf565b600e8054911515620100000262ff000019909216919091179055565b610b4e600080516020612f8183398151915233610f53565b610b6a5760405162461bcd60e51b81526004016106bf906129c4565b6106d482826113ee565b61091883838360405180602001604052806000815250611125565b610ba7600080516020612f8183398151915233610f53565b610bc35760405162461bcd60e51b81526004016106bf906129c4565b60096106d48282612a80565b610be7600080516020612f8183398151915233610f53565b610c035760405162461bcd60e51b81526004016106bf906129c4565b60086106d48282612a80565b600080610c1b83611802565b509392505050565b610c3b600080516020612f8183398151915233610f53565b610c575760405162461bcd60e51b81526004016106bf906129c4565b610c628160016113ee565b50565b60006001600160a01b038216610cd35760405162461bcd60e51b815260206004820152602d60248201527f4552433732315073693a2062616c616e636520717565727920666f722074686560448201526c207a65726f206164647265737360981b60648201526084016106bf565b6000805b600454811015610d2c57610cea81611364565b15610d1c57610cf881610c0f565b6001600160a01b0316846001600160a01b031603610d1c57610d1982612baa565b91505b610d2581612baa565b9050610cd7565b5092915050565b600a8054610d4090612a00565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6c90612a00565b8015610db95780601f10610d8e57610100808354040283529160200191610db9565b820191906000526020600020905b815481529060010190602001808311610d9c57829003601f168201915b505050505081565b610dd9600080516020612f8183398151915233610f53565b610df55760405162461bcd60e51b81526004016106bf906129c4565b600c805460ff1916911515919091179055565b610e13600033610f53565b610e585760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1030b71030b236b4b760511b60448201526064016106bf565b600e80549115156101000261ff0019909216919091179055565b6060600080610e8084610c65565b905060008167ffffffffffffffff811115610e9d57610e9d612615565b604051908082528060200260200182016040528015610ec6578160200160208202803683370190505b50905060005b828414610f3057610edc81611364565b15610f2857856001600160a01b0316610ef482610c0f565b6001600160a01b031603610f285780828580600101965081518110610f1b57610f1b612bc3565b6020026020010181815250505b600101610ecc565b50949350505050565b60088054610d4090612a00565b600b8054610d4090612a00565b60009182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600280546106f890612a00565b336001600160a01b03831603610fe55760405162461bcd60e51b815260206004820152601c60248201527f4552433732315073693a20617070726f766520746f2063616c6c65720000000060448201526064016106bf565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61107b7fbb99d67b6918694de70ec0223c9220db4cab33527a6e578d6a9d1b7dd96c559433610f53565b6110975760405162461bcd60e51b81526004016106bf90612bd9565b6110a13382611418565b6111045760405162461bcd60e51b815260206004820152602e60248201527f4c6f636b65643732315073693a2043616c6c6572206973206e6f74206170707260448201526d37bb32b2103737b91037bbb732b960911b60648201526084016106bf565b61110f338383611505565b6106d4816000611899565b60006106e3826118b9565b61112f3383611418565b61114b5760405162461bcd60e51b81526004016106bf90612b40565b611157848484846118e6565b50505050565b606061116882611364565b6111cc5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106bf565b6106e38261191b565b6111ff7f72d64eedbf63ef7644113b50b68861b1541fedf25e444f932c10247ea6a6424933610f53565b6112515760405162461bcd60e51b815260206004820152602f6024820152600080516020612fe183398151915260448201526e746f207265636f766572204e46547360881b60648201526084016106bf565b610c6261125d82610c0f565b3383604051806020016040528060008152506118e6565b60008281526007602052604090206001015461128f8161170b565b610918838361179b565b6112c37fbb99d67b6918694de70ec0223c9220db4cab33527a6e578d6a9d1b7dd96c559433610f53565b6112df5760405162461bcd60e51b81526004016106bf90612bd9565b6106d48282611899565b6112f4600033610f53565b6113395760405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1030b71030b236b4b760511b60448201526064016106bf565b600e805460ff1916911515919091179055565b60098054610d4090612a00565b60006106e382611a47565b600061136f60045490565b821080156106e35750600192915050565b600081815260056020526040902080546001600160a01b0319166001600160a01b03841690811790915581906113b582610c0f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6106d4828260405180602001604052806000815250611a61565b6000806004546109689190612c24565b600061142382611364565b6114875760405162461bcd60e51b815260206004820152602f60248201527f4552433732315073693a206f70657261746f7220717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016106bf565b600061149283610c0f565b9050806001600160a01b0316846001600160a01b031614806114cd5750836001600160a01b03166114c28461077b565b6001600160a01b0316145b806114fd57506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b60008061151183611802565b91509150846001600160a01b0316826001600160a01b03161461158b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732315073693a207472616e73666572206f6620746f6b656e2074686160448201526b3a1034b9903737ba1037bbb760a11b60648201526084016106bf565b6001600160a01b0384166115f15760405162461bcd60e51b815260206004820152602760248201527f4552433732315073693a207472616e7366657220746f20746865207a65726f206044820152666164647265737360c81b60648201526084016106bf565b6115fe8585856001611a86565b611609600084611380565b6000611616846001612c37565b600881901c600090815260208190526040902054909150600160ff1b60ff83161c16158015611646575060045481105b1561167c57600081815260036020526040812080546001600160a01b0319166001600160a01b03891617905561167c9082611b15565b600084815260036020526040902080546001600160a01b0319166001600160a01b0387161790558184146116b5576116b5600085611b15565b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46117038686866001611b41565b505050505050565b610c628133611b4d565b61171f8282610f53565b6106d45760008281526007602090815260408083206001600160a01b03851684529091529020805460ff191660011790556117573390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6117a58282610f53565b156106d45760008281526007602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008061180e83611364565b61186f5760405162461bcd60e51b815260206004820152602c60248201527f4552433732315073693a206f776e657220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016106bf565b61187883611ba6565b6000818152600360205260409020546001600160a01b031694909350915050565b6000918252600d6020526040909120805460ff1916911515919091179055565b600e5460009062010000900460ff1680156106e357506000828152600d602052604090205460ff166106e3565b6118f1848484611505565b6118ff848484600185611bb2565b6111575760405162461bcd60e51b81526004016106bf90612c4a565b606060006008805461192c90612a00565b80601f016020809104026020016040519081016040528092919081815260200182805461195890612a00565b80156119a55780601f1061197a576101008083540402835291602001916119a5565b820191906000526020600020905b81548152906001019060200180831161198857829003601f168201915b5050600c54939450505060ff9091161590506119e95760086119c684611ce9565b6040516020016119d7929190612d12565b60405160208183030381529060405290505b6000816009600b600a604051602001611a059493929190612d45565b6040516020818303038152906040529050611a1f81611d7c565b604051602001611a2f9190612e1c565b60405160208183030381529060405292505050919050565b6000611a5282611ecf565b806106e357506106e382611f1f565b6000611a6c60045490565b9050611a788484611f44565b6118ff600085838686611bb2565b611a92848484846120d0565b15611b105760405162461bcd60e51b815260206004820152604260248201527f506c6561736520756e6c6f636b20796f7572204e46542062792074617070696e60448201527f6720746865204c475420546167206265666f7265207472616e7366657272696e606482015261339760f11b608482015260a4016106bf565b611157565b600881901c600090815260209290925260409091208054600160ff1b60ff9093169290921c9091179055565b61115784848484612111565b611b578282610f53565b6106d457611b6481612167565b611b6f836020612179565b604051602001611b80929190612e61565b60408051601f198184030181529082905262461bcd60e51b82526106bf9160040161276d565b60006106e3818361231c565b60006001600160a01b0385163b15611cdc57506001835b611bd38486612c37565b811015611cd657604051630a85bd0160e11b81526001600160a01b0387169063150b7a0290611c0c9033908b9086908990600401612ed6565b6020604051808303816000875af1925050508015611c47575060408051601f3d908101601f19168201909252611c4491810190612f13565b60015b611ca4573d808015611c75576040519150601f19603f3d011682016040523d82523d6000602084013e611c7a565b606091505b508051600003611c9c5760405162461bcd60e51b81526004016106bf90612c4a565b805181602001fd5b828015611cc157506001600160e01b03198116630a85bd0160e11b145b92505080611cce81612baa565b915050611bc9565b50611ce0565b5060015b95945050505050565b60606000611cf683612414565b600101905060008167ffffffffffffffff811115611d1657611d16612615565b6040519080825280601f01601f191660200182016040528015611d40576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611d4a57509392505050565b60608151600003611d9b57505060408051602081019091526000815290565b6000604051806060016040528060408152602001612fa16040913990506000600384516002611dca9190612c37565b611dd49190612f30565b611ddf906004612f52565b67ffffffffffffffff811115611df757611df7612615565b6040519080825280601f01601f191660200182016040528015611e21576020820181803683370190505b509050600182016020820185865187015b80821015611e8d576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845350600183019250611e32565b5050600386510660018114611ea95760028114611ebc57611ec4565b603d6001830353603d6002830353611ec4565b603d60018303535b509195945050505050565b60006001600160e01b031982166380ac58cd60e01b1480611f0057506001600160e01b03198216635b5e139f60e01b145b806106e357506301ffc9a760e01b6001600160e01b03198316146106e3565b60006001600160e01b03198216637965db0b60e01b14806106e357506106e382611ecf565b6000611f4f60045490565b905060008211611faf5760405162461bcd60e51b815260206004820152602560248201527f4552433732315073693a207175616e74697479206d7573742062652067726561604482015264074657220360dc1b60648201526084016106bf565b6001600160a01b0383166120115760405162461bcd60e51b815260206004820152602360248201527f4552433732315073693a206d696e7420746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106bf565b61201e6000848385611a86565b81600460008282546120309190612c37565b9091555050600081815260036020526040812080546001600160a01b0319166001600160a01b0386161790556120669082611b15565b6120736000848385611b41565b805b61207f8383612c37565b8110156111575760405181906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4806120c881612baa565b915050612075565b600e5460009062010000900460ff1680156120fe575063cb1a233d60e01b6001600160e01b03196000351614155b8015611ce05750611ce0858585856124ec565b6001600160a01b03841615801561212b5750600e5460ff16155b6111575760005b818110156121605761214e6121478285612c37565b6001611899565b8061215881612baa565b915050612132565b5050505050565b60606106e36001600160a01b03831660145b60606000612188836002612f52565b612193906002612c37565b67ffffffffffffffff8111156121ab576121ab612615565b6040519080825280601f01601f1916602001820160405280156121d5576020820181803683370190505b509050600360fc1b816000815181106121f0576121f0612bc3565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061221f5761221f612bc3565b60200101906001600160f81b031916908160001a9053506000612243846002612f52565b61224e906001612c37565b90505b60018111156122c6576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061228257612282612bc3565b1a60f81b82828151811061229857612298612bc3565b60200101906001600160f81b031916908160001a90535060049490941c936122bf81612f69565b9050612251565b5083156123155760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106bf565b9392505050565b600881901c60008181526020849052604081205490919060ff808516919082181c801561235e5761234c81612593565b60ff168203600884901b17935061240b565b600083116123cb5760405162461bcd60e51b815260206004820152603460248201527f4269744d6170733a205468652073657420626974206265666f7265207468652060448201527334b73232bc103237b2b9b713ba1032bc34b9ba1760611b60648201526084016106bf565b506000199091016000818152602086905260409020549091908015612406576123f381612593565b60ff0360ff16600884901b17935061240b565b61235e565b50505092915050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106124535772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061247f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061249d57662386f26fc10000830492506010015b6305f5e10083106124b5576305f5e100830492506008015b61271083106124c957612710830492506004015b606483106124db576064830492506002015b600a83106106e35760010192915050565b600e54600090610100900460ff16158061250d57506001600160a01b038516155b8061252a5750635569f64b60e11b6001600160e01b031960003516145b8061253c57506001600160a01b038416155b15612549575060006114fd565b60005b82811015612587576125666125618286612c37565b6118b9565b156125755760019150506114fd565b8061257f81612baa565b91505061254c565b50600095945050505050565b60006040518061012001604052806101008152602001613001610100913960f87e818283848586878898a8b8c8d8e8f929395969799a9b9d9e9faaeb6bedeeff6125dc856125fd565b02901c815181106125ef576125ef612bc3565b016020015160f81c92915050565b600080821161260b57600080fd5b5060008190031690565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561264657612646612615565b604051601f8501601f19908116603f0116810190828211818310171561266e5761266e612615565b8160405280935085815286868601111561268757600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156126b357600080fd5b813567ffffffffffffffff8111156126ca57600080fd5b8201601f810184136126db57600080fd5b6114fd8482356020840161262b565b6001600160e01b031981168114610c6257600080fd5b60006020828403121561271257600080fd5b8135612315816126ea565b60005b83811015612738578181015183820152602001612720565b50506000910152565b6000815180845261275981602086016020860161271d565b601f01601f19169290920160200192915050565b6020815260006123156020830184612741565b60006020828403121561279257600080fd5b5035919050565b80356001600160a01b03811681146127b057600080fd5b919050565b600080604083850312156127c857600080fd5b6127d183612799565b946020939093013593505050565b6000806000606084860312156127f457600080fd5b6127fd84612799565b925061280b60208501612799565b9150604084013590509250925092565b6000806040838503121561282e57600080fd5b8235915061283e60208401612799565b90509250929050565b803580151581146127b057600080fd5b60006020828403121561286957600080fd5b61231582612847565b60006020828403121561288457600080fd5b61231582612799565b6020808252825182820181905260009190848201906040850190845b818110156128c5578351835292840192918401916001016128a9565b50909695505050505050565b600080604083850312156128e457600080fd5b6128ed83612799565b915061283e60208401612847565b6000806000806080858703121561291157600080fd5b61291a85612799565b935061292860208601612799565b925060408501359150606085013567ffffffffffffffff81111561294b57600080fd5b8501601f8101871361295c57600080fd5b61296b8782356020840161262b565b91505092959194509250565b6000806040838503121561298a57600080fd5b8235915061283e60208401612847565b600080604083850312156129ad57600080fd5b6129b683612799565b915061283e60208401612799565b6020808252602e90820152600080516020612fe183398151915260408201526d746f206d616e616765204e46547360901b606082015260800190565b600181811c90821680612a1457607f821691505b602082108103612a3457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561091857600081815260208120601f850160051c81016020861015612a615750805b601f850160051c820191505b8181101561170357828155600101612a6d565b815167ffffffffffffffff811115612a9a57612a9a612615565b612aae81612aa88454612a00565b84612a3a565b602080601f831160018114612ae35760008415612acb5750858301515b600019600386901b1c1916600185901b178555611703565b600085815260208120601f198616915b82811015612b1257888601518255948401946001909101908401612af3565b5085821015612b305787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526034908201527f4552433732315073693a207472616e736665722063616c6c6572206973206e6f6040820152731d081bdddb995c881b9bdc88185c1c1c9bdd995960621b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600060018201612bbc57612bbc612b94565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6020808252603a90820152600080516020612fe183398151915260408201527f746f20706572666f726d20636c61696d206f7220756e6c6f636b000000000000606082015260800190565b818103818111156106e3576106e3612b94565b808201808211156106e3576106e3612b94565b60208082526035908201527f4552433732315073693a207472616e7366657220746f206e6f6e20455243373260408201527418a932b1b2b4bb32b91034b6b83632b6b2b73a32b960591b606082015260800190565b60008154612cac81612a00565b60018281168015612cc45760018114612cd957612d08565b60ff1984168752821515830287019450612d08565b8560005260208060002060005b85811015612cff5781548a820152908401908201612ce6565b50505082870194505b5050505092915050565b6000612d1e8285612c9f565b61202360f01b81528351612d3981600284016020880161271d565b01600201949350505050565b607b60f81b815268113730b6b2911d101160b91b60018201528451600090612d7481600a850160208a0161271d565b61088b60f21b600a9184019182018190526f113232b9b1b934b83a34b7b7111d101160811b600c830152612dab601c830188612c9f565b818152691134b6b0b3b2911d101160b11b60028201529150612dd0600c830187612c9f565b908152711130b734b6b0ba34b7b72fbab936111d101160711b60028201529050612dfd6014820185612c9f565b601160f91b8152607d60f81b6001820152600201979650505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251612e5481601d85016020870161271d565b91909101601d0192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612e9981601785016020880161271d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612eca81602884016020880161271d565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612f0990830184612741565b9695505050505050565b600060208284031215612f2557600080fd5b8151612315816126ea565b600082612f4d57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176106e3576106e3612b94565b600081612f7857612f78612b94565b50600019019056fecb7aa1b1b95ed2960c30163b1d1fb7f9a847c5f05e7147ffc4e93caee2baca994142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f43616c6c657220646f6573206e6f742068617665207065726d697373696f6e200001020903110a19042112290b311a3905412245134d2a550c5d32651b6d3a7506264262237d468514804e8d2b95569d0d495ea533a966b11c886eb93bc176c9071727374353637324837e9b47af86c7155181ad4fd18ed32c9096db57d59ee30e2e4a6a5f92a6be3498aae067ddb2eb1d5989b56fd7baf33ca0c2ee77e5caf7ff0810182028303840444c545c646c7425617c847f8c949c48a4a8b087b8c0c816365272829aaec650acd0d28fdad4e22d6991bd97dfdcea58b4d6f29fede4f6fe0f1f2f3f4b5b6b607b8b93a3a7b7bf357199c5abcfd9e168bcdee9b3f1ecf5fd1e3e5a7a8aa2b670c4ced8bbe8f0f4fc3d79a1c3cde7effb78cce6facbf9f8a264697066735822122085c04fb7c9eed746780296ca1ba60d65cb66a1ab6d7c150631d075a1e78000d464736f6c63430008120033cb7aa1b1b95ed2960c30163b1d1fb7f9a847c5f05e7147ffc4e93caee2baca9968747470733a2f2f697066732e6c65676974696d6174652e746563682f697066732f516d5a7848693837575341424143325368344857636b566754775872573447755648463766364c6e7373473547557a87a5aed8ddea36a21c49f3a893ecbb03e497df92e2c7914fabedb76920df95