{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "association",
          "type": "address"
        }
      ],
      "name": "SetAssociation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "price",
          "type": "uint64"
        }
      ],
      "name": "SetPrice",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SetTokenToPurchaseIn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "tokenURI",
          "type": "string"
        }
      ],
      "name": "SetTokenURI",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "association",
      "outputs": [
        {
          "internalType": "contract Association",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract Association",
          "name": "someAssociation",
          "type": "address"
        }
      ],
      "name": "belongsTo",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "price",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract Association",
          "name": "_association",
          "type": "address"
        }
      ],
      "name": "setAssociation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_price",
          "type": "uint64"
        }
      ],
      "name": "setPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ERC20",
          "name": "_tokenToPurchaseIn",
          "type": "address"
        }
      ],
      "name": "setTokenToPurchaseIn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_tokenURI",
          "type": "string"
        }
      ],
      "name": "setTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenToPurchaseIn",
      "outputs": [
        {
          "internalType": "contract ERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "userdoc": {
    "version": 1,
    "kind": "user"
  },
  "devdoc": {
    "version": 1,
    "kind": "dev",
    "methods": {
      "association()": {
        "details": "Returns the association"
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    }
  },
  "ast": {
    "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/lib/Listing.sol",
    "exportedSymbols": {
      "Association": [
        4902
      ],
      "Context": [
        2404
      ],
      "ERC20": [
        690
      ],
      "IERC20": [
        768
      ],
      "IERC20Metadata": [
        793
      ],
      "Listing": [
        5373
      ],
      "Member": [
        5043
      ],
      "Ownable": [
        104
      ]
    },
    "id": 5374,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5244,
        "literals": [
          "solidity",
          "0.8",
          ".13"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:23:18"
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol",
        "file": "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol",
        "id": 5245,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5374,
        "sourceUnit": 691,
        "src": "57:64:18",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/access/Ownable.sol",
        "file": "openzeppelin-contracts/contracts/access/Ownable.sol",
        "id": 5246,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5374,
        "sourceUnit": 105,
        "src": "122:61:18",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/lib/openzeppelin-contracts/contracts/utils/Context.sol",
        "file": "openzeppelin-contracts/contracts/utils/Context.sol",
        "id": 5247,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5374,
        "sourceUnit": 2405,
        "src": "184:60:18",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/evanconrad/dev/src/strangemoodfoundation/strangemood-eth/src/contracts/lib/Association.sol",
        "file": "./Association.sol",
        "id": 5248,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 5374,
        "sourceUnit": 5044,
        "src": "245:27:18",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [
          {
            "baseName": {
              "id": 5249,
              "name": "Member",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 5043,
              "src": "303:6:18"
            },
            "id": 5250,
            "nodeType": "InheritanceSpecifier",
            "src": "303:6:18"
          }
        ],
        "canonicalName": "Listing",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 5373,
        "linearizedBaseContracts": [
          5373,
          5043,
          104,
          2404
        ],
        "name": "Listing",
        "nameLocation": "292:7:18",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "functionSelector": "a035b1fe",
            "id": 5252,
            "mutability": "mutable",
            "name": "price",
            "nameLocation": "380:5:18",
            "nodeType": "VariableDeclaration",
            "scope": 5373,
            "src": "366:19:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 5251,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "366:6:18",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "3c130d90",
            "id": 5254,
            "mutability": "mutable",
            "name": "tokenURI",
            "nameLocation": "477:8:18",
            "nodeType": "VariableDeclaration",
            "scope": 5373,
            "src": "463:22:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 5253,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "463:6:18",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "079d0980",
            "id": 5257,
            "mutability": "mutable",
            "name": "tokenToPurchaseIn",
            "nameLocation": "560:17:18",
            "nodeType": "VariableDeclaration",
            "scope": 5373,
            "src": "547:30:18",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ERC20_$690",
              "typeString": "contract ERC20"
            },
            "typeName": {
              "id": 5256,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 5255,
                "name": "ERC20",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 690,
                "src": "547:5:18"
              },
              "referencedDeclaration": 690,
              "src": "547:5:18",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20_$690",
                "typeString": "contract ERC20"
              }
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 5258,
              "nodeType": "StructuredDocumentation",
              "src": "584:179:18",
              "text": " @dev Emitted when `tokenURI` is updated. TokenURI is not indexed\n because indexed strings are hashed. Also indexing doesn't add value\n in this case."
            },
            "eventSelector": "9d3b637080c93cf84785a8e847e7c45118d18988dfbaf8acb02b53fcbb14dacb",
            "id": 5262,
            "name": "SetTokenURI",
            "nameLocation": "774:11:18",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5261,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5260,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "tokenURI",
                  "nameLocation": "793:8:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5262,
                  "src": "786:15:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5259,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "786:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "785:17:18"
            },
            "src": "768:35:18"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 5263,
              "nodeType": "StructuredDocumentation",
              "src": "809:56:18",
              "text": " @dev Emitted when `price` is updated."
            },
            "eventSelector": "f88bffa611823165fbf8a5b30329c5759a3d2e8f25548ccf875a76d09905cf4a",
            "id": 5267,
            "name": "SetPrice",
            "nameLocation": "876:8:18",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5266,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5265,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "price",
                  "nameLocation": "900:5:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5267,
                  "src": "885:20:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5264,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "885:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "884:22:18"
            },
            "src": "870:37:18"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 5268,
              "nodeType": "StructuredDocumentation",
              "src": "913:118:18",
              "text": " @dev Emitted when `tokenToPurchasIn` is updated. The value is the\n address of an ERC20 token."
            },
            "eventSelector": "c3450b42414279d313db34d948a7a39227cc9c9e2acf2228eba16179d628f66f",
            "id": 5272,
            "name": "SetTokenToPurchaseIn",
            "nameLocation": "1042:20:18",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 5271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5270,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "1079:5:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5272,
                  "src": "1063:21:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5269,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1063:7:18",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1062:23:18"
            },
            "src": "1036:50:18"
          },
          {
            "body": {
              "id": 5306,
              "nodeType": "Block",
              "src": "1234:188:18",
              "statements": [
                {
                  "expression": {
                    "id": 5287,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5285,
                      "name": "tokenToPurchaseIn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5257,
                      "src": "1244:17:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERC20_$690",
                        "typeString": "contract ERC20"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 5286,
                      "name": "_tokenToPurchaseIn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5278,
                      "src": "1264:18:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERC20_$690",
                        "typeString": "contract ERC20"
                      }
                    },
                    "src": "1244:38:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$690",
                      "typeString": "contract ERC20"
                    }
                  },
                  "id": 5288,
                  "nodeType": "ExpressionStatement",
                  "src": "1244:38:18"
                },
                {
                  "expression": {
                    "id": 5291,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5289,
                      "name": "price",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5252,
                      "src": "1292:5:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 5290,
                      "name": "_price",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5280,
                      "src": "1300:6:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "1292:14:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5292,
                  "nodeType": "ExpressionStatement",
                  "src": "1292:14:18"
                },
                {
                  "expression": {
                    "id": 5295,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5293,
                      "name": "tokenURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5254,
                      "src": "1316:8:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 5294,
                      "name": "_tokenURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5282,
                      "src": "1327:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1316:20:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 5296,
                  "nodeType": "ExpressionStatement",
                  "src": "1316:20:18"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5298,
                        "name": "_association",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5275,
                        "src": "1362:12:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Association_$4902",
                          "typeString": "contract Association"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Association_$4902",
                          "typeString": "contract Association"
                        }
                      ],
                      "id": 5297,
                      "name": "_setAssociation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4976,
                      "src": "1346:15:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Association_$4902_$returns$__$",
                        "typeString": "function (contract Association)"
                      }
                    },
                    "id": 5299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1346:29:18",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5300,
                  "nodeType": "ExpressionStatement",
                  "src": "1346:29:18"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 5302,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "1404:3:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 5303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "1404:10:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5301,
                      "name": "_transferOwnership",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 103,
                      "src": "1385:18:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 5304,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1385:30:18",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5305,
                  "nodeType": "ExpressionStatement",
                  "src": "1385:30:18"
                }
              ]
            },
            "id": 5307,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5283,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5275,
                  "mutability": "mutable",
                  "name": "_association",
                  "nameLocation": "1125:12:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5307,
                  "src": "1113:24:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Association_$4902",
                    "typeString": "contract Association"
                  },
                  "typeName": {
                    "id": 5274,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5273,
                      "name": "Association",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4902,
                      "src": "1113:11:18"
                    },
                    "referencedDeclaration": 4902,
                    "src": "1113:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Association_$4902",
                      "typeString": "contract Association"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5278,
                  "mutability": "mutable",
                  "name": "_tokenToPurchaseIn",
                  "nameLocation": "1153:18:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5307,
                  "src": "1147:24:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20_$690",
                    "typeString": "contract ERC20"
                  },
                  "typeName": {
                    "id": 5277,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5276,
                      "name": "ERC20",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 690,
                      "src": "1147:5:18"
                    },
                    "referencedDeclaration": 690,
                    "src": "1147:5:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$690",
                      "typeString": "contract ERC20"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5280,
                  "mutability": "mutable",
                  "name": "_price",
                  "nameLocation": "1188:6:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5307,
                  "src": "1181:13:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5279,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1181:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5282,
                  "mutability": "mutable",
                  "name": "_tokenURI",
                  "nameLocation": "1218:9:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5307,
                  "src": "1204:23:18",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5281,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1204:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1103:130:18"
            },
            "returnParameters": {
              "id": 5284,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1234:0:18"
            },
            "scope": 5373,
            "src": "1092:330:18",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 5319,
              "nodeType": "Block",
              "src": "1503:46:18",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 5316,
                        "name": "_association",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5310,
                        "src": "1529:12:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Association_$4902",
                          "typeString": "contract Association"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Association_$4902",
                          "typeString": "contract Association"
                        }
                      ],
                      "id": 5315,
                      "name": "_setAssociation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4976,
                      "src": "1513:15:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Association_$4902_$returns$__$",
                        "typeString": "function (contract Association)"
                      }
                    },
                    "id": 5317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1513:29:18",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5318,
                  "nodeType": "ExpressionStatement",
                  "src": "1513:29:18"
                }
              ]
            },
            "functionSelector": "74062f4d",
            "id": 5320,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 5313,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 5312,
                  "name": "onlyOwner",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 46,
                  "src": "1493:9:18"
                },
                "nodeType": "ModifierInvocation",
                "src": "1493:9:18"
              }
            ],
            "name": "setAssociation",
            "nameLocation": "1437:14:18",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5311,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5310,
                  "mutability": "mutable",
                  "name": "_association",
                  "nameLocation": "1464:12:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5320,
                  "src": "1452:24:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Association_$4902",
                    "typeString": "contract Association"
                  },
                  "typeName": {
                    "id": 5309,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5308,
                      "name": "Association",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4902,
                      "src": "1452:11:18"
                    },
                    "referencedDeclaration": 4902,
                    "src": "1452:11:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Association_$4902",
                      "typeString": "contract Association"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1451:26:18"
            },
            "returnParameters": {
              "id": 5314,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1503:0:18"
            },
            "scope": 5373,
            "src": "1428:121:18",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5335,
              "nodeType": "Block",
              "src": "1667:74:18",
              "statements": [
                {
                  "expression": {
                    "id": 5329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5327,
                      "name": "tokenURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5254,
                      "src": "1677:8:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 5328,
                      "name": "_tokenURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5322,
                      "src": "1688:9:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1677:20:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 5330,
                  "nodeType": "ExpressionStatement",
                  "src": "1677:20:18"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 5332,
                        "name": "_tokenURI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5322,
                        "src": "1724:9:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 5331,
                      "name": "SetTokenURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5262,
                      "src": "1712:11:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 5333,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1712:22:18",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5334,
                  "nodeType": "EmitStatement",
                  "src": "1707:27:18"
                }
              ]
            },
            "functionSelector": "e0df5b6f",
            "id": 5336,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 5325,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 5324,
                  "name": "onlyOwnerOrAssociation",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4952,
                  "src": "1640:22:18"
                },
                "nodeType": "ModifierInvocation",
                "src": "1640:22:18"
              }
            ],
            "name": "setTokenURI",
            "nameLocation": "1564:11:18",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5323,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5322,
                  "mutability": "mutable",
                  "name": "_tokenURI",
                  "nameLocation": "1590:9:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5336,
                  "src": "1576:23:18",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5321,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1576:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1575:25:18"
            },
            "returnParameters": {
              "id": 5326,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1667:0:18"
            },
            "scope": 5373,
            "src": "1555:186:18",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5351,
              "nodeType": "Block",
              "src": "1818:62:18",
              "statements": [
                {
                  "expression": {
                    "id": 5345,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5343,
                      "name": "price",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5252,
                      "src": "1828:5:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 5344,
                      "name": "_price",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5338,
                      "src": "1836:6:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "1828:14:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 5346,
                  "nodeType": "ExpressionStatement",
                  "src": "1828:14:18"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 5348,
                        "name": "_price",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5338,
                        "src": "1866:6:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 5347,
                      "name": "SetPrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5267,
                      "src": "1857:8:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$",
                        "typeString": "function (uint64)"
                      }
                    },
                    "id": 5349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1857:16:18",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5350,
                  "nodeType": "EmitStatement",
                  "src": "1852:21:18"
                }
              ]
            },
            "functionSelector": "229c2048",
            "id": 5352,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 5341,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 5340,
                  "name": "onlyOwnerOrAssociation",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4952,
                  "src": "1795:22:18"
                },
                "nodeType": "ModifierInvocation",
                "src": "1795:22:18"
              }
            ],
            "name": "setPrice",
            "nameLocation": "1756:8:18",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5339,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5338,
                  "mutability": "mutable",
                  "name": "_price",
                  "nameLocation": "1772:6:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5352,
                  "src": "1765:13:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 5337,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1765:6:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1764:15:18"
            },
            "returnParameters": {
              "id": 5342,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1818:0:18"
            },
            "scope": 5373,
            "src": "1747:133:18",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5371,
              "nodeType": "Block",
              "src": "2008:119:18",
              "statements": [
                {
                  "expression": {
                    "id": 5362,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 5360,
                      "name": "tokenToPurchaseIn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5257,
                      "src": "2018:17:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERC20_$690",
                        "typeString": "contract ERC20"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 5361,
                      "name": "_tokenToPurchaseIn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5355,
                      "src": "2038:18:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ERC20_$690",
                        "typeString": "contract ERC20"
                      }
                    },
                    "src": "2018:38:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$690",
                      "typeString": "contract ERC20"
                    }
                  },
                  "id": 5363,
                  "nodeType": "ExpressionStatement",
                  "src": "2018:38:18"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 5367,
                            "name": "_tokenToPurchaseIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5355,
                            "src": "2100:18:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20_$690",
                              "typeString": "contract ERC20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ERC20_$690",
                              "typeString": "contract ERC20"
                            }
                          ],
                          "id": 5366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2092:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 5365,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2092:7:18",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 5368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2092:27:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5364,
                      "name": "SetTokenToPurchaseIn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5272,
                      "src": "2071:20:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 5369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2071:49:18",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5370,
                  "nodeType": "EmitStatement",
                  "src": "2066:54:18"
                }
              ]
            },
            "functionSelector": "eda6032e",
            "id": 5372,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 5358,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 5357,
                  "name": "onlyOwnerOrAssociation",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 4952,
                  "src": "1981:22:18"
                },
                "nodeType": "ModifierInvocation",
                "src": "1981:22:18"
              }
            ],
            "name": "setTokenToPurchaseIn",
            "nameLocation": "1895:20:18",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5356,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5355,
                  "mutability": "mutable",
                  "name": "_tokenToPurchaseIn",
                  "nameLocation": "1922:18:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5372,
                  "src": "1916:24:18",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20_$690",
                    "typeString": "contract ERC20"
                  },
                  "typeName": {
                    "id": 5354,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5353,
                      "name": "ERC20",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 690,
                      "src": "1916:5:18"
                    },
                    "referencedDeclaration": 690,
                    "src": "1916:5:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$690",
                      "typeString": "contract ERC20"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1915:26:18"
            },
            "returnParameters": {
              "id": 5359,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2008:0:18"
            },
            "scope": 5373,
            "src": "1886:241:18",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          }
        ],
        "scope": 5374,
        "src": "274:1855:18",
        "usedErrors": []
      }
    ],
    "src": "32:2098:18"
  }
}