[ { "inputs": [], "name": "NotApprovedOrOwner", "type": "error" }, { "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": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "blueprint", "type": "bytes" } ], "name": "AssetMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ItemBurned", "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": "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": "ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_imx", "type": "address" } ], "name": "__Mintable_init", "outputs": [], "stateMutability": "nonpayable", "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": "", "type": "uint256" } ], "name": "blueprints", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "currentSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "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": [], "name": "imx", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "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": "user", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "bytes", "name": "mintingBlob", "type": "bytes" } ], "name": "mintFor", "outputs": [], "stateMutability": "nonpayable", "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": "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": "string", "name": "uri", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newName", "type": "string" } ], "name": "setName", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newSymbol", "type": "string" } ], "name": "setSymbol", "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": [], "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" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b50612f96806100206000396000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c8063715018a61161012a578063a22cb465116100bd578063c87b56dd1161008c578063de86688f11610071578063de86688f146104ba578063e985e9c5146104cd578063f2fde38b1461050957600080fd5b8063c87b56dd14610494578063d547741f146104a757600080fd5b8063a22cb46514610448578063b84c82461461045b578063b88d4fde1461046e578063c47f00271461048157600080fd5b80638da5cb5b116100f95780638da5cb5b146103ee57806391d14854146103ff57806395d89b4114610438578063a217fddf1461044057600080fd5b8063715018a6146103ae57806375b238fc146103b6578063771282f6146103dd5780638129fc1c146103e657600080fd5b8063248a9ca3116101bd57806342966c681161018c5780636352211e116101715780636352211e1461037557806366bf33be1461038857806370a082311461039b57600080fd5b806342966c681461034f57806355f804b31461036257600080fd5b8063248a9ca3146102f35780632f2ff15d1461031657806336568abe1461032957806342842e0e1461033c57600080fd5b80630f08025f116101f95780630f08025f146102a857806318160ddd146102bb57806319ee6e3f146102cd57806323b872dd146102e057600080fd5b806301ffc9a71461022b57806306fdde0314610253578063081812fc14610268578063095ea7b314610293575b600080fd5b61023e61023936600461283d565b61051c565b60405190151581526020015b60405180910390f35b61025b61053c565b60405161024a91906128aa565b61027b6102763660046128bd565b6105ce565b6040516001600160a01b03909116815260200161024a565b6102a66102a13660046128f2565b6105f5565b005b60fb5461027b906001600160a01b031681565b60fd545b60405190815260200161024a565b6102a66102db36600461291c565b61072b565b6102a66102ee3660046129a3565b610873565b6102bf6103013660046128bd565b60009081526097602052604090206001015490565b6102a66103243660046129df565b6108eb565b6102a66103373660046129df565b610910565b6102a661034a3660046129a3565b61099c565b6102a661035d3660046128bd565b6109b7565b6102a6610370366004612a97565b610a4b565b61027b6103833660046128bd565b610a81565b61025b6103963660046128bd565b610ae6565b6102bf6103a9366004612ae0565b610b80565b6102a6610c1a565b6102bf7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b6102bf60fd5481565b6102a6610c2e565b60c9546001600160a01b031661027b565b61023e61040d3660046129df565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61025b610e39565b6102bf600081565b6102a6610456366004612afb565b610e49565b6102a6610469366004612a97565b610e54565b6102a661047c366004612b37565b610e8b565b6102a661048f366004612a97565b610f09565b61025b6104a23660046128bd565b610f3f565b6102a66104b53660046129df565b610fa6565b6102a66104c8366004612bb3565b610fcb565b61023e6104db366004612bb3565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b6102a6610517366004612ae0565b611155565b6000610527826111e2565b8061053657506105368261127d565b92915050565b606060ff805461054b90612bdd565b80601f016020809104026020016040519081016040528092919081815260200182805461057790612bdd565b80156105c45780601f10610599576101008083540402835291602001916105c4565b820191906000526020600020905b8154815290600101906020018083116105a757829003601f168201915b5050505050905090565b60006105d9826112bb565b506000908152606960205260409020546001600160a01b031690565b600061060082610a81565b9050806001600160a01b0316836001600160a01b03160361068e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b03821614806106aa57506106aa81336104db565b61071c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610685565b610726838361131f565b505050565b60fb546001600160a01b031633146107ab5760405162461bcd60e51b815260206004820152602260248201527f46756e6374696f6e2063616e206f6e6c792062652063616c6c6564206279204960448201527f4d580000000000000000000000000000000000000000000000000000000000006064820152608401610685565b826001146107fb5760405162461bcd60e51b815260206004820152601a60248201527f4d696e7461626c653a20696e76616c6964207175616e746974790000000000006044820152606401610685565b600080610808848461138d565b91509150610817868383611570565b600082815260fc6020526040902061082f8282612c67565b507f31e594f6b36b98ec520a91cbbba7b8724b1cec27393f86d8f0f6aa6084db0aaf86838360405161086393929190612d27565b60405180910390a1505050505050565b61087e335b8261158f565b6108e05760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608401610685565b61072683838361160e565b60008281526097602052604090206001015461090681611807565b6107268383611811565b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610685565b61099882826118b3565b5050565b61072683838360405180602001604052806000815250610e8b565b6109c033610878565b6109f6576040517fe433766c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60fd8054906000610a0683612d6e565b9190505550610a1481611936565b6040518181527fc6eb113408f238574359334840f6fe1ced3001faf98cb0ae3fac7f64b5d61025906020015b60405180910390a150565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610a7581611807565b60fe6107268382612c67565b6000818152606760205260408120546001600160a01b0316806105365760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610685565b60fc6020526000908152604090208054610aff90612bdd565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2b90612bdd565b8015610b785780601f10610b4d57610100808354040283529160200191610b78565b820191906000526020600020905b815481529060010190602001808311610b5b57829003601f168201915b505050505081565b60006001600160a01b038216610bfe5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610685565b506001600160a01b031660009081526068602052604090205490565b610c226119cb565b610c2c6000611a25565b565b600054610100900460ff1615808015610c4e5750600054600160ff909116105b80610c685750303b158015610c68575060005460ff166001145b610ccb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610685565b6000805460ff191660011790558015610cee576000805461ff0019166101001790555b610d386040518060400160405280600a81526020016921b43937b737a3b2b0b960b11b8152506040518060400160405280600681526020016521a323a2a0a960d11b815250611a77565b610d5633732d5c349fd8464da06a3f90b4b0e9195f3d1b7f98610fcb565b610da06040518060400160405280600a81526020016921b43937b737a3b2b0b960b11b8152506040518060400160405280600681526020016521a323a2a0a960d11b815250611aec565b610dca7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177580611c30565b610df47fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533611811565b8015610e36576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610a40565b50565b6060610100805461054b90612bdd565b610998338383611c7b565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610e7e81611807565b6101006107268382612c67565b610e95338361158f565b610ef75760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608401610685565b610f0384848484611d49565b50505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610f3381611807565b60ff6107268382612c67565b6060610f4a826112bb565b6000610f54611dc7565b90506000815111610f745760405180602001604052806000815250610f9f565b80610f7e84611dd6565b604051602001610f8f929190612d85565b6040516020818303038152906040525b9392505050565b600082815260976020526040902060010154610fc181611807565b61072683836118b3565b600054610100900460ff1615808015610feb5750600054600160ff909116105b806110055750303b158015611005575060005460ff166001145b6110685760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610685565b6000805460ff19166001179055801561108b576000805461ff0019166101001790555b611093611e76565b60fb80546001600160a01b0319166001600160a01b038481169190911790915583166111015760405162461bcd60e51b815260206004820152601760248201527f4f776e6572206d757374206e6f7420626520656d7074790000000000000000006044820152606401610685565b61110a83611155565b8015610726576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a1505050565b61115d6119cb565b6001600160a01b0381166111d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610685565b610e3681611a25565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061124557506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061053657507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614610536565b60006001600160e01b031982167f7965db0b0000000000000000000000000000000000000000000000000000000014806105365750610536826111e2565b6000818152606760205260409020546001600160a01b0316610e365760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610685565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061135482610a81565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006060600061140785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051808201909152600181527f3a00000000000000000000000000000000000000000000000000000000000000602082015293509150611ee99050565b9050600081121561145a5760405162461bcd60e51b815260206004820152601460248201527f536570617261746f72206d7573742065786973740000000000000000000000006044820152606401610685565b60006114b48660018761146d8287612db4565b9261147a93929190612dc7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f8e92505050565b9050600060036114c48488612db4565b6114ce9190612db4565b9050806000036114f557816040518060200160405280600081525094509450505050611569565b3660008888611505876002612df1565b9061151160018c612db4565b9261151e93929190612dc7565b9150915083828281818080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250959c50919a50505050505050505050505b9250929050565b60fd805490600061158083612e04565b91905055506107268383612076565b60008061159b83610a81565b9050806001600160a01b0316846001600160a01b031614806115e257506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806116065750836001600160a01b03166115fb846105ce565b6001600160a01b0316145b949350505050565b826001600160a01b031661162182610a81565b6001600160a01b0316146116855760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610685565b6001600160a01b0382166117005760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610685565b826001600160a01b031661171382610a81565b6001600160a01b0316146117775760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610685565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610e368133612090565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff166109985760008281526097602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561186f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff16156109985760008281526097602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061194182610a81565b905061194c82610a81565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60c9546001600160a01b03163314610c2c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610685565b60c980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16611ae25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610685565b6109988282612105565b600054610100900460ff1615808015611b0c5750600054600160ff909116105b80611b265750303b158015611b26575060005460ff166001145b611b895760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610685565b6000805460ff191660011790558015611bac576000805461ff0019166101001790555b604051806060016040528060268152602001612f3b6026913960fe90611bd29082612c67565b5060ff611bdf8482612c67565b50610100611bed8382612c67565b508015610726576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001611148565b600082815260976020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b816001600160a01b0316836001600160a01b031603611cdc5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610685565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611d5484848461160e565b611d6084848484612189565b610f035760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610685565b606060fe805461054b90612bdd565b60606000611de3836122d5565b600101905060008167ffffffffffffffff811115611e0357611e03612a0b565b6040519080825280601f01601f191660200182016040528015611e2d576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084611e3757509392505050565b600054610100900460ff16611ee15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610685565b610c2c6123b7565b81516000908390600114611eff57611eff612e1d565b825b8551811015611f815781600081518110611f1d57611f1d612e33565b602001015160f81c60f81b6001600160f81b031916868281518110611f4457611f44612e33565b01602001517fff000000000000000000000000000000000000000000000000000000000000001603611f79579150610f9f9050565b600101611f01565b5060001995945050505050565b600080805b835181101561206f576000848281518110611fb057611fb0612e33565b016020015160f81c905060308110801590611fcc575060398111155b15611ff857611fdc603082612db4565b611fe784600a612e49565b611ff19190612df1565b9250612066565b60405162461bcd60e51b815260206004820152602360248201527f696e76616c696420696e7075742c206f6e6c79206e756d6265727320616c6c6f60448201527f77656400000000000000000000000000000000000000000000000000000000006064820152608401610685565b50600101611f93565b5092915050565b61099882826040518060200160405280600081525061242b565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff16610998576120c3816124a9565b6120ce8360206124bb565b6040516020016120df929190612e60565b60408051601f198184030181529082905262461bcd60e51b8252610685916004016128aa565b600054610100900460ff166121705760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610685565b606561217c8382612c67565b5060666107268282612c67565b60006001600160a01b0384163b156122ca57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906121cd903390899088908890600401612ee1565b6020604051808303816000875af1925050508015612208575060408051601f3d908101601f1916820190925261220591810190612f1d565b60015b6122b0573d808015612236576040519150601f19603f3d011682016040523d82523d6000602084013e61223b565b606091505b5080516000036122a85760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610685565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611606565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061231e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061234a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061236857662386f26fc10000830492506010015b6305f5e1008310612380576305f5e100830492506008015b612710831061239457612710830492506004015b606483106123a6576064830492506002015b600a83106105365760010192915050565b600054610100900460ff166124225760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610685565b610c2c33611a25565b612435838361269c565b6124426000848484612189565b6107265760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610685565b60606105366001600160a01b03831660145b606060006124ca836002612e49565b6124d5906002612df1565b67ffffffffffffffff8111156124ed576124ed612a0b565b6040519080825280601f01601f191660200182016040528015612517576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061254e5761254e612e33565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061259957612599612e33565b60200101906001600160f81b031916908160001a90535060006125bd846002612e49565b6125c8906001612df1565b90505b600181111561264d577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061260957612609612e33565b1a60f81b82828151811061261f5761261f612e33565b60200101906001600160f81b031916908160001a90535060049490941c9361264681612d6e565b90506125cb565b508315610f9f5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610685565b6001600160a01b0382166126f25760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610685565b6000818152606760205260409020546001600160a01b0316156127575760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610685565b6000818152606760205260409020546001600160a01b0316156127bc5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610685565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114610e3657600080fd5b60006020828403121561284f57600080fd5b8135610f9f81612827565b60005b8381101561287557818101518382015260200161285d565b50506000910152565b6000815180845261289681602086016020860161285a565b601f01601f19169290920160200192915050565b602081526000610f9f602083018461287e565b6000602082840312156128cf57600080fd5b5035919050565b80356001600160a01b03811681146128ed57600080fd5b919050565b6000806040838503121561290557600080fd5b61290e836128d6565b946020939093013593505050565b6000806000806060858703121561293257600080fd5b61293b856128d6565b935060208501359250604085013567ffffffffffffffff8082111561295f57600080fd5b818701915087601f83011261297357600080fd5b81358181111561298257600080fd5b88602082850101111561299457600080fd5b95989497505060200194505050565b6000806000606084860312156129b857600080fd5b6129c1846128d6565b92506129cf602085016128d6565b9150604084013590509250925092565b600080604083850312156129f257600080fd5b82359150612a02602084016128d6565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115612a3c57612a3c612a0b565b604051601f8501601f19908116603f01168101908282118183101715612a6457612a64612a0b565b81604052809350858152868686011115612a7d57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215612aa957600080fd5b813567ffffffffffffffff811115612ac057600080fd5b8201601f81018413612ad157600080fd5b61160684823560208401612a21565b600060208284031215612af257600080fd5b610f9f826128d6565b60008060408385031215612b0e57600080fd5b612b17836128d6565b915060208301358015158114612b2c57600080fd5b809150509250929050565b60008060008060808587031215612b4d57600080fd5b612b56856128d6565b9350612b64602086016128d6565b925060408501359150606085013567ffffffffffffffff811115612b8757600080fd5b8501601f81018713612b9857600080fd5b612ba787823560208401612a21565b91505092959194509250565b60008060408385031215612bc657600080fd5b612bcf836128d6565b9150612a02602084016128d6565b600181811c90821680612bf157607f821691505b602082108103612c1157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610726576000816000526020600020601f850160051c81016020861015612c405750805b601f850160051c820191505b81811015612c5f57828155600101612c4c565b505050505050565b815167ffffffffffffffff811115612c8157612c81612a0b565b612c9581612c8f8454612bdd565b84612c17565b602080601f831160018114612cca5760008415612cb25750858301515b600019600386901b1c1916600185901b178555612c5f565b600085815260208120601f198616915b82811015612cf957888601518255948401946001909101908401612cda565b5085821015612d175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0384168152826020820152606060408201526000612d4f606083018461287e565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600081612d7d57612d7d612d58565b506000190190565b60008351612d9781846020880161285a565b835190830190612dab81836020880161285a565b01949350505050565b8181038181111561053657610536612d58565b60008085851115612dd757600080fd5b83861115612de457600080fd5b5050820193919092039150565b8082018082111561053657610536612d58565b600060018201612e1657612e16612d58565b5060010190565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761053657610536612d58565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612e9881601785016020880161285a565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612ed581602884016020880161285a565b01602801949350505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612f13608083018461287e565b9695505050505050565b600060208284031215612f2f57600080fd5b8151610f9f8161282756fe68747470733a2f2f6170692e706978656c6d696e696f6e732e696f2f6d6574612f676561722fa26469706673582212203374459488187f144c8903305b794134261b059193e9f665b8d05f186576281b64736f6c63430008160033