UNPKG

@credenza-web3/contracts

Version:

Credenza Contracts

797 lines 60.8 kB
{
  "_format": "hh-sol-artifact-1",
  "contractName": "OzzieContract",
  "sourceName": "contracts/tokens/OzzieContract.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "TransferBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        }
      ],
      "name": "addAvailableCurrencyTokenContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "addOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "balanceOfBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "requestedAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "buyWithEther",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "requestedAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "currencyTokenContract",
          "type": "address"
        }
      ],
      "name": "buyWithToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "requestedAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "buyWithToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "clearOwners",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAvailableCurrencyTokenContractsList",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getBeneficiaryAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDefaultCurrencyTokenContract",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDescription",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getOwners",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "getPriceEther",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "getPriceFiat",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "getPriceToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVersion",
      "outputs": [
        {
          "internalType": "string",
          "name": "version",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        }
      ],
      "name": "isAvailableCurrencyTokenContract",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "ownerTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        }
      ],
      "name": "removeAvailableCurrencyTokenContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "removeOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "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": "address payable",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "setBeneficiaryAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "setDefaultCurrencyTokenContractAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "description",
          "type": "string"
        }
      ],
      "name": "setDescription",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "setPriceEther",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "setPriceFiat",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "setPriceToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setUri",
      "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": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "uri",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801562000010575f80fd5b5060408051602081019091525f81526200002a816200003c565b5062000036336200004e565b620002b8565b60026200004a8282620001f0565b5050565b60045415806200006c5750335f9081526003602052604090205460ff165b620000c85760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604482015261371760f11b606482015260840160405180910390fd5b6001600160a01b0381165f9081526003602052604090205460ff166200014d576001600160a01b0381165f818152600360205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790555b50565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200017957607f821691505b6020821081036200019857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620001eb575f81815260208120601f850160051c81016020861015620001c65750805b601f850160051c820191505b81811015620001e757828155600101620001d2565b5050505b505050565b81516001600160401b038111156200020c576200020c62000150565b62000224816200021d845462000164565b846200019e565b602080601f8311600181146200025a575f8415620002425750858301515b5f19600386901b1c1916600185901b178555620001e7565b5f85815260208120601f198616915b828110156200028a5788860151825594840194600190910190840162000269565b5085821015620002a857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b61298c80620002c65f395ff3fe608060405260043610610206575f3560e01c8063724e5c1711610113578063b33a599f1161009d578063d36223f11161006d578063d36223f114610639578063e1461f1214610658578063e985e9c514610683578063ec6be06e146106ca578063f242432a146106e9575f80fd5b8063b33a599f146105a7578063b68de974146105c6578063d114c9dc146105fd578063d1eff8951461061c575f80fd5b806388d0f86a116100e357806388d0f86a1461050b57806390c3f38f1461052a578063a0e67e2b14610549578063a22cb4651461055d578063adfadad31461057c575f80fd5b8063724e5c1714610499578063782f08ae146104b85780638003e27f146104d757806380dc439e146104f8575f80fd5b80631abe7cb3116101945780633de4fdc8116101645780633de4fdc8146103fc5780634e1273f41461041b5780635260f5e614610447578063578680be1461045b5780637065cb481461047a575f80fd5b80631abe7cb3146103805780632eb2c2d61461039f5780632f54bf6e146103be5780633a932dba146103dd575f80fd5b8063156e29f6116101da578063156e29f6146102d057806316bef596146102f1578063173825d914610322578063177ed0f3146103415780631a0925411461036c575f80fd5b8062fdd58e1461020a57806301ffc9a71461023c5780630d8e6e2c1461026b5780630e89341c146102b1575b5f80fd5b348015610215575f80fd5b50610229610224366004611dcf565b610708565b6040519081526020015b60405180910390f35b348015610247575f80fd5b5061025b610256366004611e0e565b61079f565b6040519015158152602001610233565b348015610276575f80fd5b506040805180820190915260158152744f7a7a6965436f6e7472616374207620302e302e3160581b60208201525b6040516102339190611e73565b3480156102bc575f80fd5b506102a46102cb366004611e85565b6107ee565b3480156102db575f80fd5b506102ef6102ea366004611e9c565b61088d565b005b3480156102fc575f80fd5b506009546001600160a01b03165b6040516001600160a01b039091168152602001610233565b34801561032d575f80fd5b506102ef61033c366004611ece565b6108e8565b34801561034c575f80fd5b5061022961035b366004611e85565b5f9081526008602052604090205490565b348015610377575f80fd5b506102a4610999565b34801561038b575f80fd5b506102ef61039a366004611ee9565b610a29565b3480156103aa575f80fd5b506102ef6103b936600461204b565b610a69565b3480156103c9575f80fd5b5061025b6103d8366004611ece565b610ab5565b3480156103e8575f80fd5b506102ef6103f7366004611ece565b610ad2565b348015610407575f80fd5b506102ef610416366004611ece565b610b21565b348015610426575f80fd5b5061043a6104353660046120f2565b610bb5565b60405161023391906121f2565b348015610452575f80fd5b506102ef610cdd565b348015610466575f80fd5b506102ef610475366004611ee9565b610d82565b348015610485575f80fd5b506102ef610494366004611ece565b610dc2565b3480156104a4575f80fd5b506102ef6104b3366004612204565b610e63565b3480156104c3575f80fd5b506102ef6104d236600461224b565b610ea0565b3480156104e2575f80fd5b506104eb610ee6565b6040516102339190612285565b6102ef6105063660046122d1565b610f45565b348015610516575f80fd5b506102ef610525366004611ee9565b610fd6565b348015610535575f80fd5b506102ef610544366004612307565b611016565b348015610554575f80fd5b506104eb611055565b348015610568575f80fd5b506102ef61057736600461234e565b6110b3565b348015610587575f80fd5b50610229610596366004611e85565b5f9081526007602052604090205490565b3480156105b2575f80fd5b506102ef6105c1366004611ece565b6110be565b3480156105d1575f80fd5b5061025b6105e0366004611ece565b6001600160a01b03165f908152600a602052604090205460ff1690565b348015610608575f80fd5b506102ef610617366004612385565b61117e565b348015610627575f80fd5b50600c546001600160a01b031661030a565b348015610644575f80fd5b506102ef6106533660046122d1565b6111db565b348015610663575f80fd5b50610229610672366004611e85565b5f9081526006602052604090205490565b34801561068e575f80fd5b5061025b61069d3660046123c8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205460ff1690565b3480156106d5575f80fd5b506102ef6106e4366004611ece565b611236565b3480156106f4575f80fd5b506102ef6107033660046123f4565b611287565b5f6001600160a01b0383166107775760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f818152602081815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216636cdb3d1360e11b14806107cf57506001600160e01b031982166303a24d0760e21b145b8061079957506301ffc9a760e01b6001600160e01b0319831614610799565b5f818152600d6020526040902080546060919061080a90612458565b80601f016020809104026020016040519081016040528092919081815260200182805461083690612458565b80156108815780601f1061085857610100808354040283529160200191610881565b820191905f5260205f20905b81548152906001019060200180831161086457829003601f168201915b50505050509050919050565b60045415806108a057506108a033610ab5565b6108bc5760405162461bcd60e51b815260040161076e90612490565b6108e38383836040518060400160405280600381526020016203078360ec1b8152506112cc565b505050565b60045415806108fb57506108fb33610ab5565b6109175760405162461bcd60e51b815260040161076e90612490565b61092081610ab5565b61096c5760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e65720000604482015260640161076e565b6001600160a01b0381165f908152600360205260409020805460ff191690556109966004826113db565b50565b6060600580546109a890612458565b80601f01602080910402602001604051908101604052809291908181526020018280546109d490612458565b8015610a1f5780601f106109f657610100808354040283529160200191610a1f565b820191905f5260205f20905b815481529060010190602001808311610a0257829003601f168201915b5050505050905090565b6004541580610a3c5750610a3c33610ab5565b610a585760405162461bcd60e51b815260040161076e90612490565b5f9182526006602052604090912055565b6001600160a01b038516331480610a855750610a85853361069d565b610aa15760405162461bcd60e51b815260040161076e906124d2565b610aae85858585856114da565b5050505050565b6001600160a01b03165f9081526003602052604090205460ff1690565b6004541580610ae55750610ae533610ab5565b610b015760405162461bcd60e51b815260040161076e90612490565b600980546001600160a01b0319166001600160a01b038316179055610996815b6004541580610b345750610b3433610ab5565b610b505760405162461bcd60e51b815260040161076e90612490565b6001600160a01b03165f818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b60608151835114610c1a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161076e565b5f835167ffffffffffffffff811115610c3557610c35611f09565b604051908082528060200260200182016040528015610c5e578160200160208202803683370190505b5090505f5b8451811015610cd557610ca8858281518110610c8157610c81612520565b6020026020010151858381518110610c9b57610c9b612520565b6020026020010151610708565b828281518110610cba57610cba612520565b6020908102919091010152610cce81612548565b9050610c63565b509392505050565b6004541580610cf05750610cf033610ab5565b610d0c5760405162461bcd60e51b815260040161076e90612490565b5f5b600454811015610d74575f60035f60048481548110610d2f57610d2f612520565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610d6c81612548565b915050610d0e565b50610d8060045f611d8d565b565b6004541580610d955750610d9533610ab5565b610db15760405162461bcd60e51b815260040161076e90612490565b5f9182526008602052604090912055565b6004541580610dd55750610dd533610ab5565b610df15760405162461bcd60e51b815260040161076e90612490565b610dfa81610ab5565b610996576001600160a01b03165f818152600360205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055565b60405162461bcd60e51b815260206004820152601260248201527113d4115490551253d397d11254d05093115160721b604482015260640161076e565b6004541580610eb35750610eb333610ab5565b610ecf5760405162461bcd60e51b815260040161076e90612490565b5f828152600d602052604090206108e382826125a5565b6060600b805480602002602001604051908101604052809291908181526020018280548015610a1f57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610f1e575050505050905090565b600c548290610f5d906001600160a01b031685610708565b1015610f965760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b604482015260640161076e565b610fa083836116b2565b600c5460408051808201909152600381526203078360ec1b60208201526108e3916001600160a01b03169083908690869061179b565b6004541580610fe95750610fe933610ab5565b6110055760405162461bcd60e51b815260040161076e90612490565b5f9182526007602052604090912055565b6004541580611029575061102933610ab5565b6110455760405162461bcd60e51b815260040161076e90612490565b600561105182826125a5565b5050565b60606004805480602002602001604051908101604052809291908181526020018280548015610a1f57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610f1e575050505050905090565b6110513383836118c1565b60045415806110d157506110d133610ab5565b6110ed5760405162461bcd60e51b815260040161076e90612490565b6001600160a01b0381165f908152600a602052604090205460ff166111545760405162461bcd60e51b815260206004820181905260248201527f54617267657420636f6e7472616374206973206e6f7420617661696c61626c65604482015260640161076e565b6001600160a01b0381165f908152600a60205260409020805460ff19169055610996600b826113db565b6004541580611191575061119133610ab5565b6111ad5760405162461bcd60e51b815260040161076e90612490565b6111d5848484846040518060400160405280600381526020016203078360ec1b81525061179b565b50505050565b600c5482906111f3906001600160a01b031685610708565b101561122c5760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b604482015260640161076e565b610fa083836119a0565b6004541580611249575061124933610ab5565b6112655760405162461bcd60e51b815260040161076e90612490565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0385163314806112a357506112a3853361069d565b6112bf5760405162461bcd60e51b815260040161076e906124d2565b610aae858585858561179b565b6001600160a01b03841661132c5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b606482015260840161076e565b335f611337856119b9565b90505f611343856119b9565b90505f868152602081815260408083206001600160a01b038b16845290915281208054879290611374908490612661565b909155505060408051878152602081018790526001600160a01b03808a16925f92918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113d2835f89898989611a02565b50505050505050565b5f5b82548110156108e357816001600160a01b031683828154811061140257611402612520565b5f918252602090912001546001600160a01b0316036114c8578254839061142b90600190612674565b8154811061143b5761143b612520565b905f5260205f20015f9054906101000a90046001600160a01b031683828154811061146857611468612520565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550828054806114a3576114a3612687565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b806114d281612548565b9150506113dd565b815183511461153c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b606482015260840161076e565b6001600160a01b0384166115625760405162461bcd60e51b815260040161076e9061269b565b335f5b8451811015611644575f85828151811061158157611581612520565b602002602001015190505f85838151811061159e5761159e612520565b6020908102919091018101515f84815280835260408082206001600160a01b038e1683529093529190912054909150818110156115ed5760405162461bcd60e51b815260040161076e906126e0565b5f838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290611629908490612661565b925050819055505050508061163d90612548565b9050611565565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161169492919061272a565b60405180910390a46116aa818787878787611b5c565b505050505050565b5f82815260076020526040812054116116dd5760405162461bcd60e51b815260040161076e90612757565b600c546001600160a01b03166117055760405162461bcd60e51b815260040161076e90612757565b5f8281526007602052604081205461171e90839061277e565b9050803410156117655760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b604482015260640161076e565b600c546040516001600160a01b03909116903480156108fc02915f818181858888f193505050501580156111d5573d5f803e3d5ffd5b6001600160a01b0384166117c15760405162461bcd60e51b815260040161076e9061269b565b335f6117cc856119b9565b90505f6117d8856119b9565b90505f868152602081815260408083206001600160a01b038c1684529091529020548581101561181a5760405162461bcd60e51b815260040161076e906126e0565b5f878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611856908490612661565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46118b6848a8a8a8a8a611a02565b505050505050505050565b816001600160a01b0316836001600160a01b0316036119345760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161076e565b6001600160a01b038381165f81815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60095461105190839083906001600160a01b0316611c16565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f815181106119f1576119f1612520565b602090810291909101015292915050565b6001600160a01b0384163b156116aa5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611a469089908990889088908890600401612795565b6020604051808303815f875af1925050508015611a80575060408051601f3d908101601f19168201909252611a7d918101906127d9565b60015b611b2c57611a8c6127f4565b806308c379a003611ac55750611aa061280d565b80611aab5750611ac7565b8060405162461bcd60e51b815260040161076e9190611e73565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161076e565b6001600160e01b0319811663f23a6e6160e01b146113d25760405162461bcd60e51b815260040161076e90612896565b6001600160a01b0384163b156116aa5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611ba090899089908890889088906004016128de565b6020604051808303815f875af1925050508015611bda575060408051601f3d908101601f19168201909252611bd7918101906127d9565b60015b611be657611a8c6127f4565b6001600160e01b0319811663bc197c8160e01b146113d25760405162461bcd60e51b815260040161076e90612896565b6001600160a01b0381165f908152600a602052604090205460ff16611c7d5760405162461bcd60e51b815260206004820152601f60248201527f43555252454e43595f434f4e54524143545f4e4f545f535550504f5254454400604482015260640161076e565b5f8381526008602052604081205411611ca85760405162461bcd60e51b815260040161076e90612757565b600c546001600160a01b0316611cd05760405162461bcd60e51b815260040161076e90612757565b6001600160a01b038116611cf65760405162461bcd60e51b815260040161076e90612757565b5f83815260086020526040812054611d0e908461277e565b600c546040516323b872dd60e01b81523360048201526001600160a01b039182166024820152604481018390529192508391908216906323b872dd906064016020604051808303815f875af1158015611d69573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116aa919061293b565b5080545f8255905f5260205f209081019061099691905b80821115611db7575f8155600101611da4565b5090565b6001600160a01b0381168114610996575f80fd5b5f8060408385031215611de0575f80fd5b8235611deb81611dbb565b946020939093013593505050565b6001600160e01b031981168114610996575f80fd5b5f60208284031215611e1e575f80fd5b8135611e2981611df9565b9392505050565b5f81518084525f5b81811015611e5457602081850181015186830182015201611e38565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f611e296020830184611e30565b5f60208284031215611e95575f80fd5b5035919050565b5f805f60608486031215611eae575f80fd5b8335611eb981611dbb565b95602085013595506040909401359392505050565b5f60208284031215611ede575f80fd5b8135611e2981611dbb565b5f8060408385031215611efa575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f1916810167ffffffffffffffff81118282101715611f4357611f43611f09565b6040525050565b5f67ffffffffffffffff821115611f6357611f63611f09565b5060051b60200190565b5f82601f830112611f7c575f80fd5b81356020611f8982611f4a565b604051611f968282611f1d565b83815260059390931b8501820192828101915086841115611fb5575f80fd5b8286015b84811015611fd05780358352918301918301611fb9565b509695505050505050565b5f82601f830112611fea575f80fd5b813567ffffffffffffffff81111561200457612004611f09565b60405161201b601f8301601f191660200182611f1d565b81815284602083860101111561202f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f60a0868803121561205f575f80fd5b853561206a81611dbb565b9450602086013561207a81611dbb565b9350604086013567ffffffffffffffff80821115612096575f80fd5b6120a289838a01611f6d565b945060608801359150808211156120b7575f80fd5b6120c389838a01611f6d565b935060808801359150808211156120d8575f80fd5b506120e588828901611fdb565b9150509295509295909350565b5f8060408385031215612103575f80fd5b823567ffffffffffffffff8082111561211a575f80fd5b818501915085601f83011261212d575f80fd5b8135602061213a82611f4a565b6040516121478282611f1d565b83815260059390931b8501820192828101915089841115612166575f80fd5b948201945b8386101561218d57853561217e81611dbb565b8252948201949082019061216b565b965050860135925050808211156121a2575f80fd5b506121af85828601611f6d565b9150509250929050565b5f8151808452602080850194508084015f5b838110156121e7578151875295820195908201906001016121cb565b509495945050505050565b602081525f611e2960208301846121b9565b5f805f8060808587031215612217575f80fd5b8435935060208501359250604085013561223081611dbb565b9150606085013561224081611dbb565b939692955090935050565b5f806040838503121561225c575f80fd5b82359150602083013567ffffffffffffffff811115612279575f80fd5b6121af85828601611fdb565b602080825282518282018190525f9190848201906040850190845b818110156122c55783516001600160a01b0316835292840192918401916001016122a0565b50909695505050505050565b5f805f606084860312156122e3575f80fd5b833592506020840135915060408401356122fc81611dbb565b809150509250925092565b5f60208284031215612317575f80fd5b813567ffffffffffffffff81111561232d575f80fd5b61233984828501611fdb565b949350505050565b8015158114610996575f80fd5b5f806040838503121561235f575f80fd5b823561236a81611dbb565b9150602083013561237a81612341565b809150509250929050565b5f805f8060808587031215612398575f80fd5b84356123a381611dbb565b935060208501356123b381611dbb565b93969395505050506040820135916060013590565b5f80604083850312156123d9575f80fd5b82356123e481611dbb565b9150602083013561237a81611dbb565b5f805f805f60a08688031215612408575f80fd5b853561241381611dbb565b9450602086013561242381611dbb565b93506040860135925060608601359150608086013567ffffffffffffffff81111561244c575f80fd5b6120e588828901611fdb565b600181811c9082168061246c57607f821691505b60208210810361248a57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161255957612559612534565b5060010190565b601f8211156108e3575f81815260208120601f850160051c810160208610156125865750805b601f850160051c820191505b818110156116aa57828155600101612592565b815167ffffffffffffffff8111156125bf576125bf611f09565b6125d3816125cd8454612458565b84612560565b602080601f831160018114612606575f84156125ef5750858301515b5f19600386901b1c1916600185901b1785556116aa565b5f85815260208120601f198616915b8281101561263457888601518255948401946001909101908401612615565b508582101561265157878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561079957610799612534565b8181038181111561079957610799612534565b634e487b7160e01b5f52603160045260245ffd5b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081525f61273c60408301856121b9565b828103602084015261274e81856121b9565b95945050505050565b6020808252600d908201526c14d1531317d11254d050931151609a1b604082015260600190565b808202811582820484141761079957610799612534565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f906127ce90830184611e30565b979650505050505050565b5f602082840312156127e9575f80fd5b8151611e2981611df9565b5f60033d111561280a5760045f803e505f5160e01c5b90565b5f60443d101561281a5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561284a57505050505090565b82850191508151818111156128625750505050505090565b843d870101602082850101111561287c5750505050505090565b61288b60208286010187611f1d565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190525f90612909908301866121b9565b828103606084015261291b81866121b9565b9050828103608084015261292f8185611e30565b98975050505050505050565b5f6020828403121561294b575f80fd5b8151611e298161234156fea2646970667358221220d091c08122cb66f45b728a1cee56dfcd2b1d303023ffab5f4a13d42a1040d3ed64736f6c63430008140033",
  "deployedBytecode": "0x608060405260043610610206575f3560e01c8063724e5c1711610113578063b33a599f1161009d578063d36223f11161006d578063d36223f114610639578063e1461f1214610658578063e985e9c514610683578063ec6be06e146106ca578063f242432a146106e9575f80fd5b8063b33a599f146105a7578063b68de974146105c6578063d114c9dc146105fd578063d1eff8951461061c575f80fd5b806388d0f86a116100e357806388d0f86a1461050b57806390c3f38f1461052a578063a0e67e2b14610549578063a22cb4651461055d578063adfadad31461057c575f80fd5b8063724e5c1714610499578063782f08ae146104b85780638003e27f146104d757806380dc439e146104f8575f80fd5b80631abe7cb3116101945780633de4fdc8116101645780633de4fdc8146103fc5780634e1273f41461041b5780635260f5e614610447578063578680be1461045b5780637065cb481461047a575f80fd5b80631abe7cb3146103805780632eb2c2d61461039f5780632f54bf6e146103be5780633a932dba146103dd575f80fd5b8063156e29f6116101da578063156e29f6146102d057806316bef596146102f1578063173825d914610322578063177ed0f3146103415780631a0925411461036c575f80fd5b8062fdd58e1461020a57806301ffc9a71461023c5780630d8e6e2c1461026b5780630e89341c146102b1575b5f80fd5b348015610215575f80fd5b50610229610224366004611dcf565b610708565b6040519081526020015b60405180910390f35b348015610247575f80fd5b5061025b610256366004611e0e565b61079f565b6040519015158152602001610233565b348015610276575f80fd5b506040805180820190915260158152744f7a7a6965436f6e7472616374207620302e302e3160581b60208201525b6040516102339190611e73565b3480156102bc575f80fd5b506102a46102cb366004611e85565b6107ee565b3480156102db575f80fd5b506102ef6102ea366004611e9c565b61088d565b005b3480156102fc575f80fd5b506009546001600160a01b03165b6040516001600160a01b039091168152602001610233565b34801561032d575f80fd5b506102ef61033c366004611ece565b6108e8565b34801561034c575f80fd5b5061022961035b366004611e85565b5f9081526008602052604090205490565b348015610377575f80fd5b506102a4610999565b34801561038b575f80fd5b506102ef61039a366004611ee9565b610a29565b3480156103aa575f80fd5b506102ef6103b936600461204b565b610a69565b3480156103c9575f80fd5b5061025b6103d8366004611ece565b610ab5565b3480156103e8575f80fd5b506102ef6103f7366004611ece565b610ad2565b348015610407575f80fd5b506102ef610416366004611ece565b610b21565b348015610426575f80fd5b5061043a6104353660046120f2565b610bb5565b60405161023391906121f2565b348015610452575f80fd5b506102ef610cdd565b348015610466575f80fd5b506102ef610475366004611ee9565b610d82565b348015610485575f80fd5b506102ef610494366004611ece565b610dc2565b3480156104a4575f80fd5b506102ef6104b3366004612204565b610e63565b3480156104c3575f80fd5b506102ef6104d236600461224b565b610ea0565b3480156104e2575f80fd5b506104eb610ee6565b6040516102339190612285565b6102ef6105063660046122d1565b610f45565b348015610516575f80fd5b506102ef610525366004611ee9565b610fd6565b348015610535575f80fd5b506102ef610544366004612307565b611016565b348015610554575f80fd5b506104eb611055565b348015610568575f80fd5b506102ef61057736600461234e565b6110b3565b348015610587575f80fd5b50610229610596366004611e85565b5f9081526007602052604090205490565b3480156105b2575f80fd5b506102ef6105c1366004611ece565b6110be565b3480156105d1575f80fd5b5061025b6105e0366004611ece565b6001600160a01b03165f908152600a602052604090205460ff1690565b348015610608575f80fd5b506102ef610617366004612385565b61117e565b348015610627575f80fd5b50600c546001600160a01b031661030a565b348015610644575f80fd5b506102ef6106533660046122d1565b6111db565b348015610663575f80fd5b50610229610672366004611e85565b5f9081526006602052604090205490565b34801561068e575f80fd5b5061025b61069d3660046123c8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205460ff1690565b3480156106d5575f80fd5b506102ef6106e4366004611ece565b611236565b3480156106f4575f80fd5b506102ef6107033660046123f4565b611287565b5f6001600160a01b0383166107775760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f818152602081815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216636cdb3d1360e11b14806107cf57506001600160e01b031982166303a24d0760e21b145b8061079957506301ffc9a760e01b6001600160e01b0319831614610799565b5f818152600d6020526040902080546060919061080a90612458565b80601f016020809104026020016040519081016040528092919081815260200182805461083690612458565b80156108815780601f1061085857610100808354040283529160200191610881565b820191905f5260205f20905b81548152906001019060200180831161086457829003601f168201915b50505050509050919050565b60045415806108a057506108a033610ab5565b6108bc5760405162461bcd60e51b815260040161076e90612490565b6108e38383836040518060400160405280600381526020016203078360ec1b8152506112cc565b505050565b60045415806108fb57506108fb33610ab5565b6109175760405162461bcd60e51b815260040161076e90612490565b61092081610ab5565b61096c5760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e65720000604482015260640161076e565b6001600160a01b0381165f908152600360205260409020805460ff191690556109966004826113db565b50565b6060600580546109a890612458565b80601f01602080910402602001604051908101604052809291908181526020018280546109d490612458565b8015610a1f5780601f106109f657610100808354040283529160200191610a1f565b820191905f5260205f20905b815481529060010190602001808311610a0257829003601f168201915b5050505050905090565b6004541580610a3c5750610a3c33610ab5565b610a585760405162461bcd60e51b815260040161076e90612490565b5f9182526006602052604090912055565b6001600160a01b038516331480610a855750610a85853361069d565b610aa15760405162461bcd60e51b815260040161076e906124d2565b610aae85858585856114da565b5050505050565b6001600160a01b03165f9081526003602052604090205460ff1690565b6004541580610ae55750610ae533610ab5565b610b015760405162461bcd60e51b815260040161076e90612490565b600980546001600160a01b0319166001600160a01b038316179055610996815b6004541580610b345750610b3433610ab5565b610b505760405162461bcd60e51b815260040161076e90612490565b6001600160a01b03165f818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b60608151835114610c1a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b606482015260840161076e565b5f835167ffffffffffffffff811115610c3557610c35611f09565b604051908082528060200260200182016040528015610c5e578160200160208202803683370190505b5090505f5b8451811015610cd557610ca8858281518110610c8157610c81612520565b6020026020010151858381518110610c9b57610c9b612520565b6020026020010151610708565b828281518110610cba57610cba612520565b6020908102919091010152610cce81612548565b9050610c63565b509392505050565b6004541580610cf05750610cf033610ab5565b610d0c5760405162461bcd60e51b815260040161076e90612490565b5f5b600454811015610d74575f60035f60048481548110610d2f57610d2f612520565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610d6c81612548565b915050610d0e565b50610d8060045f611d8d565b565b6004541580610d955750610d9533610ab5565b610db15760405162461bcd60e51b815260040161076e90612490565b5f9182526008602052604090912055565b6004541580610dd55750610dd533610ab5565b610df15760405162461bcd60e51b815260040161076e90612490565b610dfa81610ab5565b610996576001600160a01b03165f818152600360205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055565b60405162461bcd60e51b815260206004820152601260248201527113d4115490551253d397d11254d05093115160721b604482015260640161076e565b6004541580610eb35750610eb333610ab5565b610ecf5760405162461bcd60e51b815260040161076e90612490565b5f828152600d602052604090206108e382826125a5565b6060600b805480602002602001604051908101604052809291908181526020018280548015610a1f57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610f1e575050505050905090565b600c548290610f5d906001600160a01b031685610708565b1015610f965760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b604482015260640161076e565b610fa083836116b2565b600c5460408051808201909152600381526203078360ec1b60208201526108e3916001600160a01b03169083908690869061179b565b6004541580610fe95750610fe933610ab5565b6110055760405162461bcd60e51b815260040161076e90612490565b5f9182526007602052604090912055565b6004541580611029575061102933610ab5565b6110455760405162461bcd60e51b815260040161076e90612490565b600561105182826125a5565b5050565b60606004805480602002602001604051908101604052809291908181526020018280548015610a1f57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610f1e575050505050905090565b6110513383836118c1565b60045415806110d157506110d133610ab5565b6110ed5760405162461bcd60e51b815260040161076e90612490565b6001600160a01b0381165f908152600a602052604090205460ff166111545760405162461bcd60e51b815260206004820181905260248201527f54617267657420636f6e7472616374206973206e6f7420617661696c61626c65604482015260640161076e565b6001600160a01b0381165f908152600a60205260409020805460ff19169055610996600b826113db565b6004541580611191575061119133610ab5565b6111ad5760405162461bcd60e51b815260040161076e90612490565b6111d5848484846040518060400160405280600381526020016203078360ec1b81525061179b565b50505050565b600c5482906111f3906001600160a01b031685610708565b101561122c5760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b604482015260640161076e565b610fa083836119a0565b6004541580611249575061124933610ab5565b6112655760405162461bcd60e51b815260040161076e90612490565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0385163314806112a357506112a3853361069d565b6112bf5760405162461bcd60e51b815260040161076e906124d2565b610aae858585858561179b565b6001600160a01b03841661132c5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b606482015260840161076e565b335f611337856119b9565b90505f611343856119b9565b90505f868152602081815260408083206001600160a01b038b16845290915281208054879290611374908490612661565b909155505060408051878152602081018790526001600160a01b03808a16925f92918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113d2835f89898989611a02565b50505050505050565b5f5b82548110156108e357816001600160a01b031683828154811061140257611402612520565b5f918252602090912001546001600160a01b0316036114c8578254839061142b90600190612674565b8154811061143b5761143b612520565b905f5260205f20015f9054906101000a90046001600160a01b031683828154811061146857611468612520565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550828054806114a3576114a3612687565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b806114d281612548565b9150506113dd565b815183511461153c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b606482015260840161076e565b6001600160a01b0384166115625760405162461bcd60e51b815260040161076e9061269b565b335f5b8451811015611644575f85828151811061158157611581612520565b602002602001015190505f85838151811061159e5761159e612520565b6020908102919091018101515f84815280835260408082206001600160a01b038e1683529093529190912054909150818110156115ed5760405162461bcd60e51b815260040161076e906126e0565b5f838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290611629908490612661565b925050819055505050508061163d90612548565b9050611565565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161169492919061272a565b60405180910390a46116aa818787878787611b5c565b505050505050565b5f82815260076020526040812054116116dd5760405162461bcd60e51b815260040161076e90612757565b600c546001600160a01b03166117055760405162461bcd60e51b815260040161076e90612757565b5f8281526007602052604081205461171e90839061277e565b9050803410156117655760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b604482015260640161076e565b600c546040516001600160a01b03909116903480156108fc02915f818181858888f193505050501580156111d5573d5f803e3d5ffd5b6001600160a01b0384166117c15760405162461bcd60e51b815260040161076e9061269b565b335f6117cc856119b9565b90505f6117d8856119b9565b90505f868152602081815260408083206001600160a01b038c1684529091529020548581101561181a5760405162461bcd60e51b815260040161076e906126e0565b5f878152602081815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611856908490612661565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46118b6848a8a8a8a8a611a02565b505050505050505050565b816001600160a01b0316836001600160a01b0316036119345760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b606482015260840161076e565b6001600160a01b038381165f81815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60095461105190839083906001600160a01b0316611c16565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f815181106119f1576119f1612520565b602090810291909101015292915050565b6001600160a01b0384163b156116aa5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611a469089908990889088908890600401612795565b6020604051808303815f875af1925050508015611a80575060408051601f3d908101601f19168201909252611a7d918101906127d9565b60015b611b2c57611a8c6127f4565b806308c379a003611ac55750611aa061280d565b80611aab5750611ac7565b8060405162461bcd60e51b815260040161076e9190611e73565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b606482015260840161076e565b6001600160e01b0319811663f23a6e6160e01b146113d25760405162461bcd60e51b815260040161076e90612896565b6001600160a01b0384163b156116aa5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611ba090899089908890889088906004016128de565b6020604051808303815f875af1925050508015611bda575060408051601f3d908101601f19168201909252611bd7918101906127d9565b60015b611be657611a8c6127f4565b6001600160e01b0319811663bc197c8160e01b146113d25760405162461bcd60e51b815260040161076e90612896565b6001600160a01b0381165f908152600a602052604090205460ff16611c7d5760405162461bcd60e51b815260206004820152601f60248201527f43555252454e43595f434f4e54524143545f4e4f545f535550504f5254454400604482015260640161076e565b5f8381526008602052604081205411611ca85760405162461bcd60e51b815260040161076e90612757565b600c546001600160a01b0316611cd05760405162461bcd60e51b815260040161076e90612757565b6001600160a01b038116611cf65760405162461bcd60e51b815260040161076e90612757565b5f83815260086020526040812054611d0e908461277e565b600c546040516323b872dd60e01b81523360048201526001600160a01b039182166024820152604481018390529192508391908216906323b872dd906064016020604051808303815f875af1158015611d69573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116aa919061293b565b5080545f8255905f5260205f209081019061099691905b80821115611db7575f8155600101611da4565b5090565b6001600160a01b0381168114610996575f80fd5b5f8060408385031215611de0575f80fd5b8235611deb81611dbb565b946020939093013593505050565b6001600160e01b031981168114610996575f80fd5b5f60208284031215611e1e575f80fd5b8135611e2981611df9565b9392505050565b5f81518084525f5b81811015611e5457602081850181015186830182015201611e38565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f611e296020830184611e30565b5f60208284031215611e95575f80fd5b5035919050565b5f805f60608486031215611eae575f80fd5b8335611eb981611dbb565b95602085013595506040909401359392505050565b5f60208284031215611ede575f80fd5b8135611e2981611dbb565b5f8060408385031215611efa575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f1916810167ffffffffffffffff81118282101715611f4357611f43611f09565b6040525050565b5f67ffffffffffffffff821115611f6357611f63611f09565b5060051b60200190565b5f82601f830112611f7c575f80fd5b81356020611f8982611f4a565b604051611f968282611f1d565b83815260059390931b8501820192828101915086841115611fb5575f80fd5b8286015b84811015611fd05780358352918301918301611fb9565b509695505050505050565b5f82601f830112611fea575f80fd5b813567ffffffffffffffff81111561200457612004611f09565b60405161201b601f8301601f191660200182611f1d565b81815284602083860101111561202f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f60a0868803121561205f575f80fd5b853561206a81611dbb565b9450602086013561207a81611dbb565b9350604086013567ffffffffffffffff80821115612096575f80fd5b6120a289838a01611f6d565b945060608801359150808211156120b7575f80fd5b6120c389838a01611f6d565b935060808801359150808211156120d8575f80fd5b506120e588828901611fdb565b9150509295509295909350565b5f8060408385031215612103575f80fd5b823567ffffffffffffffff8082111561211a575f80fd5b818501915085601f83011261212d575f80fd5b8135602061213a82611f4a565b6040516121478282611f1d565b83815260059390931b8501820192828101915089841115612166575f80fd5b948201945b8386101561218d57853561217e81611dbb565b8252948201949082019061216b565b965050860135925050808211156121a2575f80fd5b506121af85828601611f6d565b9150509250929050565b5f8151808452602080850194508084015f5b838110156121e7578151875295820195908201906001016121cb565b509495945050505050565b602081525f611e2960208301846121b9565b5f805f8060808587031215612217575f80fd5b8435935060208501359250604085013561223081611dbb565b9150606085013561224081611dbb565b939692955090935050565b5f806040838503121561225c575f80fd5b82359150602083013567ffffffffffffffff811115612279575f80fd5b6121af85828601611fdb565b602080825282518282018190525f9190848201906040850190845b818110156122c55783516001600160a01b0316835292840192918401916001016122a0565b50909695505050505050565b5f805f606084860312156122e3575f80fd5b833592506020840135915060408401356122fc81611dbb565b809150509250925092565b5f60208284031215612317575f80fd5b813567ffffffffffffffff81111561232d575f80fd5b61233984828501611fdb565b949350505050565b8015158114610996575f80fd5b5f806040838503121561235f575f80fd5b823561236a81611dbb565b9150602083013561237a81612341565b809150509250929050565b5f805f8060808587031215612398575f80fd5b84356123a381611dbb565b935060208501356123b381611dbb565b93969395505050506040820135916060013590565b5f80604083850312156123d9575f80fd5b82356123e481611dbb565b9150602083013561237a81611dbb565b5f805f805f60a08688031215612408575f80fd5b853561241381611dbb565b9450602086013561242381611dbb565b93506040860135925060608601359150608086013567ffffffffffffffff81111561244c575f80fd5b6120e588828901611fdb565b600181811c9082168061246c57607f821691505b60208210810361248a57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f6001820161255957612559612534565b5060010190565b601f8211156108e3575f81815260208120601f850160051c810160208610156125865750805b601f850160051c820191505b818110156116aa57828155600101612592565b815167ffffffffffffffff8111156125bf576125bf611f09565b6125d3816125cd8454612458565b84612560565b602080601f831160018114612606575f84156125ef5750858301515b5f19600386901b1c1916600185901b1785556116aa565b5f85815260208120601f198616915b8281101561263457888601518255948401946001909101908401612615565b508582101561265157878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561079957610799612534565b8181038181111561079957610799612534565b634e487b7160e01b5f52603160045260245ffd5b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b604081525f61273c60408301856121b9565b828103602084015261274e81856121b9565b95945050505050565b6020808252600d908201526c14d1531317d11254d050931151609a1b604082015260600190565b808202811582820484141761079957610799612534565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f906127ce90830184611e30565b979650505050505050565b5f602082840312156127e9575f80fd5b8151611e2981611df9565b5f60033d111561280a5760045f803e505f5160e01c5b90565b5f60443d101561281a5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561284a57505050505090565b82850191508151818111156128625750505050505090565b843d870101602082850101111561287c5750505050505090565b61288b60208286010187611f1d565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190525f90612909908301866121b9565b828103606084015261291b81866121b9565b9050828103608084015261292f8185611e30565b98975050505050505050565b5f6020828403121561294b575f80fd5b8151611e298161234156fea2646970667358221220d091c08122cb66f45b728a1cee56dfcd2b1d303023ffab5f4a13d42a1040d3ed64736f6c63430008140033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}