{
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "ProcessFailure",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Recovery",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "affectedAssets",
      "outputs": [
        {
          "internalType": "address payable[14]",
          "name": "",
          "type": "address[14]"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_who",
          "type": "address[]"
        }
      ],
      "name": "allow",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "who",
          "type": "address"
        }
      ],
      "name": "allow",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "allowList",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        }
      ],
      "name": "assetInfo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_totalAffected",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_totalMinted",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_totalCollected",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_totalRecovered",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "bridgeRouter",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_handler",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "collect",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "who",
          "type": "address"
        }
      ],
      "name": "disallow",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_who",
          "type": "address[]"
        }
      ],
      "name": "disallow",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        }
      ],
      "name": "exposed_increaseTotalAffected",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "exposed_record",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fundsRecipient",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        }
      ],
      "name": "info",
      "outputs": [
        {
          "internalType": "address",
          "name": "_holder",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isAllowed",
          "type": "bool"
        },
        {
          "internalType": "string",
          "name": "_uri",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_originalAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_originalUser",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_recovered",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_recoverable",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        }
      ],
      "name": "isAffectedAsset",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nextID",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "record",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "records",
      "outputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint96",
          "name": "amount",
          "type": "uint96"
        },
        {
          "internalType": "address",
          "name": "originalUser",
          "type": "address"
        },
        {
          "internalType": "uint96",
          "name": "recovered",
          "type": "uint96"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        }
      ],
      "name": "recover",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        }
      ],
      "name": "recoverable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "remove",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "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": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenOfOwnerByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "totalAffected",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "totalCollected",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "totalMinted",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "totalRecovered",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x60c060405234801561001057600080fd5b50600060808190526c0100000000000000000000000060a05260016147e26100518339806116d352806120f85250806112e852806116f752506147e26000f3fe608060405234801561001057600080fd5b50600436106102fd5760003560e01c80636c0360eb1161019c578063a9ed9cb8116100ee578063ca091ef311610097578063f2fde38b11610071578063f2fde38b14610c8d578063f3f0531314610cc0578063ff9913e814610cf3576102fd565b8063ca091ef314610baf578063e271f8e314610c1f578063e985e9c514610c52576102fd565b8063bf799f2b116100c8578063bf799f2b14610b1c578063c87b56dd14610b4f578063c8fea2fb14610b6c576102fd565b8063a9ed9cb8146109dd578063abe7f1ab14610a10578063b88d4fde14610a49576102fd565b80638129fc1c1161015057806395d89b411161012a57806395d89b411461092a578063987c5ced14610932578063a22cb465146109a2576102fd565b80638129fc1c146108c15780638b0dcb4e146108c95780638da5cb5b14610922576102fd565b80637013ca26116101815780637013ca261461084557806370a0823114610886578063715018a6146108b9576102fd565b80636c0360eb1461080a5780636c26763314610812576102fd565b806323b872dd116102555780633b6fd2cf116102095780634f6ccce7116101e35780634f6ccce71461078d5780635f470542146107aa5780636352211e146107ed576102fd565b80633b6fd2cf1461077d57806341af5b521461078557806342842e0e14610558576102fd565b80632e3405991161023a5780632e340599146105ce5780632f745c59146106d85780633446106714610711576102fd565b806323b872dd146105585780632848aeaf1461059b576102fd565b8063095ea7b3116102b757806318160ddd1161029157806318160ddd1461051557806319cb07121461051d5780631e96917d14610550576102fd565b8063095ea7b31461047a5780630ca35682146104b5578063172a93fb146104d2576102fd565b806301ffc9a7116102e857806301ffc9a71461036457806306fdde03146103b7578063081812fc14610434576102fd565b80623d479014610302578062c12c3114610347575b600080fd5b6103356004803603602081101561031857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d26565b60408051918252519081900360200190f35b6103356004803603602081101561035d57600080fd5b5035610d38565b6103a36004803603602081101561037a57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610e3f565b604080519115158252519081900360200190f35b6103bf610e76565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103f95781810151838201526020016103e1565b50505050905090810190601f1680156104265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104516004803603602081101561044a57600080fd5b5035610f2a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6104b36004803603604081101561049057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fb3565b005b6104b3600480360360208110156104cb57600080fd5b50356110f6565b6104b3600480360360608110156104e857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356112d0565b61033561137f565b6104b36004803603602081101561053357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611390565b610335611428565b6104b36004803603606081101561056e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561142e565b6103a3600480360360208110156105b157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611436565b6105eb600480360360208110156105e457600080fd5b503561144c565b604051808973ffffffffffffffffffffffffffffffffffffffff1681526020018815158152602001806020018773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828103825288818151815260200191508051906020019080838360005b8381101561069657818101518382015260200161067e565b50505050905090810190601f1680156106c35780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b610335600480360360408110156106ee57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611634565b61072e6004803603602081101561072757600080fd5b503561166c565b6040805173ffffffffffffffffffffffffffffffffffffffff95861681526bffffffffffffffffffffffff94851660208201529290941682850152909116606082015290519081900360800190f35b6104516116d1565b6104516116f5565b610335600480360360208110156107a357600080fd5b5035611719565b6104b3600480360360608110156107c057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611374565b6104516004803603602081101561080357600080fd5b503561172f565b6103bf611757565b6103a36004803603602081101561082857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166117d6565b61084d611800565b60405180826101c080838360005b8381101561087357818101518382015260200161085b565b5050505090500191505060405180910390f35b6103356004803603602081101561089c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611988565b6104b3611a24565b6104b3611b3b565b6108fc600480360360208110156108df57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611d10565b604080519485526020850193909352838301919091526060830152519081900360800190f35b610451611d59565b6103bf611d75565b6104b36004803603602081101561094857600080fd5b81019060208101813564010000000081111561096357600080fd5b82018360208201111561097557600080fd5b8035906020019184602083028401116401000000008311171561099757600080fd5b509092509050611df4565b6104b3600480360360408110156109b857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515611e76565b6104b3600480360360208110156109f357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611fe7565b6104b360048036036040811015610a2657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612034565b6104b360048036036080811015610a5f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359190810190608081016060820135640100000000811115610aa757600080fd5b820183602082011115610ab957600080fd5b80359060200191846001830284011164010000000083111715610adb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612243945050505050565b61033560048036036020811015610b3257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612251565b6103bf60048036036020811015610b6557600080fd5b5035612264565b6104b360048036036060811015610b8257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356125d1565b6104b360048036036020811015610bc557600080fd5b810190602081018135640100000000811115610be057600080fd5b820183602082011115610bf257600080fd5b80359060200191846020830284011164010000000083111715610c1457600080fd5b5090925090506126cc565b61033560048036036020811015610c3557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661274e565b6103a360048036036040811015610c6857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516612760565b6104b360048036036020811015610ca357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661279b565b61033560048036036020811015610cd657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661293d565b6104b360048036036020811015610d0957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612950565b60fd6020526000908152604090205481565b6000610d43826129a0565b610dae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f7265636f76657261626c653a206e6f6e6578697374656e7420746f6b656e0000604482015290519081900360640190fd5b600082815260fc60209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff80821683526bffffffffffffffffffffffff740100000000000000000000000000000000000000009283900481169584019590955260019093015492831694820194909452929004166060820152610e36816129ad565b9150505b919050565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526065602052604090205460ff1690565b609c8054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610f205780601f10610ef557610100808354040283529160200191610f20565b820191906000526020600020905b815481529060010190602001808311610f0357829003601f168201915b5050505050905090565b6000610f35826129a0565b610f8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614730602c913960400191505060405180910390fd5b506000908152609a602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610fbe8261172f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061478b6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611064612a4a565b73ffffffffffffffffffffffffffffffffffffffff16148061109257506110928161108d612a4a565b612760565b6110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806146556038913960400191505060405180910390fd5b6110f18383612a4e565b505050565b33600090815261015f602052604090205460ff1661117557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f7420616c6c6f776564000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006111808261172f565b905073ffffffffffffffffffffffffffffffffffffffff8116331461120657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6f6e6c79204e465420686f6c6465722063616e207265636f7665720000000000604482015290519081900360640190fd5b600082815260fc60209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff8082168084526bffffffffffffffffffffffff7401000000000000000000000000000000000000000093849004811685880152600190950154808316858901526706f05b59d3b200009390048516830190941660608401528551828152955192959194908716939288927f17d2c50d23ce305bb9110cc7ebdad11256efdcde5771581f8a57202e4eafaff692908290030190a450505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461137457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6f6e6c7920427269646765526f75746572000000000000000000000000000000604482015290519081900360640190fd5b6110f1838383612aee565b600061138b6098612c8a565b905090565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020546113f15773ffffffffffffffffffffffffffffffffffffffff8116600090815260208190526040902069010f0cf064dd592000009055611425565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604090208054678ac7230489e800000190555b50565b60fb5481565b6110f1612c95565b61015f6020526000908152604090205460ff1681565b600080606060008060008060006114628961172f565b73ffffffffffffffffffffffffffffffffffffffff8116600090815261015f602052604090205490985060ff16965061149a89612264565b9550600060fc60008b81526020019081526020016000206040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090508060000151955080602001516bffffffffffffffffffffffff1694508060400151935080606001516bffffffffffffffffffffffff16925066b1a2bc2ec50000915050919395975091939597565b73ffffffffffffffffffffffffffffffffffffffff821660009081526097602052604081206116639083612cfc565b90505b92915050565b60fc602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff808316926bffffffffffffffffffffffff740100000000000000000000000000000000000000009182900481169392831692919091041684565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080611727609884612d08565b509392505050565b6000611666826040518060600160405280602981526020016146b76029913960989190612d24565b609f8054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610f205780601f10610ef557610100808354040283529160200191610f20565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902054151590565b6118086144f4565b50604080516101c081018252732260fac5e5542a773aa44fbcfedf7c193bc2c599815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2602082015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb489181019190915273853d955acef822db058eb8505911ed77f175b99e606082015273dac17f958d2ee523a2206206994597c13d831ec76080820152736b175474e89094c44da98b954eedeac495271d0f60a082015273d417144312dbf50465b1c641d016962017ef624060c0820152733d6f0dea3ac3c607b3998e6ce14b6350721752d960e08201527340eb746dee876ac1e78697b7ca85142d178a1fc861010082015273f1a91c7d44768070f711c68f33a7ca25c8d30268610120820152733432b6a60d23ca0dfca7761b7ab56459d9c964d0610140820152733431f91b3a388115f00c5ba9fdb899851d005fb561016082015273e5097d9baeafb89f9bcb78c9290d545db5f9e9cb61018082015273f1dc500fde233a4055e25e5bbf516372bc4f68716101a082015290565b600073ffffffffffffffffffffffffffffffffffffffff82166119f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061468d602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260976020526040902061166690612c8a565b611a2c612a4a565b73ffffffffffffffffffffffffffffffffffffffff16611a4a611d59565b73ffffffffffffffffffffffffffffffffffffffff1614611acc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60c95460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360c980547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b603254610100900460ff1680611b545750611b54612d3b565b80611b62575060325460ff16155b611bb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806146e0602e913960400191505060405180910390fd5b603254610100900460ff16158015611c1d57603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b611c25612d4c565b611c996040518060400160405280600981526020017f4e6f6d6164204e465400000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f6e6f4e4654000000000000000000000000000000000000000000000000000000815250612fdd565b611cd76040518060400160405280601681526020017f68747470733a2f2f6e66742e6e6f6d61642e78797a2f0000000000000000000081525061310c565b611cdf61311f565b801561142557603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b73ffffffffffffffffffffffffffffffffffffffff166000908152602081815260408083205460fd83528184205461012d84528285205461012e90945291909320549293909290565b60c95473ffffffffffffffffffffffffffffffffffffffff1690565b609d8054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610f205780601f10610ef557610100808354040283529160200191610f20565b60005b818110156110f157600161015f6000858585818110611e1257fe5b6020908102929092013573ffffffffffffffffffffffffffffffffffffffff1683525081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101611df7565b611e7e612a4a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f1857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b80609b6000611f25612a4a565b73ffffffffffffffffffffffffffffffffffffffff90811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001692151592909217909155611f94612a4a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff16600090815261015f6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b61203c612a4a565b73ffffffffffffffffffffffffffffffffffffffff1661205a611d59565b73ffffffffffffffffffffffffffffffffffffffff16146120dc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61211d73ffffffffffffffffffffffffffffffffffffffff83167f000000000000000000000000000000000000000000000000000000000000000083613211565b73ffffffffffffffffffffffffffffffffffffffff8216600081815261012e602090815260408083205461012d8352928190205481517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152915193900393926370a0823192602480840193919291829003018186803b1580156121a657600080fd5b505afa1580156121ba573d6000803e3d6000fd5b505050506040513d60208110156121d057600080fd5b5051101561223f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2172656d6f766520616d6f756e74000000000000000000000000000000000000604482015290519081900360640190fd5b5050565b61224b612c95565b50505050565b61012e6020526000908152604090205481565b606061226f826129a0565b6122c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061475c602f913960400191505060405180910390fd5b6000828152609e602090815260408083208054825160026001831615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190921691909104601f8101859004850282018501909352828152929091908301828280156123755780601f1061234a57610100808354040283529160200191612375565b820191906000526020600020905b81548152906001019060200180831161235857829003601f168201915b505050505090506000612386611757565b905080516000141561239a57509050610e3a565b8151156124b55780826040516020018083805190602001908083835b602083106123f357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016123b6565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905285519190930192850191508083835b6020831061247757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161243a565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050610e3a565b806124bf8561329e565b6040516020018083805190602001908083835b6020831061250f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016124d2565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905285519190930192850191508083835b6020831061259357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612556565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6125d9612a4a565b73ffffffffffffffffffffffffffffffffffffffff166125f7611d59565b73ffffffffffffffffffffffffffffffffffffffff161461267957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61269b73ffffffffffffffffffffffffffffffffffffffff83168430846133cb565b73ffffffffffffffffffffffffffffffffffffffff909116600090815261012d602052604090208054909101905550565b60005b818110156110f157600061015f60008585858181106126ea57fe5b6020908102929092013573ffffffffffffffffffffffffffffffffffffffff1683525081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016126cf565b60006020819052908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152609b6020908152604080832093909416825291909152205460ff1690565b6127a3612a4a565b73ffffffffffffffffffffffffffffffffffffffff166127c1611d59565b73ffffffffffffffffffffffffffffffffffffffff161461284357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166128af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806146096026913960400191505060405180910390fd5b60c95460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61012d6020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff16600090815261015f6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000611666609883613460565b805173ffffffffffffffffffffffffffffffffffffffff90811660009081526020818152604080832054828601518651909516845261012d909252822054919283926bffffffffffffffffffffffff9091160281612a0757fe5b04905082606001516bffffffffffffffffffffffff16811015612a2e576000915050610e3a565b60608301516bffffffffffffffffffffffff1690039050919050565b3390565b6000818152609a6020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190612aa88261172f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60fb805460018101909155612b03838261346c565b600081815260fc6020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8a81169182178116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8b160217845560019093018054909216928916929092179055835260fd80835281842080548701908190558484529190932054929091521115612c1e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6f7665726d696e74000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16827f72d16d2b2c30660a6bd00c67b3674217920a01054fcd02777011805372a50c80856040518082815260200191505060405180910390a450505050565b600061166682613486565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f207472616e73666572730000000000000000000000000000000000000000604482015290519081900360640190fd5b6000611663838361348a565b6000808080612d178686613508565b9097909650945050505050565b6000612d3184848461359d565b90505b9392505050565b6000612d4630613681565b15905090565b600060208190526417f117200f7ff0b998666205e50af945dcd5198861491334a6162cc24264d9a801634ee07ec8556904d7b58372297b8deaf97f2a11cb67ca5c7e99dba99b50e02c11472d0f19c22ed5af42a1599a7f57e1c7a455654f5aa599f7c07fc6521c8ea4247e8beb499344e591b9401fb2807ff9997dd598fd9e56c73a264d556a05873e2ff48e466ba2a59d7f27e997bcf7e34b5892c35718d72ca8a4d44f6f77265e19fe4feb6a8ebb16cc7b556507d8748182137fa934b07068f5d95a11413ed6d08a4a1122dc4b8c14a6ab2d94f8b279dac63042556a03c00b5742b19f454142857f5306b8fbe80b30a74098357ee8e26fad8dc069da9011cca5f0870a0a5982e541556a5dce3546a3de30fc55c6007f9cdb9ef8486d08aeebffa8fc9bbb85a20624c3ec8359d0fa1781366bd9aea8ad55699bf5a4d57a26c3c9d3b07f55813e084f33673b4b20bdc0331a65033a42722331e3f55a70ef815e1ddd4fb4556b01ab04465765b7c37a9b10007f65d12645f02a494bda192fbb7d0176b7df838fe8410c311663defbb56bfe7c28556a05f94e3dd1d341a8a949207fd50ff4d0ac27265152d143aec668d4c99a8fc77655d8a62125d1a4d3cd59087b55691692887ced913385b7807f541919c86040022d9e18ea6a255cd26949db2e27ffdd387787ea434611d53f44556a30a52129bcbbb1a75b6ac07f5f5fc63651242af2cb273d90cb6dd24751f30b6c885d12f328d3de3f13cba808556a09c3302fbb8195460740007f6fc1d9f3e3a05044d624fd126acdcb494d565eda599ac28936ba2e25ca06a62c5573f1dc500fde233a4055e25e5bbf516372bc4f6871905269444f9a32d89d50eec9647f9754ecc4659a29acf96c52a3094f54ed36634a7cb944ee6f2311c46b1437563355565b603254610100900460ff1680612ff65750612ff6612d3b565b80613004575060325460ff16155b613059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806146e0602e913960400191505060405180910390fd5b603254610100900460ff161580156130bf57603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b6130c7613687565b6130cf613799565b6130d983836138a4565b80156110f157603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b805161223f90609f906020840190614513565b603254610100900460ff16806131385750613138612d3b565b80613146575060325460ff16155b61319b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806146e0602e913960400191505060405180910390fd5b603254610100900460ff1615801561320157603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b613209613687565b611cdf613a29565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526110f1908490613bb9565b6060816132df575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610e3a565b8160005b81156132f757600101600a820491506132e3565b60008167ffffffffffffffff8111801561331057600080fd5b506040519080825280601f01601f19166020018201604052801561333b576020820181803683370190505b5085935090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b83156133c257600a840660300160f81b8282806001900393508151811061338857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350613365565b50949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261224b908590613bb9565b60006116638383613c91565b61223f828260405180602001604052806000815250613ca9565b5490565b815460009082106134e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806145b56022913960400191505060405180910390fd5b8260000182815481106134f557fe5b9060005260206000200154905092915050565b815460009081908310613566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061470e6022913960400191505060405180910390fd5b600084600001848154811061357757fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008281526001840160205260408120548281613652576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156136175781810151838201526020016135ff565b50505050905090810190601f1680156136445780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061366557fe5b9060005260206000209060020201600101549150509392505050565b3b151590565b603254610100900460ff16806136a057506136a0612d3b565b806136ae575060325460ff16155b613703576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806146e0602e913960400191505060405180910390fd5b603254610100900460ff16158015611cdf57603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911661010017166001179055801561142557603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b603254610100900460ff16806137b257506137b2612d3b565b806137c0575060325460ff16155b613815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806146e0602e913960400191505060405180910390fd5b603254610100900460ff1615801561387b57603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b611cdf7f01ffc9a700000000000000000000000000000000000000000000000000000000613d15565b603254610100900460ff16806138bd57506138bd612d3b565b806138cb575060325460ff16155b613920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806146e0602e913960400191505060405180910390fd5b603254610100900460ff1615801561398657603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b825161399990609c906020860190614513565b5081516139ad90609d906020850190614513565b506139d77f80ac58cd00000000000000000000000000000000000000000000000000000000613d15565b613a007f5b5e139f00000000000000000000000000000000000000000000000000000000613d15565b6130d97f780e9d6300000000000000000000000000000000000000000000000000000000613d15565b603254610100900460ff1680613a425750613a42612d3b565b80613a50575060325460ff16155b613aa5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806146e0602e913960400191505060405180910390fd5b603254610100900460ff16158015613b0b57603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b6000613b15612a4a565b60c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801561142557603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b6000613c1b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613e019092919063ffffffff16565b8051909150156110f157808060200190516020811015613c3a57600080fd5b50516110f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806147ac602a913960400191505060405180910390fd5b60009081526001919091016020526040902054151590565b613cb38383613e10565b613cc06000848484613f99565b6110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806145d76032913960400191505060405180910390fd5b7fffffffff000000000000000000000000000000000000000000000000000000008082161415613da657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff0000000000000000000000000000000000000000000000000000000016600090815260656020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6060612d3184846000856141aa565b73ffffffffffffffffffffffffffffffffffffffff8216613e9257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b613e9b816129a0565b15613f0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b613f13600083836110f1565b73ffffffffffffffffffffffffffffffffffffffff82166000908152609760205260409020613f429082614364565b50613f4f60988284614370565b50604051819073ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000613fba8473ffffffffffffffffffffffffffffffffffffffff16613681565b613fc6575060016141a2565b600061413e7f150b7a0200000000000000000000000000000000000000000000000000000000613ff4612a4a565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561407557818101518382015260200161405d565b50505050905090810190601f1680156140a25780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060600160405280603281526020016145d76032913973ffffffffffffffffffffffffffffffffffffffff88169190613e01565b9050600081806020019051602081101561415757600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014925050505b949350505050565b606082471015614205576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061462f6026913960400191505060405180910390fd5b61420e85613681565b61427957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106142e257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016142a5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614344576040519150601f19603f3d011682016040523d82523d6000602084013e614349565b606091505b5091509150614359828286614393565b979650505050505050565b60006116638383614413565b6000612d31848473ffffffffffffffffffffffffffffffffffffffff851661445d565b606083156143a2575081612d34565b8251156143b25782518084602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528451602484015284518593919283926044019190850190808383600083156136175781810151838201526020016135ff565b600061441f8383613c91565b61445557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611666565b506000611666565b6000828152600184016020526040812054806144c2575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055612d34565b828560000160018303815481106144d557fe5b9060005260206000209060020201600101819055506000915050612d34565b604051806101c00160405280600e906020820280368337509192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282614549576000855561458f565b82601f1061456257805160ff191683800117855561458f565b8280016001018555821561458f579182015b8281111561458f578251825591602001919060010190614574565b5061459b92915061459f565b5090565b5b8082111561459b57600081556001016145a056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a164736f6c6343000706000a",
    "sourceMap": "143:2249:46:-:0;;;249:62;;;;;;;;;-1:-1:-1;293:1:46;857:28:39;;;;5215:32:40;::::1;::::0;143:2249:46;;;293:1;143:2249;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b50600436106102fd5760003560e01c80636c0360eb1161019c578063a9ed9cb8116100ee578063ca091ef311610097578063f2fde38b11610071578063f2fde38b14610c8d578063f3f0531314610cc0578063ff9913e814610cf3576102fd565b8063ca091ef314610baf578063e271f8e314610c1f578063e985e9c514610c52576102fd565b8063bf799f2b116100c8578063bf799f2b14610b1c578063c87b56dd14610b4f578063c8fea2fb14610b6c576102fd565b8063a9ed9cb8146109dd578063abe7f1ab14610a10578063b88d4fde14610a49576102fd565b80638129fc1c1161015057806395d89b411161012a57806395d89b411461092a578063987c5ced14610932578063a22cb465146109a2576102fd565b80638129fc1c146108c15780638b0dcb4e146108c95780638da5cb5b14610922576102fd565b80637013ca26116101815780637013ca261461084557806370a0823114610886578063715018a6146108b9576102fd565b80636c0360eb1461080a5780636c26763314610812576102fd565b806323b872dd116102555780633b6fd2cf116102095780634f6ccce7116101e35780634f6ccce71461078d5780635f470542146107aa5780636352211e146107ed576102fd565b80633b6fd2cf1461077d57806341af5b521461078557806342842e0e14610558576102fd565b80632e3405991161023a5780632e340599146105ce5780632f745c59146106d85780633446106714610711576102fd565b806323b872dd146105585780632848aeaf1461059b576102fd565b8063095ea7b3116102b757806318160ddd1161029157806318160ddd1461051557806319cb07121461051d5780631e96917d14610550576102fd565b8063095ea7b31461047a5780630ca35682146104b5578063172a93fb146104d2576102fd565b806301ffc9a7116102e857806301ffc9a71461036457806306fdde03146103b7578063081812fc14610434576102fd565b80623d479014610302578062c12c3114610347575b600080fd5b6103356004803603602081101561031857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d26565b60408051918252519081900360200190f35b6103356004803603602081101561035d57600080fd5b5035610d38565b6103a36004803603602081101561037a57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610e3f565b604080519115158252519081900360200190f35b6103bf610e76565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103f95781810151838201526020016103e1565b50505050905090810190601f1680156104265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104516004803603602081101561044a57600080fd5b5035610f2a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6104b36004803603604081101561049057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fb3565b005b6104b3600480360360208110156104cb57600080fd5b50356110f6565b6104b3600480360360608110156104e857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356112d0565b61033561137f565b6104b36004803603602081101561053357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611390565b610335611428565b6104b36004803603606081101561056e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561142e565b6103a3600480360360208110156105b157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611436565b6105eb600480360360208110156105e457600080fd5b503561144c565b604051808973ffffffffffffffffffffffffffffffffffffffff1681526020018815158152602001806020018773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828103825288818151815260200191508051906020019080838360005b8381101561069657818101518382015260200161067e565b50505050905090810190601f1680156106c35780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b610335600480360360408110156106ee57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611634565b61072e6004803603602081101561072757600080fd5b503561166c565b6040805173ffffffffffffffffffffffffffffffffffffffff95861681526bffffffffffffffffffffffff94851660208201529290941682850152909116606082015290519081900360800190f35b6104516116d1565b6104516116f5565b610335600480360360208110156107a357600080fd5b5035611719565b6104b3600480360360608110156107c057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611374565b6104516004803603602081101561080357600080fd5b503561172f565b6103bf611757565b6103a36004803603602081101561082857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166117d6565b61084d611800565b60405180826101c080838360005b8381101561087357818101518382015260200161085b565b5050505090500191505060405180910390f35b6103356004803603602081101561089c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611988565b6104b3611a24565b6104b3611b3b565b6108fc600480360360208110156108df57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611d10565b604080519485526020850193909352838301919091526060830152519081900360800190f35b610451611d59565b6103bf611d75565b6104b36004803603602081101561094857600080fd5b81019060208101813564010000000081111561096357600080fd5b82018360208201111561097557600080fd5b8035906020019184602083028401116401000000008311171561099757600080fd5b509092509050611df4565b6104b3600480360360408110156109b857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515611e76565b6104b3600480360360208110156109f357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611fe7565b6104b360048036036040811015610a2657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612034565b6104b360048036036080811015610a5f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359190810190608081016060820135640100000000811115610aa757600080fd5b820183602082011115610ab957600080fd5b80359060200191846001830284011164010000000083111715610adb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612243945050505050565b61033560048036036020811015610b3257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612251565b6103bf60048036036020811015610b6557600080fd5b5035612264565b6104b360048036036060811015610b8257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356125d1565b6104b360048036036020811015610bc557600080fd5b810190602081018135640100000000811115610be057600080fd5b820183602082011115610bf257600080fd5b80359060200191846020830284011164010000000083111715610c1457600080fd5b5090925090506126cc565b61033560048036036020811015610c3557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661274e565b6103a360048036036040811015610c6857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516612760565b6104b360048036036020811015610ca357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661279b565b61033560048036036020811015610cd657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661293d565b6104b360048036036020811015610d0957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612950565b60fd6020526000908152604090205481565b6000610d43826129a0565b610dae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f7265636f76657261626c653a206e6f6e6578697374656e7420746f6b656e0000604482015290519081900360640190fd5b600082815260fc60209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff80821683526bffffffffffffffffffffffff740100000000000000000000000000000000000000009283900481169584019590955260019093015492831694820194909452929004166060820152610e36816129ad565b9150505b919050565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526065602052604090205460ff1690565b609c8054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610f205780601f10610ef557610100808354040283529160200191610f20565b820191906000526020600020905b815481529060010190602001808311610f0357829003601f168201915b5050505050905090565b6000610f35826129a0565b610f8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614730602c913960400191505060405180910390fd5b506000908152609a602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610fbe8261172f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061478b6021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611064612a4a565b73ffffffffffffffffffffffffffffffffffffffff16148061109257506110928161108d612a4a565b612760565b6110e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806146556038913960400191505060405180910390fd5b6110f18383612a4e565b505050565b33600090815261015f602052604090205460ff1661117557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f7420616c6c6f776564000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006111808261172f565b905073ffffffffffffffffffffffffffffffffffffffff8116331461120657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6f6e6c79204e465420686f6c6465722063616e207265636f7665720000000000604482015290519081900360640190fd5b600082815260fc60209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff8082168084526bffffffffffffffffffffffff7401000000000000000000000000000000000000000093849004811685880152600190950154808316858901526706f05b59d3b200009390048516830190941660608401528551828152955192959194908716939288927f17d2c50d23ce305bb9110cc7ebdad11256efdcde5771581f8a57202e4eafaff692908290030190a450505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461137457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6f6e6c7920427269646765526f75746572000000000000000000000000000000604482015290519081900360640190fd5b6110f1838383612aee565b600061138b6098612c8a565b905090565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260409020546113f15773ffffffffffffffffffffffffffffffffffffffff8116600090815260208190526040902069010f0cf064dd592000009055611425565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604090208054678ac7230489e800000190555b50565b60fb5481565b6110f1612c95565b61015f6020526000908152604090205460ff1681565b600080606060008060008060006114628961172f565b73ffffffffffffffffffffffffffffffffffffffff8116600090815261015f602052604090205490985060ff16965061149a89612264565b9550600060fc60008b81526020019081526020016000206040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090508060000151955080602001516bffffffffffffffffffffffff1694508060400151935080606001516bffffffffffffffffffffffff16925066b1a2bc2ec50000915050919395975091939597565b73ffffffffffffffffffffffffffffffffffffffff821660009081526097602052604081206116639083612cfc565b90505b92915050565b60fc602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff808316926bffffffffffffffffffffffff740100000000000000000000000000000000000000009182900481169392831692919091041684565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080611727609884612d08565b509392505050565b6000611666826040518060600160405280602981526020016146b76029913960989190612d24565b609f8054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610f205780601f10610ef557610100808354040283529160200191610f20565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902054151590565b6118086144f4565b50604080516101c081018252732260fac5e5542a773aa44fbcfedf7c193bc2c599815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2602082015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb489181019190915273853d955acef822db058eb8505911ed77f175b99e606082015273dac17f958d2ee523a2206206994597c13d831ec76080820152736b175474e89094c44da98b954eedeac495271d0f60a082015273d417144312dbf50465b1c641d016962017ef624060c0820152733d6f0dea3ac3c607b3998e6ce14b6350721752d960e08201527340eb746dee876ac1e78697b7ca85142d178a1fc861010082015273f1a91c7d44768070f711c68f33a7ca25c8d30268610120820152733432b6a60d23ca0dfca7761b7ab56459d9c964d0610140820152733431f91b3a388115f00c5ba9fdb899851d005fb561016082015273e5097d9baeafb89f9bcb78c9290d545db5f9e9cb61018082015273f1dc500fde233a4055e25e5bbf516372bc4f68716101a082015290565b600073ffffffffffffffffffffffffffffffffffffffff82166119f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061468d602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260976020526040902061166690612c8a565b611a2c612a4a565b73ffffffffffffffffffffffffffffffffffffffff16611a4a611d59565b73ffffffffffffffffffffffffffffffffffffffff1614611acc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60c95460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360c980547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b603254610100900460ff1680611b545750611b54612d3b565b80611b62575060325460ff16155b611bb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806146e0602e913960400191505060405180910390fd5b603254610100900460ff16158015611c1d57603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b611c25612d4c565b611c996040518060400160405280600981526020017f4e6f6d6164204e465400000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f6e6f4e4654000000000000000000000000000000000000000000000000000000815250612fdd565b611cd76040518060400160405280601681526020017f68747470733a2f2f6e66742e6e6f6d61642e78797a2f0000000000000000000081525061310c565b611cdf61311f565b801561142557603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b73ffffffffffffffffffffffffffffffffffffffff166000908152602081815260408083205460fd83528184205461012d84528285205461012e90945291909320549293909290565b60c95473ffffffffffffffffffffffffffffffffffffffff1690565b609d8054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610f205780601f10610ef557610100808354040283529160200191610f20565b60005b818110156110f157600161015f6000858585818110611e1257fe5b6020908102929092013573ffffffffffffffffffffffffffffffffffffffff1683525081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101611df7565b611e7e612a4a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f1857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b80609b6000611f25612a4a565b73ffffffffffffffffffffffffffffffffffffffff90811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001692151592909217909155611f94612a4a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff16600090815261015f6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b61203c612a4a565b73ffffffffffffffffffffffffffffffffffffffff1661205a611d59565b73ffffffffffffffffffffffffffffffffffffffff16146120dc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61211d73ffffffffffffffffffffffffffffffffffffffff83167f000000000000000000000000000000000000000000000000000000000000000083613211565b73ffffffffffffffffffffffffffffffffffffffff8216600081815261012e602090815260408083205461012d8352928190205481517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152915193900393926370a0823192602480840193919291829003018186803b1580156121a657600080fd5b505afa1580156121ba573d6000803e3d6000fd5b505050506040513d60208110156121d057600080fd5b5051101561223f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2172656d6f766520616d6f756e74000000000000000000000000000000000000604482015290519081900360640190fd5b5050565b61224b612c95565b50505050565b61012e6020526000908152604090205481565b606061226f826129a0565b6122c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061475c602f913960400191505060405180910390fd5b6000828152609e602090815260408083208054825160026001831615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190921691909104601f8101859004850282018501909352828152929091908301828280156123755780601f1061234a57610100808354040283529160200191612375565b820191906000526020600020905b81548152906001019060200180831161235857829003601f168201915b505050505090506000612386611757565b905080516000141561239a57509050610e3a565b8151156124b55780826040516020018083805190602001908083835b602083106123f357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016123b6565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905285519190930192850191508083835b6020831061247757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161243a565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050610e3a565b806124bf8561329e565b6040516020018083805190602001908083835b6020831061250f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016124d2565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905285519190930192850191508083835b6020831061259357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612556565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6125d9612a4a565b73ffffffffffffffffffffffffffffffffffffffff166125f7611d59565b73ffffffffffffffffffffffffffffffffffffffff161461267957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61269b73ffffffffffffffffffffffffffffffffffffffff83168430846133cb565b73ffffffffffffffffffffffffffffffffffffffff909116600090815261012d602052604090208054909101905550565b60005b818110156110f157600061015f60008585858181106126ea57fe5b6020908102929092013573ffffffffffffffffffffffffffffffffffffffff1683525081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016126cf565b60006020819052908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152609b6020908152604080832093909416825291909152205460ff1690565b6127a3612a4a565b73ffffffffffffffffffffffffffffffffffffffff166127c1611d59565b73ffffffffffffffffffffffffffffffffffffffff161461284357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166128af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806146096026913960400191505060405180910390fd5b60c95460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61012d6020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff16600090815261015f6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6000611666609883613460565b805173ffffffffffffffffffffffffffffffffffffffff90811660009081526020818152604080832054828601518651909516845261012d909252822054919283926bffffffffffffffffffffffff9091160281612a0757fe5b04905082606001516bffffffffffffffffffffffff16811015612a2e576000915050610e3a565b60608301516bffffffffffffffffffffffff1690039050919050565b3390565b6000818152609a6020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190612aa88261172f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60fb805460018101909155612b03838261346c565b600081815260fc6020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8a81169182178116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8b160217845560019093018054909216928916929092179055835260fd80835281842080548701908190558484529190932054929091521115612c1e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6f7665726d696e74000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16827f72d16d2b2c30660a6bd00c67b3674217920a01054fcd02777011805372a50c80856040518082815260200191505060405180910390a450505050565b600061166682613486565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f207472616e73666572730000000000000000000000000000000000000000604482015290519081900360640190fd5b6000611663838361348a565b6000808080612d178686613508565b9097909650945050505050565b6000612d3184848461359d565b90505b9392505050565b6000612d4630613681565b15905090565b600060208190526417f117200f7ff0b998666205e50af945dcd5198861491334a6162cc24264d9a801634ee07ec8556904d7b58372297b8deaf97f2a11cb67ca5c7e99dba99b50e02c11472d0f19c22ed5af42a1599a7f57e1c7a455654f5aa599f7c07fc6521c8ea4247e8beb499344e591b9401fb2807ff9997dd598fd9e56c73a264d556a05873e2ff48e466ba2a59d7f27e997bcf7e34b5892c35718d72ca8a4d44f6f77265e19fe4feb6a8ebb16cc7b556507d8748182137fa934b07068f5d95a11413ed6d08a4a1122dc4b8c14a6ab2d94f8b279dac63042556a03c00b5742b19f454142857f5306b8fbe80b30a74098357ee8e26fad8dc069da9011cca5f0870a0a5982e541556a5dce3546a3de30fc55c6007f9cdb9ef8486d08aeebffa8fc9bbb85a20624c3ec8359d0fa1781366bd9aea8ad55699bf5a4d57a26c3c9d3b07f55813e084f33673b4b20bdc0331a65033a42722331e3f55a70ef815e1ddd4fb4556b01ab04465765b7c37a9b10007f65d12645f02a494bda192fbb7d0176b7df838fe8410c311663defbb56bfe7c28556a05f94e3dd1d341a8a949207fd50ff4d0ac27265152d143aec668d4c99a8fc77655d8a62125d1a4d3cd59087b55691692887ced913385b7807f541919c86040022d9e18ea6a255cd26949db2e27ffdd387787ea434611d53f44556a30a52129bcbbb1a75b6ac07f5f5fc63651242af2cb273d90cb6dd24751f30b6c885d12f328d3de3f13cba808556a09c3302fbb8195460740007f6fc1d9f3e3a05044d624fd126acdcb494d565eda599ac28936ba2e25ca06a62c5573f1dc500fde233a4055e25e5bbf516372bc4f6871905269444f9a32d89d50eec9647f9754ecc4659a29acf96c52a3094f54ed36634a7cb944ee6f2311c46b1437563355565b603254610100900460ff1680612ff65750612ff6612d3b565b80613004575060325460ff16155b613059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806146e0602e913960400191505060405180910390fd5b603254610100900460ff161580156130bf57603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b6130c7613687565b6130cf613799565b6130d983836138a4565b80156110f157603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b805161223f90609f906020840190614513565b603254610100900460ff16806131385750613138612d3b565b80613146575060325460ff16155b61319b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806146e0602e913960400191505060405180910390fd5b603254610100900460ff1615801561320157603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b613209613687565b611cdf613a29565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526110f1908490613bb9565b6060816132df575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610e3a565b8160005b81156132f757600101600a820491506132e3565b60008167ffffffffffffffff8111801561331057600080fd5b506040519080825280601f01601f19166020018201604052801561333b576020820181803683370190505b5085935090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b83156133c257600a840660300160f81b8282806001900393508151811061338857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350613365565b50949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261224b908590613bb9565b60006116638383613c91565b61223f828260405180602001604052806000815250613ca9565b5490565b815460009082106134e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806145b56022913960400191505060405180910390fd5b8260000182815481106134f557fe5b9060005260206000200154905092915050565b815460009081908310613566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061470e6022913960400191505060405180910390fd5b600084600001848154811061357757fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008281526001840160205260408120548281613652576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156136175781810151838201526020016135ff565b50505050905090810190601f1680156136445780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061366557fe5b9060005260206000209060020201600101549150509392505050565b3b151590565b603254610100900460ff16806136a057506136a0612d3b565b806136ae575060325460ff16155b613703576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806146e0602e913960400191505060405180910390fd5b603254610100900460ff16158015611cdf57603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911661010017166001179055801561142557603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b603254610100900460ff16806137b257506137b2612d3b565b806137c0575060325460ff16155b613815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806146e0602e913960400191505060405180910390fd5b603254610100900460ff1615801561387b57603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b611cdf7f01ffc9a700000000000000000000000000000000000000000000000000000000613d15565b603254610100900460ff16806138bd57506138bd612d3b565b806138cb575060325460ff16155b613920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806146e0602e913960400191505060405180910390fd5b603254610100900460ff1615801561398657603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b825161399990609c906020860190614513565b5081516139ad90609d906020850190614513565b506139d77f80ac58cd00000000000000000000000000000000000000000000000000000000613d15565b613a007f5b5e139f00000000000000000000000000000000000000000000000000000000613d15565b6130d97f780e9d6300000000000000000000000000000000000000000000000000000000613d15565b603254610100900460ff1680613a425750613a42612d3b565b80613a50575060325460ff16155b613aa5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806146e0602e913960400191505060405180910390fd5b603254610100900460ff16158015613b0b57603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b6000613b15612a4a565b60c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801561142557603280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b6000613c1b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613e019092919063ffffffff16565b8051909150156110f157808060200190516020811015613c3a57600080fd5b50516110f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806147ac602a913960400191505060405180910390fd5b60009081526001919091016020526040902054151590565b613cb38383613e10565b613cc06000848484613f99565b6110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806145d76032913960400191505060405180910390fd5b7fffffffff000000000000000000000000000000000000000000000000000000008082161415613da657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff0000000000000000000000000000000000000000000000000000000016600090815260656020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6060612d3184846000856141aa565b73ffffffffffffffffffffffffffffffffffffffff8216613e9257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b613e9b816129a0565b15613f0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b613f13600083836110f1565b73ffffffffffffffffffffffffffffffffffffffff82166000908152609760205260409020613f429082614364565b50613f4f60988284614370565b50604051819073ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000613fba8473ffffffffffffffffffffffffffffffffffffffff16613681565b613fc6575060016141a2565b600061413e7f150b7a0200000000000000000000000000000000000000000000000000000000613ff4612a4a565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561407557818101518382015260200161405d565b50505050905090810190601f1680156140a25780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518060600160405280603281526020016145d76032913973ffffffffffffffffffffffffffffffffffffffff88169190613e01565b9050600081806020019051602081101561415757600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014925050505b949350505050565b606082471015614205576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061462f6026913960400191505060405180910390fd5b61420e85613681565b61427957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106142e257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016142a5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614344576040519150601f19603f3d011682016040523d82523d6000602084013e614349565b606091505b5091509150614359828286614393565b979650505050505050565b60006116638383614413565b6000612d31848473ffffffffffffffffffffffffffffffffffffffff851661445d565b606083156143a2575081612d34565b8251156143b25782518084602001fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528451602484015284518593919283926044019190850190808383600083156136175781810151838201526020016135ff565b600061441f8383613c91565b61445557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611666565b506000611666565b6000828152600184016020526040812054806144c2575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055612d34565b828560000160018303815481106144d557fe5b9060005260206000209060020201600101819055506000915050612d34565b604051806101c00160405280600e906020820280368337509192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282614549576000855561458f565b82601f1061456257805160ff191683800117855561458f565b8280016001018555821561458f579182015b8281111561458f578251825591602001919060010190614574565b5061459b92915061459f565b5090565b5b8082111561459b57600081556001016145a056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a164736f6c6343000706000a",
    "sourceMap": "143:2249:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1059:46:40;;;;;;;;;;;;;;;;-1:-1:-1;1059:46:40;;;;:::i;:::-;;;;;;;;;;;;;;;;7410:214;;;;;;;;;;;;;;;;-1:-1:-1;7410:214:40;;:::i;1176:148:8:-;;;;;;;;;;;;;;;;-1:-1:-1;1176:148:8;;;;:::i;:::-;;;;;;;;;;;;;;;;;;5113:98:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7840:217;;;;;;;;;;;;;;;;-1:-1:-1;7840:217:12;;:::i;:::-;;;;;;;;;;;;;;;;;;;7362:417;;;;;;;;;;;;;;;;-1:-1:-1;7362:417:12;;;;;;;;;:::i;:::-;;846:344:46;;;;;;;;;;;;;;;;-1:-1:-1;846:344:46;;:::i;4313:226:39:-;;;;;;;;;;;;;;;;-1:-1:-1;4313:226:39;;;;;;;;;;;;;;;;;;:::i;6856:208:12:-;;;:::i;317:256:46:-;;;;;;;;;;;;;;;;-1:-1:-1;317:256:46;;;;:::i;895:21:40:-;;;:::i;3197:162::-;;;;;;;;;;;;;;;;-1:-1:-1;3197:162:40;;;;;;;;;;;;;;;;;;:::i;201:41:46:-;;;;;;;;;;;;;;;;-1:-1:-1;201:41:46;;;;:::i;1692:698::-;;;;;;;;;;;;;;;;-1:-1:-1;1692:698:46;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6625:160:12;;;;;;;;;;;;;;;;-1:-1:-1;6625:160:12;;;;;;;;;:::i;965:41:40:-;;;;;;;;;;;;;;;;-1:-1:-1;965:41:40;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4275:39;;;:::i;466:37:39:-;;;:::i;7136:169:12:-;;;;;;;;;;;;;;;;-1:-1:-1;7136:169:12;;:::i;579:159:46:-;;;;;;;;;;;;;;;;-1:-1:-1;579:159:46;;;;;;;;;;;;;;;;;;:::i;4876:175:12:-;;;;;;;;;;;;;;;;-1:-1:-1;4876:175:12;;:::i;6451:95::-;;;:::i;2953:163:39:-;;;;;;;;;;;;;;;;-1:-1:-1;2953:163:39;;;;:::i;3187:938::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4601:218:12;;;;;;;;;;;;;;;;-1:-1:-1;4601:218:12;;;;:::i;1967:145:7:-;;;:::i;1939:200:40:-;;;:::i;5735:439::-;;;;;;;;;;;;;;;;-1:-1:-1;5735:439:40;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1335:85:7;;;:::i;5275:102:12:-;;;:::i;1362:157:46:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1362:157:46;;-1:-1:-1;1362:157:46;-1:-1:-1;1362:157:46;:::i;8124:290:12:-;;;;;;;;;;;;;;;;-1:-1:-1;8124:290:12;;;;;;;;;;;:::i;1277:79:46:-;;;;;;;;;;;;;;;;-1:-1:-1;1277:79:46;;;;:::i;6279:314:40:-;;;;;;;;;;;;;;;;-1:-1:-1;6279:314:40;;;;;;;;;:::i;3659:197::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3659:197:40;;-1:-1:-1;3659:197:40;;-1:-1:-1;;;;;3659:197:40:i;4497:49::-;;;;;;;;;;;;;;;;-1:-1:-1;4497:49:40;;;;:::i;5443:776:12:-;;;;;;;;;;;;;;;;-1:-1:-1;5443:776:12;;:::i;6955:334:40:-;;;;;;;;;;;;;;;;-1:-1:-1;6955:334:40;;;;;;;;;;;;;;;;;;:::i;1525:161:46:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1525:161:46;;-1:-1:-1;1525:161:46;-1:-1:-1;1525:161:46;:::i;569:48:39:-;;;;;;;;;;;;;;;;-1:-1:-1;569:48:39;;;;:::i;8480:162:12:-;;;;;;;;;;;;;;;;-1:-1:-1;8480:162:12;;;;;;;;;;;:::i;2261:240:7:-;;;;;;;;;;;;;;;;-1:-1:-1;2261:240:7;;;;:::i;4377:49:40:-;;;;;;;;;;;;;;;;-1:-1:-1;4377:49:40;;;;:::i;1196:75:46:-;;;;;;;;;;;;;;;;-1:-1:-1;1196:75:46;;;;:::i;1059:46:40:-;;;;;;;;;;;;;:::o;7410:214::-;7465:7;7492:12;7500:3;7492:7;:12::i;:::-;7484:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7549:18;7570:12;;;:7;:12;;;;;;;;;7549:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7599:18;7549:33;7599:12;:18::i;:::-;7592:25;;;7410:214;;;;:::o;1176:148:8:-;1284:33;;1261:4;1284:33;;;:20;:33;;;;;;;;;1176:148::o;5113:98:12:-;5199:5;5192:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5167:13;;5192:12;;5199:5;;5192:12;;5199:5;5192:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5113:98;:::o;7840:217::-;7916:7;7943:16;7951:7;7943;:16::i;:::-;7935:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8026:24:12;;;;:15;:24;;;;;;;;;7840:217::o;7362:417::-;7442:13;7458:34;7484:7;7458:25;:34::i;:::-;7442:50;;7516:5;7510:11;;:2;:11;;;;7502:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7594:5;7578:21;;:12;:10;:12::i;:::-;:21;;;:80;;;;7603:55;7638:5;7645:12;:10;:12::i;:::-;7603:34;:55::i;:::-;7570:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7751:21;7760:2;7764:7;7751:8;:21::i;:::-;7362:417;;;:::o;846:344:46:-;795:10;785:21;;;;:9;:21;;;;;;;;777:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;907:13:::1;923:12;931:3;923:7;:12::i;:::-;907:28:::0;-1:-1:-1;953:19:46::1;::::0;::::1;962:10;953:19;945:59;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;1014:18;1035:12:::0;;;:7:::1;:12;::::0;;;;;;;;1014:33;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;;1075:9:::1;1014:33:::0;;::::1;::::0;::::1;1094::::0;::::1;::::0;;::::1;1014::::0;;;1094;1142:41;;;;;;;1014:33;;1075:9;;1142:41;;::::1;::::0;1014:33;1043:3;;1142:41:::1;::::0;;;;;;;::::1;832:1;;;846:344:::0;:::o;4313:226:39:-;4443:10;:26;4457:12;4443:26;;4435:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4501:31;4509:6;4517:5;4524:7;4501;:31::i;6856:208:12:-;6917:7;7036:21;:12;:19;:21::i;:::-;7029:28;;6856:208;:::o;317:256:46:-;393:21;;;:13;:21;;;;;;;;;;;389:178;;435:21;;;:13;:21;;;;;;;;;;459:10;435:34;;389:178;;;524:21;;;:13;:21;;;;;;;;;;;;548:8;524:32;500:56;;389:178;317:256;:::o;895:21:40:-;;;;:::o;3197:162::-;3338:14;:12;:14::i;201:41:46:-;;;;;;;;;;;;;;;:::o;1692:698::-;1779:15;1808;1837:18;1869:14;1897:23;1934:21;1969:18;2001:20;2056:12;2064:3;2056:7;:12::i;:::-;2091:18;;;;;;;:9;:18;;;;;;2046:22;;-1:-1:-1;2091:18:46;;;-1:-1:-1;2126:13:46;2135:3;2126:8;:13::i;:::-;2119:20;;2149:18;2170:7;:12;2178:3;2170:12;;;;;;;;;;;2149:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2201:4;:10;;;2192:19;;2247:4;:11;;;2239:20;;2221:38;;2285:4;:17;;;2269:33;;2333:4;:14;;;2325:23;;2312:36;;2373:10;2358:25;;1692:698;;;;;;;;;;:::o;6625:160:12:-;6748:20;;;6722:7;6748:20;;;:13;:20;;;;;:30;;6772:5;6748:23;:30::i;:::-;6741:37;;6625:160;;;;;:::o;965:41:40:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4275:39::-;;;:::o;466:37:39:-;;;:::o;7136:169:12:-;7211:7;;7252:22;:12;7268:5;7252:15;:22::i;:::-;-1:-1:-1;7230:44:12;7136:169;-1:-1:-1;;;7136:169:12:o;4876:175::-;4948:7;4974:70;4991:7;4974:70;;;;;;;;;;;;;;;;;:12;;:70;:16;:70::i;6451:95::-;6531:8;6524:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6499:13;;6524:15;;6531:8;;6524:15;;6531:8;6524:15;;;;;;;;;;;;;;;;;;;;;;;;2953:163:39;3083:21;;3056:4;3083:21;;;;;;;;;;;:26;;;2953:163::o;3187:938::-;3275:26;;:::i;:::-;-1:-1:-1;3317:801:39;;;;;;;;3338:42;3317:801;;3394:42;3317:801;;;;3450:42;3317:801;;;;;;;3506:42;3317:801;;;;3562:42;3317:801;;;;3618:42;3317:801;;;;3674:42;3317:801;;;;3730:42;3317:801;;;;3786:42;3317:801;;;;3842:42;3317:801;;;;3898:42;3317:801;;;;3954:42;3317:801;;;;4010:42;3317:801;;;;4066:42;3317:801;;;;3187:938;:::o;4601:218:12:-;4673:7;4700:19;;;4692:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4783:20;;;;;;;:13;:20;;;;;:29;;:27;:29::i;1967:145:7:-;1558:12;:10;:12::i;:::-;1547:23;;:7;:5;:7::i;:::-;:23;;;1539:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2057:6:::1;::::0;2036:40:::1;::::0;2073:1:::1;::::0;2036:40:::1;2057:6;::::0;2036:40:::1;::::0;2073:1;;2036:40:::1;2086:6;:19:::0;;;::::1;::::0;;1967:145::o;1939:200:40:-;1512:13:11;;;;;;;;:33;;;1529:16;:14;:16::i;:::-;1512:50;;;-1:-1:-1;1550:12:11;;;;1549:13;1512:50;1504:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1647:13;;;;;;;1646:14;1670:98;;;;1704:13;:20;;1738:19;1704:20;;;;;;1738:19;1720:4;1738:19;;;1670:98;1990:24:40::1;:22;:24::i;:::-;2024:35;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;::::0;:13:::1;:35::i;:::-;2069:37;;;;;;;;;;;;;;;;;::::0;:11:::1;:37::i;:::-;2116:16;:14;:16::i;:::-;1794:14:11::0;1790:66;;;1824:13;:21;;;;;;1939:200:40;:::o;5735:439::-;6002:21;;5830:22;6002:21;;;;;;;;;;;;6048:11;:19;;;;;;6095:14;:22;;;;;;6145:14;:22;;;;;;;;6002:21;;6048:19;;6145:22;5735:439::o;1335:85:7:-;1407:6;;;;1335:85;:::o;5275:102:12:-;5363:7;5356:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5331:13;;5356:14;;5363:7;;5356:14;;5363:7;5356:14;;;;;;;;;;;;;;;;;;;;;;;;1362:157:46;1426:9;1421:92;1441:15;;;1421:92;;;1498:4;1477:9;:18;1487:4;;1492:1;1487:7;;;;;;;;;;;;;;;;;;1477:18;;-1:-1:-1;1477:18:46;;;;;;;;-1:-1:-1;1477:18:46;:25;;;;;;;;;;;;;-1:-1:-1;1458:3:46;1421:92;;8124:290:12;8238:12;:10;:12::i;:::-;8226:24;;:8;:24;;;;8218:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8336:8;8291:18;:32;8310:12;:10;:12::i;:::-;8291:32;;;;;;;;;;;;;;;;;;-1:-1:-1;8291:32:12;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;;8374:12;:10;:12::i;:::-;8359:48;;;8398:8;8359:48;;;;;;;;;;;;;;;;;;;;8124:290;;:::o;1277:79:46:-;1327:14;;1344:5;1327:14;;;:9;:14;;;;;:22;;;;;;1277:79::o;6279:314:40:-;1558:12:7;:10;:12::i;:::-;1547:23;;:7;:5;:7::i;:::-;:23;;;1539:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6357:52:40::1;:27;::::0;::::1;6385:14;6401:7:::0;6357:27:::1;:52::i;:::-;6524:22;::::0;::::1;;::::0;;;:14:::1;:22;::::0;;;;;;;;6499:14:::1;:22:::0;;;;;;;6440:39;;;;;6473:4:::1;6440:39;::::0;::::1;::::0;;;6499:47;;::::1;::::0;6524:22;6440:24:::1;::::0;:39;;;;;6524:22;;6440:39;;;;;;6524:22;6440:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6440:39:40;:106:::1;;6419:167;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;6279:314:::0;;:::o;3659:197::-;3835:14;:12;:14::i;:::-;3659:197;;;;:::o;4497:49::-;;;;;;;;;;;;;:::o;5443:776:12:-;5516:13;5549:16;5557:7;5549;:16::i;:::-;5541:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5628:23;5654:19;;;:10;:19;;;;;;;;5628:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5654:19;;5628:45;;;5654:19;5628:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5683:18;5704:9;:7;:9::i;:::-;5683:30;;5792:4;5786:18;5808:1;5786:23;5782:70;;;-1:-1:-1;5832:9:12;-1:-1:-1;5825:16:12;;5782:70;5954:23;;:27;5950:106;;6028:4;6034:9;6011:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6011:33:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5997:48;;;;;;5950:106;6186:4;6192:18;:7;:16;:18::i;:::-;6169:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6169:42:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6155:57;;;;5443:776;;;:::o;6955:334:40:-;1558:12:7;:10;:12::i;:::-;1547:23;;:7;:5;:7::i;:::-;:23;;;1539:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7138:65:40::1;:31;::::0;::::1;7170:8:::0;7188:4:::1;7195:7:::0;7138:31:::1;:65::i;:::-;7249:22;::::0;;::::1;;::::0;;;:14:::1;:22;::::0;;;;:33;;;;::::1;::::0;;-1:-1:-1;6955:334:40:o;1525:161:46:-;1592:9;1587:93;1607:15;;;1587:93;;;1664:5;1643:9;:18;1653:4;;1658:1;1653:7;;;;;;;;;;;;;;;;;;1643:18;;-1:-1:-1;1643:18:46;;;;;;;;-1:-1:-1;1643:18:46;:26;;;;;;;;;;;;;-1:-1:-1;1624:3:46;1587:93;;569:48:39;;;;;;;;;;;;;;:::o;8480:162:12:-;8600:25;;;;8577:4;8600:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;8480:162::o;2261:240:7:-;1558:12;:10;:12::i;:::-;1547:23;;:7;:5;:7::i;:::-;:23;;;1539:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2349:22:::1;::::0;::::1;2341:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2450:6;::::0;2429:38:::1;::::0;::::1;::::0;;::::1;::::0;2450:6:::1;::::0;2429:38:::1;::::0;2450:6:::1;::::0;2429:38:::1;2477:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2261:240::o;4377:49:40:-;;;;;;;;;;;;;:::o;1196:75:46:-;1243:14;;;;;;:9;:14;;;;;:21;;;;1260:4;1243:21;;;1196:75::o;11001:125:12:-;11066:4;11089:30;:12;11111:7;11089:21;:30::i;8511:460:40:-;8703:10;;8689:25;;;;8576:7;8689:25;;;;;;;;;;;;8673:11;;;;8639:10;;8624:26;;;;;:14;:26;;;;;;8576:7;;;;8665:20;;;;8624:61;8689:25;8623:91;;;;;8595:119;;8805:4;:14;;;8797:23;;8777:17;:43;8773:57;;;8829:1;8822:8;;;;;8773:57;8949:14;;;;8941:23;;8921:43;;;-1:-1:-1;8511:460:40;;;:::o;828:104:18:-;915:10;828:104;:::o;16898:200:12:-;16972:24;;;;:15;:24;;;;;:29;;;;;;;;;;;;;:24;;17025:34;16972:24;17025:25;:34::i;:::-;17016:57;;;;;;;;;;;;16898:200;;:::o;2338:792:40:-;2499:6;;;2530:1;2524:7;;2515:16;;;2541:21;2551:5;2499:6;2541:9;:21::i;:::-;2572:12;;;;:7;:12;;;;;;;;:27;;;;;;;;;;;;;2609:37;;;;;;;;;;-1:-1:-1;2656:25:40;;;:33;;;;;;;;;;;;;;2791:19;;:11;:19;;;;;;:30;;;;;;;;3009:21;;;;;;;;2986:19;;;;:44;;2978:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3108:5;3080:43;;3100:6;3080:43;;3095:3;3080:43;3115:7;3080:43;;;;;;;;;;;;;;;;;;2338:792;;;;:::o;7831:121:19:-;7900:7;7926:19;7934:3;7926:7;:19::i;3955:77:40:-;4003:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9261:135:20;9332:7;9366:22;9370:3;9382:5;9366:3;:22::i;8280:233:19:-;8360:7;;;;8419:22;8423:3;8435:5;8419:3;:22::i;:::-;8388:53;;;;-1:-1:-1;8280:233:19;-1:-1:-1;;;;;8280:233:19:o;9533:211::-;9640:7;9690:44;9695:3;9715;9721:12;9690:4;:44::i;:::-;9682:53;-1:-1:-1;9533:211:19;;;;;;:::o;1952:123:11:-;2000:4;2024:44;2062:4;2024:29;:44::i;:::-;2023:45;2016:52;;1952:123;:::o;944:1797:39:-;1046:13;:79;;;;1128:15;1046:79;:97;1235:30;1153:79;:112;1357:18;1275:79;:100;1467:33;1385:79;:115;1592:17;1510:79;:99;1701:33;1619:79;:115;1826:35;1744:79;:117;1953:31;1871:79;:113;2076:35;1994:79;:117;2203:33;2121:79;:115;2328:31;2246:79;:113;2451:34;2369:79;:116;2577:34;2495:79;:116;2648:42;2621:79;;2703:31;2621:79;:113;944:1797::o;3918:215:12:-;1512:13:11;;;;;;;;:33;;;1529:16;:14;:16::i;:::-;1512:50;;;-1:-1:-1;1550:12:11;;;;1549:13;1512:50;1504:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1647:13;;;;;;;1646:14;1670:98;;;;1704:13;:20;;1738:19;1704:20;;;;;;1738:19;1720:4;1738:19;;;1670:98;4016:26:12::1;:24;:26::i;:::-;4052:25;:23;:25::i;:::-;4087:39;4111:5;4118:7;4087:23;:39::i;:::-;1794:14:11::0;1790:66;;;1824:13;:21;;;;;;3918:215:12;;;:::o;15535:98::-;15607:19;;;;:8;;:19;;;;;:::i;935:126:7:-;1512:13:11;;;;;;;;:33;;;1529:16;:14;:16::i;:::-;1512:50;;;-1:-1:-1;1550:12:11;;;;1549:13;1512:50;1504:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1647:13;;;;;;;1646:14;1670:98;;;;1704:13;:20;;1738:19;1704:20;;;;;;1738:19;1720:4;1738:19;;;1670:98;992:26:7::1;:24;:26::i;:::-;1028;:24;:26::i;704:175:28:-:0;813:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;836:23;813:58;;;786:86;;806:5;;786:19;:86::i;221:725:21:-;277:13;494:10;490:51;;-1:-1:-1;520:10:21;;;;;;;;;;;;;;;;;;;490:51;565:5;550:12;604:75;611:9;;604:75;;636:8;;666:2;658:10;;;;604:75;;;688:19;720:6;710:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;710:17:21;-1:-1:-1;780:5:21;;-1:-1:-1;688:39:21;-1:-1:-1;753:10:21;;;795:114;802:9;;795:114;;870:2;863:4;:9;858:2;:14;845:29;;827:6;834:7;;;;;;;827:15;;;;;;;;;;;:47;;;;;;;;;;-1:-1:-1;896:2:21;888:10;;;;795:114;;;-1:-1:-1;932:6:21;221:725;-1:-1:-1;;;;221:725:21:o;885:203:28:-;1012:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1035:27;1012:68;;;985:96;;1005:5;;985:19;:96::i;7599:149:19:-;7683:4;7706:35;7716:3;7736;7706:9;:35::i;11988:108:12:-;12063:26;12073:2;12077:7;12063:26;;;;;;;;;;;;:9;:26::i;4502:108:19:-;4584:19;;4502:108::o;4463:201:20:-;4557:18;;4530:7;;4557:26;-1:-1:-1;4549:73:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4639:3;:11;;4651:5;4639:18;;;;;;;;;;;;;;;;4632:25;;4463:201;;;;:::o;4953:274:19:-;5056:19;;5020:7;;;;5056:27;-1:-1:-1;5048:74:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5133:22;5158:3;:12;;5171:5;5158:19;;;;;;;;;;;;;;;;;;5133:44;;5195:5;:10;;;5207:5;:12;;;5187:33;;;;;4953:274;;;;;:::o;6414:315::-;6508:7;6546:17;;;:12;;;:17;;;;;;6596:12;6581:13;6573:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6662:3;:12;;6686:1;6675:8;:12;6662:26;;;;;;;;;;;;;;;;;;:33;;;6655:40;;;6414:315;;;;;:::o;737:413:17:-;1097:20;1135:8;;;737:413::o;759:64:18:-;1512:13:11;;;;;;;;:33;;;1529:16;:14;:16::i;:::-;1512:50;;;-1:-1:-1;1550:12:11;;;;1549:13;1512:50;1504:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1647:13;;;;;;;1646:14;1670:98;;;;1704:13;:20;;1738:19;1704:20;;;;;;1738:19;1720:4;1738:19;;;1794:14;1790:66;;;1824:13;:21;;;;;;759:64:18;:::o;777:249:8:-;1512:13:11;;;;;;;;:33;;;1529:16;:14;:16::i;:::-;1512:50;;;-1:-1:-1;1550:12:11;;;;1549:13;1512:50;1504:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1647:13;;;;;;;1646:14;1670:98;;;;1704:13;:20;;1738:19;1704:20;;;;;;1738:19;1720:4;1738:19;;;1670:98;979:40:8::1;998:20:::0;979:18:::1;:40::i;4139:403:12:-:0;1512:13:11;;;;;;;;:33;;;1529:16;:14;:16::i;:::-;1512:50;;;-1:-1:-1;1550:12:11;;;;1549:13;1512:50;1504:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1647:13;;;;;;;1646:14;1670:98;;;;1704:13;:20;;1738:19;1704:20;;;;;;1738:19;1720:4;1738:19;;;1670:98;4247:13:12;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;4270:17:12;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;4375:40:12::1;4394:20:::0;4375:18:::1;:40::i;:::-;4425:49;4444:29:::0;4425:18:::1;:49::i;:::-;4484:51;4503:31:::0;4484:18:::1;:51::i;1067:192:7:-:0;1512:13:11;;;;;;;;:33;;;1529:16;:14;:16::i;:::-;1512:50;;;-1:-1:-1;1550:12:11;;;;1549:13;1512:50;1504:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1647:13;;;;;;;1646:14;1670:98;;;;1704:13;:20;;1738:19;1704:20;;;;;;1738:19;1720:4;1738:19;;;1670:98;1134:17:7::1;1154:12;:10;:12::i;:::-;1176:6;:18:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;1209:43:::1;::::0;1176:18;;-1:-1:-1;1176:18:7;-1:-1:-1;;1209:43:7::1;::::0;-1:-1:-1;;1209:43:7::1;1778:1:11;1794:14:::0;1790:66;;;1824:13;:21;;;;;;1067:192:7;:::o;2967:751:28:-;3386:23;3412:69;3440:4;3412:69;;;;;;;;;;;;;;;;;3420:5;3412:27;;;;:69;;;;;:::i;:::-;3495:17;;3386:95;;-1:-1:-1;3495:21:28;3491:221;;3635:10;3624:30;;;;;;;;;;;;;;;-1:-1:-1;3624:30:28;3616:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4289:123:19;4360:4;4383:17;;;:12;;;;;:17;;;;;;:22;;;4289:123::o;12317:247:12:-;12412:18;12418:2;12422:7;12412:5;:18::i;:::-;12448:54;12479:1;12483:2;12487:7;12496:5;12448:22;:54::i;:::-;12440:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1718:198:8;1801:25;;;;;;1793:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1869:33;;;;;;:20;:33;;;;;:40;;;;1905:4;1869:40;;;1718:198::o;3581:193:29:-;3684:12;3715:52;3737:6;3745:4;3751:1;3754:12;3715:21;:52::i;12886:393:12:-;12965:16;;;12957:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13037:16;13045:7;13037;:16::i;:::-;13036:17;13028:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13097:45;13126:1;13130:2;13134:7;13097:20;:45::i;:::-;13153:17;;;;;;;:13;:17;;;;;:30;;13175:7;13153:21;:30::i;:::-;-1:-1:-1;13194:29:12;:12;13211:7;13220:2;13194:16;:29::i;:::-;-1:-1:-1;13239:33:12;;13264:7;;13239:33;;;;13256:1;;13239:33;;13256:1;;13239:33;12886:393;;:::o;16186:600::-;16306:4;16331:15;:2;:13;;;:15::i;:::-;16326:58;;-1:-1:-1;16369:4:12;16362:11;;16326:58;16393:23;16419:257;16471:56;16541:12;:10;:12::i;:::-;16567:4;16585:7;16606:5;16435:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16419:257;;;;;;;;;;;;;;;;;:15;;;;:257;:15;:257::i;:::-;16393:283;;16686:13;16713:10;16702:32;;;;;;;;;;;;;;;-1:-1:-1;16702:32:12;16752:26;;16762:16;16752:26;;-1:-1:-1;;;16186:600:12;;;;;;;:::o;4608:523:29:-;4735:12;4792:5;4767:21;:30;;4759:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4858:18;4869:6;4858:10;:18::i;:::-;4850:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4981:12;4995:23;5022:6;:11;;5042:5;5050:4;5022:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:75;;;;5072:52;5090:7;5099:10;5111:12;5072:17;:52::i;:::-;5065:59;4608:523;-1:-1:-1;;;;;;;4608:523:29:o;8079:129:20:-;8146:4;8169:32;8174:3;8194:5;8169:4;:32::i;7038:183:19:-;7127:4;7150:64;7155:3;7175;7189:23;;;7150:4;:64::i;7091:725:29:-;7206:12;7234:7;7230:580;;;-1:-1:-1;7264:10:29;7257:17;;7230:580;7375:17;;:21;7371:429;;7633:10;7627:17;7693:15;7680:10;7676:2;7672:19;7665:44;7582:145;7765:20;;;;;;;;;;;;;;;;;;;;7772:12;;7765:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1651:404:20;1714:4;1735:21;1745:3;1750:5;1735:9;:21::i;:::-;1730:319;;-1:-1:-1;1772:23:20;;;;;;;;:11;:23;;;;;;;;;;;;;1952:18;;1930:19;;;:12;;;:19;;;;;;:40;;;;1984:11;;1730:319;-1:-1:-1;2033:5:20;2026:12;;1847:678:19;1923:4;2056:17;;;:12;;;:17;;;;;;2088:13;2084:435;;-1:-1:-1;;2172:38:19;;;;;;;;;;;;;;;;;;2154:57;;;;;;;;:12;:57;;;;;;;;;;;;;;;;;;;;;;;;2366:19;;2346:17;;;:12;;;:17;;;;;;;:39;2399:11;;2084:435;2477:5;2441:3;:12;;2465:1;2454:8;:12;2441:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2503:5;2496:12;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;",
    "linkReferences": {},
    "immutableReferences": {
      "32615": [
        {
          "start": 4840,
          "length": 32
        },
        {
          "start": 5879,
          "length": 32
        }
      ],
      "33030": [
        {
          "start": 5843,
          "length": 32
        },
        {
          "start": 8440,
          "length": 32
        }
      ]
    }
  },
  "methodIdentifiers": {
    "affectedAssets()": "7013ca26",
    "allow(address)": "ff9913e8",
    "allow(address[])": "987c5ced",
    "allowList(address)": "2848aeaf",
    "approve(address,uint256)": "095ea7b3",
    "assetInfo(address)": "8b0dcb4e",
    "balanceOf(address)": "70a08231",
    "baseURI()": "6c0360eb",
    "bridgeRouter()": "41af5b52",
    "collect(address,address,uint256)": "c8fea2fb",
    "disallow(address)": "a9ed9cb8",
    "disallow(address[])": "ca091ef3",
    "exposed_increaseTotalAffected(address)": "19cb0712",
    "exposed_record(address,address,uint256)": "5f470542",
    "fundsRecipient()": "3b6fd2cf",
    "getApproved(uint256)": "081812fc",
    "info(uint256)": "2e340599",
    "initialize()": "8129fc1c",
    "isAffectedAsset(address)": "6c267633",
    "isApprovedForAll(address,address)": "e985e9c5",
    "name()": "06fdde03",
    "nextID()": "1e96917d",
    "owner()": "8da5cb5b",
    "ownerOf(uint256)": "6352211e",
    "record(address,address,uint256)": "172a93fb",
    "records(uint256)": "34461067",
    "recover(uint256)": "0ca35682",
    "recoverable(uint256)": "00c12c31",
    "remove(address,uint256)": "abe7f1ab",
    "renounceOwnership()": "715018a6",
    "safeTransferFrom(address,address,uint256)": "42842e0e",
    "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
    "setApprovalForAll(address,bool)": "a22cb465",
    "supportsInterface(bytes4)": "01ffc9a7",
    "symbol()": "95d89b41",
    "tokenByIndex(uint256)": "4f6ccce7",
    "tokenOfOwnerByIndex(address,uint256)": "2f745c59",
    "tokenURI(uint256)": "c87b56dd",
    "totalAffected(address)": "e271f8e3",
    "totalCollected(address)": "f3f05313",
    "totalMinted(address)": "003d4790",
    "totalRecovered(address)": "bf799f2b",
    "totalSupply()": "18160ddd",
    "transferFrom(address,address,uint256)": "23b872dd",
    "transferOwnership(address)": "f2fde38b"
  },
  "ast": {
    "absolutePath": "packages/contracts-bridge/contracts/mocks/MockAccountant.sol",
    "id": 34005,
    "exportedSymbols": {
      "MockNftAccountant": [
        34004
      ],
      "NFTRecoveryAccountant": [
        33330
      ]
    },
    "nodeType": "SourceUnit",
    "src": "46:2347:46",
    "nodes": [
      {
        "id": 33718,
        "nodeType": "PragmaDirective",
        "src": "46:22:46",
        "literals": [
          "solidity",
          "0.7",
          ".6"
        ]
      },
      {
        "id": 33720,
        "nodeType": "ImportDirective",
        "src": "70:71:46",
        "absolutePath": "packages/contracts-bridge/contracts/accountants/NFTAccountant.sol",
        "file": "../accountants/NFTAccountant.sol",
        "scope": 34005,
        "sourceUnit": 33523,
        "symbolAliases": [
          {
            "foreign": {
              "id": 33719,
              "name": "NFTRecoveryAccountant",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "78:21:46",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 34004,
        "nodeType": "ContractDefinition",
        "src": "143:2249:46",
        "nodes": [
          {
            "id": 33726,
            "nodeType": "VariableDeclaration",
            "src": "201:41:46",
            "constant": false,
            "functionSelector": "2848aeaf",
            "mutability": "mutable",
            "name": "allowList",
            "scope": 34004,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 33725,
              "keyType": {
                "id": 33723,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "209:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "201:24:46",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 33724,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "220:4:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "visibility": "public"
          },
          {
            "id": 33740,
            "nodeType": "FunctionDefinition",
            "src": "249:62:46",
            "body": {
              "id": 33739,
              "nodeType": "Block",
              "src": "309:2:46",
              "statements": []
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "arguments": [
                      {
                        "hexValue": "30",
                        "id": 33731,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "293:1:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 33730,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "285:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 33729,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "285:7:46",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 33732,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "285:10:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 33735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "305:1:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 33734,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "297:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 33733,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "297:7:46",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 33736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "297:10:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  }
                ],
                "id": 33737,
                "modifierName": {
                  "id": 33728,
                  "name": "NFTRecoveryAccountant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 33330,
                  "src": "263:21:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_NFTRecoveryAccountant_$33330_$",
                    "typeString": "type(contract NFTRecoveryAccountant)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "263:45:46"
              }
            ],
            "name": "",
            "parameters": {
              "id": 33727,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "260:2:46"
            },
            "returnParameters": {
              "id": 33738,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "309:0:46"
            },
            "scope": 34004,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 33770,
            "nodeType": "FunctionDefinition",
            "src": "317:256:46",
            "body": {
              "id": 33769,
              "nodeType": "Block",
              "src": "379:194:46",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33749,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 33745,
                        "name": "totalAffected",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 32620,
                        "src": "393:13:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 33747,
                      "indexExpression": {
                        "id": 33746,
                        "name": "_asset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33742,
                        "src": "407:6:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "393:21:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 33748,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "418:1:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "393:26:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 33767,
                    "nodeType": "Block",
                    "src": "486:81:46",
                    "statements": [
                      {
                        "expression": {
                          "id": 33765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 33757,
                              "name": "totalAffected",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32620,
                              "src": "500:13:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 33759,
                            "indexExpression": {
                              "id": 33758,
                              "name": "_asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33742,
                              "src": "514:6:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "500:21:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 33764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "id": 33760,
                                "name": "totalAffected",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 32620,
                                "src": "524:13:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 33762,
                              "indexExpression": {
                                "id": 33761,
                                "name": "_asset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33742,
                                "src": "538:6:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "524:21:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "3130",
                              "id": 33763,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "548:8:46",
                              "subdenomination": "ether",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10000000000000000000_by_1",
                                "typeString": "int_const 10000000000000000000"
                              },
                              "value": "10"
                            },
                            "src": "524:32:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "500:56:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33766,
                        "nodeType": "ExpressionStatement",
                        "src": "500:56:46"
                      }
                    ]
                  },
                  "id": 33768,
                  "nodeType": "IfStatement",
                  "src": "389:178:46",
                  "trueBody": {
                    "id": 33756,
                    "nodeType": "Block",
                    "src": "421:59:46",
                    "statements": [
                      {
                        "expression": {
                          "id": 33754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 33750,
                              "name": "totalAffected",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 32620,
                              "src": "435:13:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 33752,
                            "indexExpression": {
                              "id": 33751,
                              "name": "_asset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33742,
                              "src": "449:6:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "435:21:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "35303030",
                            "id": 33753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "459:10:46",
                            "subdenomination": "ether",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_5000000000000000000000_by_1",
                              "typeString": "int_const 5000000000000000000000"
                            },
                            "value": "5000"
                          },
                          "src": "435:34:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 33755,
                        "nodeType": "ExpressionStatement",
                        "src": "435:34:46"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "19cb0712",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "exposed_increaseTotalAffected",
            "parameters": {
              "id": 33743,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33742,
                  "mutability": "mutable",
                  "name": "_asset",
                  "nodeType": "VariableDeclaration",
                  "scope": 33770,
                  "src": "356:14:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 33741,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "356:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "355:16:46"
            },
            "returnParameters": {
              "id": 33744,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "379:0:46"
            },
            "scope": 34004,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 33786,
            "nodeType": "FunctionDefinition",
            "src": "579:159:46",
            "body": {
              "id": 33785,
              "nodeType": "Block",
              "src": "690:48:46",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 33780,
                        "name": "_asset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33772,
                        "src": "708:6:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 33781,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33774,
                        "src": "716:5:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 33782,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33776,
                        "src": "723:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 33779,
                      "name": "_record",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        32964
                      ],
                      "referencedDeclaration": 32964,
                      "src": "700:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 33783,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "700:31:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 33784,
                  "nodeType": "ExpressionStatement",
                  "src": "700:31:46"
                }
              ]
            },
            "functionSelector": "5f470542",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "exposed_record",
            "parameters": {
              "id": 33777,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33772,
                  "mutability": "mutable",
                  "name": "_asset",
                  "nodeType": "VariableDeclaration",
                  "scope": 33786,
                  "src": "612:14:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 33771,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "612:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33774,
                  "mutability": "mutable",
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 33786,
                  "src": "636:13:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 33773,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "636:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33776,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 33786,
                  "src": "659:15:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33775,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "659:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "602:78:46"
            },
            "returnParameters": {
              "id": 33778,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "690:0:46"
            },
            "scope": 34004,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 33798,
            "nodeType": "ModifierDefinition",
            "src": "744:96:46",
            "body": {
              "id": 33797,
              "nodeType": "Block",
              "src": "767:73:46",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "baseExpression": {
                          "id": 33789,
                          "name": "allowList",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33726,
                          "src": "785:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                            "typeString": "mapping(address => bool)"
                          }
                        },
                        "id": 33792,
                        "indexExpression": {
                          "expression": {
                            "id": 33790,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "795:3:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 33791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "795:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "785:21:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "6e6f7420616c6c6f776564",
                        "id": 33793,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "808:13:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5c0608e7a428ea07a0c4c9bb0791749812cfeb8bc4b0e031d134a099a0e13dcb",
                          "typeString": "literal_string \"not allowed\""
                        },
                        "value": "not allowed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5c0608e7a428ea07a0c4c9bb0791749812cfeb8bc4b0e031d134a099a0e13dcb",
                          "typeString": "literal_string \"not allowed\""
                        }
                      ],
                      "id": 33788,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "777:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 33794,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "777:45:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 33795,
                  "nodeType": "ExpressionStatement",
                  "src": "777:45:46"
                },
                {
                  "id": 33796,
                  "nodeType": "PlaceholderStatement",
                  "src": "832:1:46"
                }
              ]
            },
            "name": "onlyAllowed",
            "parameters": {
              "id": 33787,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "764:2:46"
            },
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 33847,
            "nodeType": "FunctionDefinition",
            "src": "846:344:46",
            "body": {
              "id": 33846,
              "nodeType": "Block",
              "src": "897:293:46",
              "statements": [
                {
                  "assignments": [
                    33806
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33806,
                      "mutability": "mutable",
                      "name": "_user",
                      "nodeType": "VariableDeclaration",
                      "scope": 33846,
                      "src": "907:13:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 33805,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "907:7:46",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33810,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 33808,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33800,
                        "src": "931:3:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 33807,
                      "name": "ownerOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23850,
                      "src": "923:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 33809,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "923:12:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "907:28:46"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 33815,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 33812,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33806,
                          "src": "953:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 33813,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "962:3:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 33814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "962:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "953:19:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "6f6e6c79204e465420686f6c6465722063616e207265636f766572",
                        "id": 33816,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "974:29:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c27fed9b3e7ccd95fea5cbb11193a3c55d73886c9d1ae4eeb886a2bb349b4f01",
                          "typeString": "literal_string \"only NFT holder can recover\""
                        },
                        "value": "only NFT holder can recover"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c27fed9b3e7ccd95fea5cbb11193a3c55d73886c9d1ae4eeb886a2bb349b4f01",
                          "typeString": "literal_string \"only NFT holder can recover\""
                        }
                      ],
                      "id": 33811,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "945:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 33817,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "945:59:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 33818,
                  "nodeType": "ExpressionStatement",
                  "src": "945:59:46"
                },
                {
                  "assignments": [
                    33820
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33820,
                      "mutability": "mutable",
                      "name": "_rec",
                      "nodeType": "VariableDeclaration",
                      "scope": 33846,
                      "src": "1014:18:46",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$32830_memory_ptr",
                        "typeString": "struct NFTAccountant.Record"
                      },
                      "typeName": {
                        "id": 33819,
                        "name": "Record",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 32830,
                        "src": "1014:6:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$32830_storage_ptr",
                          "typeString": "struct NFTAccountant.Record"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33824,
                  "initialValue": {
                    "baseExpression": {
                      "id": 33821,
                      "name": "records",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32838,
                      "src": "1035:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Record_$32830_storage_$",
                        "typeString": "mapping(uint256 => struct NFTAccountant.Record storage ref)"
                      }
                    },
                    "id": 33823,
                    "indexExpression": {
                      "id": 33822,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33800,
                      "src": "1043:3:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1035:12:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Record_$32830_storage",
                      "typeString": "struct NFTAccountant.Record storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1014:33:46"
                },
                {
                  "assignments": [
                    33826
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33826,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 33846,
                      "src": "1057:15:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 33825,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1057:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33828,
                  "initialValue": {
                    "hexValue": "302e35",
                    "id": 33827,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1075:9:46",
                    "subdenomination": "ether",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_500000000000000000_by_1",
                      "typeString": "int_const 500000000000000000"
                    },
                    "value": "0.5"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1057:27:46"
                },
                {
                  "expression": {
                    "id": 33836,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 33829,
                        "name": "_rec",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33820,
                        "src": "1094:4:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$32830_memory_ptr",
                          "typeString": "struct NFTAccountant.Record memory"
                        }
                      },
                      "id": 33831,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "recovered",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32829,
                      "src": "1094:14:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 33834,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33826,
                          "src": "1119:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 33833,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1112:6:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint96_$",
                          "typeString": "type(uint96)"
                        },
                        "typeName": {
                          "id": 33832,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "1112:6:46",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 33835,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1112:15:46",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      }
                    },
                    "src": "1094:33:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "id": 33837,
                  "nodeType": "ExpressionStatement",
                  "src": "1094:33:46"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 33839,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33800,
                        "src": "1151:3:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 33840,
                          "name": "_rec",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33820,
                          "src": "1156:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$32830_memory_ptr",
                            "typeString": "struct NFTAccountant.Record memory"
                          }
                        },
                        "id": 33841,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "asset",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32823,
                        "src": "1156:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 33842,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33806,
                        "src": "1168:5:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 33843,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33826,
                        "src": "1175:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 33838,
                      "name": "Recovery",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33055,
                      "src": "1142:8:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,address,address,uint256)"
                      }
                    },
                    "id": 33844,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1142:41:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 33845,
                  "nodeType": "EmitStatement",
                  "src": "1137:46:46"
                }
              ]
            },
            "functionSelector": "0ca35682",
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 33803,
                "modifierName": {
                  "id": 33802,
                  "name": "onlyAllowed",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 33798,
                  "src": "885:11:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "885:11:46"
              }
            ],
            "name": "recover",
            "parameters": {
              "id": 33801,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33800,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 33847,
                  "src": "863:11:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33799,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "863:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "862:13:46"
            },
            "returnParameters": {
              "id": 33804,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "897:0:46"
            },
            "scope": 34004,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 33859,
            "nodeType": "FunctionDefinition",
            "src": "1196:75:46",
            "body": {
              "id": 33858,
              "nodeType": "Block",
              "src": "1233:38:46",
              "statements": [
                {
                  "expression": {
                    "id": 33856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 33852,
                        "name": "allowList",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33726,
                        "src": "1243:9:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 33854,
                      "indexExpression": {
                        "id": 33853,
                        "name": "who",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33849,
                        "src": "1253:3:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1243:14:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 33855,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1260:4:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1243:21:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33857,
                  "nodeType": "ExpressionStatement",
                  "src": "1243:21:46"
                }
              ]
            },
            "functionSelector": "ff9913e8",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "allow",
            "parameters": {
              "id": 33850,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33849,
                  "mutability": "mutable",
                  "name": "who",
                  "nodeType": "VariableDeclaration",
                  "scope": 33859,
                  "src": "1211:11:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 33848,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1211:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1210:13:46"
            },
            "returnParameters": {
              "id": 33851,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1233:0:46"
            },
            "scope": 34004,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 33871,
            "nodeType": "FunctionDefinition",
            "src": "1277:79:46",
            "body": {
              "id": 33870,
              "nodeType": "Block",
              "src": "1317:39:46",
              "statements": [
                {
                  "expression": {
                    "id": 33868,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 33864,
                        "name": "allowList",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33726,
                        "src": "1327:9:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 33866,
                      "indexExpression": {
                        "id": 33865,
                        "name": "who",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33861,
                        "src": "1337:3:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1327:14:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "66616c7365",
                      "id": 33867,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1344:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "1327:22:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33869,
                  "nodeType": "ExpressionStatement",
                  "src": "1327:22:46"
                }
              ]
            },
            "functionSelector": "a9ed9cb8",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "disallow",
            "parameters": {
              "id": 33862,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33861,
                  "mutability": "mutable",
                  "name": "who",
                  "nodeType": "VariableDeclaration",
                  "scope": 33871,
                  "src": "1295:11:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 33860,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1295:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1294:13:46"
            },
            "returnParameters": {
              "id": 33863,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1317:0:46"
            },
            "scope": 34004,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 33899,
            "nodeType": "FunctionDefinition",
            "src": "1362:157:46",
            "body": {
              "id": 33898,
              "nodeType": "Block",
              "src": "1411:108:46",
              "statements": [
                {
                  "body": {
                    "id": 33896,
                    "nodeType": "Block",
                    "src": "1463:50:46",
                    "statements": [
                      {
                        "expression": {
                          "id": 33894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 33888,
                              "name": "allowList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33726,
                              "src": "1477:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 33892,
                            "indexExpression": {
                              "baseExpression": {
                                "id": 33889,
                                "name": "_who",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33874,
                                "src": "1487:4:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 33891,
                              "indexExpression": {
                                "id": 33890,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33878,
                                "src": "1492:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1487:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1477:18:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 33893,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1498:4:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1477:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 33895,
                        "nodeType": "ExpressionStatement",
                        "src": "1477:25:46"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33884,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 33881,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33878,
                      "src": "1441:1:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 33882,
                        "name": "_who",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33874,
                        "src": "1445:4:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 33883,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "1445:11:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1441:15:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33897,
                  "initializationExpression": {
                    "assignments": [
                      33878
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 33878,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 33897,
                        "src": "1426:9:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33877,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1426:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 33880,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 33879,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1438:1:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1426:13:46"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 33886,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "1458:3:46",
                      "subExpression": {
                        "id": 33885,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33878,
                        "src": "1458:1:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 33887,
                    "nodeType": "ExpressionStatement",
                    "src": "1458:3:46"
                  },
                  "nodeType": "ForStatement",
                  "src": "1421:92:46"
                }
              ]
            },
            "functionSelector": "987c5ced",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "allow",
            "parameters": {
              "id": 33875,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33874,
                  "mutability": "mutable",
                  "name": "_who",
                  "nodeType": "VariableDeclaration",
                  "scope": 33899,
                  "src": "1377:23:46",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 33872,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1377:7:46",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 33873,
                    "nodeType": "ArrayTypeName",
                    "src": "1377:9:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1376:25:46"
            },
            "returnParameters": {
              "id": 33876,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1411:0:46"
            },
            "scope": 34004,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 33927,
            "nodeType": "FunctionDefinition",
            "src": "1525:161:46",
            "body": {
              "id": 33926,
              "nodeType": "Block",
              "src": "1577:109:46",
              "statements": [
                {
                  "body": {
                    "id": 33924,
                    "nodeType": "Block",
                    "src": "1629:51:46",
                    "statements": [
                      {
                        "expression": {
                          "id": 33922,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 33916,
                              "name": "allowList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33726,
                              "src": "1643:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 33920,
                            "indexExpression": {
                              "baseExpression": {
                                "id": 33917,
                                "name": "_who",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33902,
                                "src": "1653:4:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 33919,
                              "indexExpression": {
                                "id": 33918,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 33906,
                                "src": "1658:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1653:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1643:18:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 33921,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1664:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "1643:26:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 33923,
                        "nodeType": "ExpressionStatement",
                        "src": "1643:26:46"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 33912,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 33909,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33906,
                      "src": "1607:1:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 33910,
                        "name": "_who",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33902,
                        "src": "1611:4:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 33911,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "1611:11:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1607:15:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33925,
                  "initializationExpression": {
                    "assignments": [
                      33906
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 33906,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 33925,
                        "src": "1592:9:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 33905,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1592:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 33908,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 33907,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1604:1:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1592:13:46"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 33914,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "1624:3:46",
                      "subExpression": {
                        "id": 33913,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33906,
                        "src": "1624:1:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 33915,
                    "nodeType": "ExpressionStatement",
                    "src": "1624:3:46"
                  },
                  "nodeType": "ForStatement",
                  "src": "1587:93:46"
                }
              ]
            },
            "functionSelector": "ca091ef3",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "disallow",
            "parameters": {
              "id": 33903,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33902,
                  "mutability": "mutable",
                  "name": "_who",
                  "nodeType": "VariableDeclaration",
                  "scope": 33927,
                  "src": "1543:23:46",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 33900,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1543:7:46",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 33901,
                    "nodeType": "ArrayTypeName",
                    "src": "1543:9:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1542:25:46"
            },
            "returnParameters": {
              "id": 33904,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1577:0:46"
            },
            "scope": 34004,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 34003,
            "nodeType": "FunctionDefinition",
            "src": "1692:698:46",
            "body": {
              "id": 34002,
              "nodeType": "Block",
              "src": "2036:354:46",
              "statements": [
                {
                  "expression": {
                    "id": 33952,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 33948,
                      "name": "_holder",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33932,
                      "src": "2046:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 33950,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33929,
                          "src": "2064:3:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 33949,
                        "name": "ownerOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23850,
                        "src": "2056:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                          "typeString": "function (uint256) view returns (address)"
                        }
                      },
                      "id": 33951,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2056:12:46",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2046:22:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 33953,
                  "nodeType": "ExpressionStatement",
                  "src": "2046:22:46"
                },
                {
                  "expression": {
                    "id": 33958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 33954,
                      "name": "_isAllowed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33934,
                      "src": "2078:10:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "baseExpression": {
                        "id": 33955,
                        "name": "allowList",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33726,
                        "src": "2091:9:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 33957,
                      "indexExpression": {
                        "id": 33956,
                        "name": "_holder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33932,
                        "src": "2101:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2091:18:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2078:31:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 33959,
                  "nodeType": "ExpressionStatement",
                  "src": "2078:31:46"
                },
                {
                  "expression": {
                    "id": 33964,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 33960,
                      "name": "_uri",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33936,
                      "src": "2119:4:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 33962,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33929,
                          "src": "2135:3:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 33961,
                        "name": "tokenURI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23938,
                        "src": "2126:8:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$",
                          "typeString": "function (uint256) view returns (string memory)"
                        }
                      },
                      "id": 33963,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2126:13:46",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "2119:20:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "id": 33965,
                  "nodeType": "ExpressionStatement",
                  "src": "2119:20:46"
                },
                {
                  "assignments": [
                    33967
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33967,
                      "mutability": "mutable",
                      "name": "_rec",
                      "nodeType": "VariableDeclaration",
                      "scope": 34002,
                      "src": "2149:18:46",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$32830_memory_ptr",
                        "typeString": "struct NFTAccountant.Record"
                      },
                      "typeName": {
                        "id": 33966,
                        "name": "Record",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 32830,
                        "src": "2149:6:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$32830_storage_ptr",
                          "typeString": "struct NFTAccountant.Record"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 33971,
                  "initialValue": {
                    "baseExpression": {
                      "id": 33968,
                      "name": "records",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 32838,
                      "src": "2170:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Record_$32830_storage_$",
                        "typeString": "mapping(uint256 => struct NFTAccountant.Record storage ref)"
                      }
                    },
                    "id": 33970,
                    "indexExpression": {
                      "id": 33969,
                      "name": "_id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33929,
                      "src": "2178:3:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2170:12:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Record_$32830_storage",
                      "typeString": "struct NFTAccountant.Record storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2149:33:46"
                },
                {
                  "expression": {
                    "id": 33975,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 33972,
                      "name": "_asset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33938,
                      "src": "2192:6:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 33973,
                        "name": "_rec",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33967,
                        "src": "2201:4:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$32830_memory_ptr",
                          "typeString": "struct NFTAccountant.Record memory"
                        }
                      },
                      "id": 33974,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "asset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32823,
                      "src": "2201:10:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2192:19:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 33976,
                  "nodeType": "ExpressionStatement",
                  "src": "2192:19:46"
                },
                {
                  "expression": {
                    "id": 33983,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 33977,
                      "name": "_originalAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33940,
                      "src": "2221:15:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 33980,
                            "name": "_rec",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33967,
                            "src": "2247:4:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$32830_memory_ptr",
                              "typeString": "struct NFTAccountant.Record memory"
                            }
                          },
                          "id": 33981,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "amount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32825,
                          "src": "2247:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        ],
                        "id": 33979,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2239:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 33978,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2239:7:46",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 33982,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2239:20:46",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2221:38:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 33984,
                  "nodeType": "ExpressionStatement",
                  "src": "2221:38:46"
                },
                {
                  "expression": {
                    "id": 33988,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 33985,
                      "name": "_originalUser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33942,
                      "src": "2269:13:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 33986,
                        "name": "_rec",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33967,
                        "src": "2285:4:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$32830_memory_ptr",
                          "typeString": "struct NFTAccountant.Record memory"
                        }
                      },
                      "id": 33987,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "originalUser",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32827,
                      "src": "2285:17:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2269:33:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 33989,
                  "nodeType": "ExpressionStatement",
                  "src": "2269:33:46"
                },
                {
                  "expression": {
                    "id": 33996,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 33990,
                      "name": "_recovered",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33944,
                      "src": "2312:10:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "expression": {
                            "id": 33993,
                            "name": "_rec",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33967,
                            "src": "2333:4:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$32830_memory_ptr",
                              "typeString": "struct NFTAccountant.Record memory"
                            }
                          },
                          "id": 33994,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "recovered",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32829,
                          "src": "2333:14:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        ],
                        "id": 33992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2325:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 33991,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2325:7:46",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 33995,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2325:23:46",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2312:36:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 33997,
                  "nodeType": "ExpressionStatement",
                  "src": "2312:36:46"
                },
                {
                  "expression": {
                    "id": 34000,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 33998,
                      "name": "_recoverable",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33946,
                      "src": "2358:12:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "302e3035",
                      "id": 33999,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2373:10:46",
                      "subdenomination": "ether",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_50000000000000000_by_1",
                        "typeString": "int_const 50000000000000000"
                      },
                      "value": "0.05"
                    },
                    "src": "2358:25:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 34001,
                  "nodeType": "ExpressionStatement",
                  "src": "2358:25:46"
                }
              ]
            },
            "functionSelector": "2e340599",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "info",
            "parameters": {
              "id": 33930,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33929,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 34003,
                  "src": "1706:11:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33928,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1706:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1705:13:46"
            },
            "returnParameters": {
              "id": 33947,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33932,
                  "mutability": "mutable",
                  "name": "_holder",
                  "nodeType": "VariableDeclaration",
                  "scope": 34003,
                  "src": "1779:15:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 33931,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1779:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33934,
                  "mutability": "mutable",
                  "name": "_isAllowed",
                  "nodeType": "VariableDeclaration",
                  "scope": 34003,
                  "src": "1808:15:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 33933,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1808:4:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33936,
                  "mutability": "mutable",
                  "name": "_uri",
                  "nodeType": "VariableDeclaration",
                  "scope": 34003,
                  "src": "1837:18:46",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 33935,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1837:6:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33938,
                  "mutability": "mutable",
                  "name": "_asset",
                  "nodeType": "VariableDeclaration",
                  "scope": 34003,
                  "src": "1869:14:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 33937,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1869:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33940,
                  "mutability": "mutable",
                  "name": "_originalAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 34003,
                  "src": "1897:23:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33939,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1897:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33942,
                  "mutability": "mutable",
                  "name": "_originalUser",
                  "nodeType": "VariableDeclaration",
                  "scope": 34003,
                  "src": "1934:21:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 33941,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1934:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33944,
                  "mutability": "mutable",
                  "name": "_recovered",
                  "nodeType": "VariableDeclaration",
                  "scope": 34003,
                  "src": "1969:18:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33943,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1969:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33946,
                  "mutability": "mutable",
                  "name": "_recoverable",
                  "nodeType": "VariableDeclaration",
                  "scope": 34003,
                  "src": "2001:20:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33945,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2001:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1765:266:46"
            },
            "scope": 34004,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 33721,
              "name": "NFTRecoveryAccountant",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 33330,
              "src": "173:21:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_NFTRecoveryAccountant_$33330",
                "typeString": "contract NFTRecoveryAccountant"
              }
            },
            "id": 33722,
            "nodeType": "InheritanceSpecifier",
            "src": "173:21:46"
          }
        ],
        "contractDependencies": [
          23168,
          23243,
          23255,
          23676,
          24650,
          24681,
          24708,
          24842,
          25131,
          32803,
          33021,
          33330,
          33635
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          34004,
          33330,
          33021,
          23168,
          24650,
          24681,
          24708,
          24842,
          23243,
          23255,
          25131,
          23676,
          32803,
          33635
        ],
        "name": "MockNftAccountant",
        "scope": 34005
      }
    ],
    "license": "MIT OR Apache-2.0"
  },
  "id": 46
}