{
  "contractName": "Raiser",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MAX_HALVING_ERA",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "HALVING_WEI",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "InterfaceId_ERC165",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "rewardEra",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "tokenOfOwnerByIndex",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "exists",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "boost",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_from",
          "type": "address"
        },
        {
          "name": "_to",
          "type": "address"
        },
        {
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_owner",
          "type": "address"
        },
        {
          "name": "_operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_boost",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipRenounced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_approved",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_slug",
          "type": "string"
        },
        {
          "name": "_template",
          "type": "address"
        },
        {
          "name": "_bytecode",
          "type": "bytes"
        },
        {
          "name": "_args",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_slug",
          "type": "string"
        }
      ],
      "name": "toTokenId",
      "outputs": [
        {
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "slugOf",
      "outputs": [
        {
          "name": "slug",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "saleOf",
      "outputs": [
        {
          "name": "sale",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "claimableBoostsOf",
      "outputs": [
        {
          "name": "boosts",
          "type": "uint256"
        },
        {
          "name": "newRewardEra",
          "type": "uint256"
        },
        {
          "name": "newWeiUntilNextHalving",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "claimBoostsOf",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "rewardedBoostsOf",
      "outputs": [
        {
          "name": "boosts",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "claimableBoosts",
      "outputs": [
        {
          "name": "boosts",
          "type": "uint256"
        },
        {
          "name": "newRewardEra",
          "type": "uint256"
        },
        {
          "name": "newWeiUntilNextHalving",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "claimBoosts",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "rewardedBoosts",
      "outputs": [
        {
          "name": "boosts",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "boostsUntilNextHalving",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526000600e556a115eec47f6cf7e35000000600f553480156200002557600080fd5b50604051602080620022ae83398101604081815291518282018352600682527f52616973657200000000000000000000000000000000000000000000000000006020808401919091528351808501909452600384527f52414900000000000000000000000000000000000000000000000000000000009084015291620000d47f01ffc9a70000000000000000000000000000000000000000000000000000000064010000000062000206810204565b620001087f80ac58cd0000000000000000000000000000000000000000000000000000000064010000000062000206810204565b6200013c7f4f558e790000000000000000000000000000000000000000000000000000000064010000000062000206810204565b81516200015190600590602085019062000273565b5080516200016790600690602084019062000273565b506200019c7f780e9d630000000000000000000000000000000000000000000000000000000064010000000062000206810204565b620001d07f5b5e139f0000000000000000000000000000000000000000000000000000000064010000000062000206810204565b5050600c805433600160a060020a031991821617909155600d8054909116600160a060020a039290921691909117905562000318565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200023657600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002b657805160ff1916838001178555620002e6565b82800160010185558215620002e6579182015b82811115620002e6578251825591602001919060010190620002c9565b50620002f4929150620002f8565b5090565b6200031591905b80821115620002f45760008155600101620002ff565b90565b611f8680620003286000396000f3006080604052600436106101a85763ffffffff60e060020a60003504166301ffc9a781146101ad57806303948e47146101e357806306fdde031461020a578063081812fc14610294578063095ea7b3146102c85780630c972b09146102ee57806311bae04f1461030657806318076e4f1461031b57806318160ddd1461033057806319fa8f50146103455780632213719b1461037757806323b872dd146103ad57806326eed3b5146103d75780632d38bf7a146104305780632f745c591461044557806342842e0e146104695780634f558e79146104935780634f6ccce7146104ab578063550a778b146104c357806356935e8e146104db57806361db2445146104f05780636352211e1461050857806370a0823114610520578063715018a61461054157806373edf1891461055657806385449c091461056b5780638da5cb5b1461058057806395d89b4114610595578063a22cb465146105aa578063a66f42c0146105d0578063aeef6719146105e5578063b88d4fde146106bc578063c87b56dd1461072b578063dfdab20d14610743578063e985e9c51461075b578063f2fde38b14610782575b600080fd5b3480156101b957600080fd5b506101cf600160e060020a0319600435166107a3565b604080519115158252519081900360200190f35b3480156101ef57600080fd5b506101f86107c2565b60408051918252519081900360200190f35b34801561021657600080fd5b5061021f6107c7565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610259578181015183820152602001610241565b50505050905090810190601f1680156102865780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a057600080fd5b506102ac60043561085e565b60408051600160a060020a039092168252519081900360200190f35b3480156102d457600080fd5b506102ec600160a060020a0360043516602435610879565b005b3480156102fa57600080fd5b506101f8600435610922565b34801561031257600080fd5b506101f861093f565b34801561032757600080fd5b506101f8610959565b34801561033c57600080fd5b506101f8610968565b34801561035157600080fd5b5061035a61096e565b60408051600160e060020a03199092168252519081900360200190f35b34801561038357600080fd5b5061038f600435610992565b60408051938452602084019290925282820152519081900360600190f35b3480156103b957600080fd5b506102ec600160a060020a0360043581169060243516604435610c28565b3480156103e357600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101f8943694929360249392840191908190840183828082843750949750610ccb9650505050505050565b34801561043c57600080fd5b506101f8610e50565b34801561045157600080fd5b506101f8600160a060020a0360043516602435610e56565b34801561047557600080fd5b506102ec600160a060020a0360043581169060243516604435610ea4565b34801561049f57600080fd5b506101cf600435610ec5565b3480156104b757600080fd5b506101f8600435610ee2565b3480156104cf57600080fd5b506102ac600435610f17565b3480156104e757600080fd5b506101f8610f32565b3480156104fc57600080fd5b506101cf600435610f7c565b34801561051457600080fd5b506102ac600435611065565b34801561052c57600080fd5b506101f8600160a060020a0360043516611089565b34801561054d57600080fd5b506102ec6110bc565b34801561056257600080fd5b5061038f61111d565b34801561057757600080fd5b506101cf61117f565b34801561058c57600080fd5b506102ac6111bc565b3480156105a157600080fd5b5061021f6111cb565b3480156105b657600080fd5b506102ec600160a060020a0360043516602435151561122c565b3480156105dc57600080fd5b506102ac6112b0565b6040805160206004803580820135601f81018490048402850184019095528484526102ec94369492936024939284019190819084018382808284375050604080516020601f818a01358b0180359182018390048302840183018552818452989b600160a060020a038b35169b909a90999401975091955091820193509150819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506112bf9650505050505050565b3480156106c857600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526102ec94600160a060020a03813581169560248035909216956044359536956084940191819084018382808284375094975061160d9650505050505050565b34801561073757600080fd5b5061021f600435611635565b34801561074f57600080fd5b5061021f6004356116ea565b34801561076757600080fd5b506101cf600160a060020a0360043581169060243516611754565b34801561078e57600080fd5b506102ec600160a060020a0360043516611782565b600160e060020a03191660009081526020819052604090205460ff1690565b601481565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108535780601f1061082857610100808354040283529160200191610853565b820191906000526020600020905b81548152906001019060200180831161083657829003601f168201915b505050505090505b90565b600090815260026020526040902054600160a060020a031690565b600061088482611065565b9050600160a060020a03838116908216141561089f57600080fd5b33600160a060020a03821614806108bb57506108bb8133611754565b15156108c657600080fd5b6000828152600260205260408082208054600160a060020a031916600160a060020a0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600090815260126020908152604080832033845290915290205490565b60008061094d600f546117a5565b505090508091505b5090565b6a115eec47f6cf7e3500000081565b60095490565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600081815260126020908152604080832033845290915281205481908190819081908110156109cf57600e54600f54600096509094509250610c1f565b600086815260106020526040902054600160a060020a031691508115156109f557600080fd5b81600160a060020a031663bef4876b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a3357600080fd5b505af1158015610a47573d6000803e3d6000fd5b505050506040513d6020811015610a5d57600080fd5b50511515610a6a57600080fd5b604080517fcf7c2b310000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a0384169163cf7c2b319160248083019260209291908290030181600087803b158015610acb57600080fd5b505af1158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5051604080517f8da5cb5b00000000000000000000000000000000000000000000000000000000815290519192503391600160a060020a03851691638da5cb5b9160048083019260209291908290030181600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050506040513d6020811015610b8157600080fd5b5051600160a060020a03161415610c0f57610c0c82600160a060020a0316634042b66f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610bd357600080fd5b505af1158015610be7573d6000803e3d6000fd5b505050506040513d6020811015610bfd57600080fd5b5051829063ffffffff61188216565b90505b610c18816117a5565b9450945094505b50509193909250565b610c32338261188f565b1515610c3d57600080fd5b600160a060020a0383161515610c5257600080fd5b600160a060020a0382161515610c6757600080fd5b610c7183826118ee565b610c7b8382611952565b610c858282611a59565b8082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000606060008084925060008351111515610d4757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f537472696e6720697320656d7074792e00000000000000000000000000000000604482015290519081900360640190fd5b600091505b610d5883516020611aa2565b821015610e44578282815181101515610d6d57fe5b90602001015160f860020a900460f860020a0260f860020a9004905080606111158015610d9b5750607a8111155b80610da6575080602d145b1515610e3957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f537472696e67206d75737420636f6e7461696e206f6e6c79206c6f776572636160448201527f736520616c70686162657473206f722068797068656e732e0000000000000000606482015290519081900360840190fd5b600190910190610d4c565b50506020015192915050565b600e5481565b6000610e6183611089565b8210610e6c57600080fd5b600160a060020a0383166000908152600760205260409020805483908110610e9057fe5b906000526020600020015490505b92915050565b610ec0838383602060405190810160405280600081525061160d565b505050565b600090815260016020526040902054600160a060020a0316151590565b6000610eec610968565b8210610ef757600080fd5b6009805483908110610f0557fe5b90600052602060002001549050919050565b600090815260106020526040902054600160a060020a031690565b600080805b610f3f610968565b821015610f7757610f4f82610ee2565b9050610f6a610f5d82610922565b849063ffffffff61188216565b9250600190910190610f37565b505090565b600080600080610f8b85610992565b600e829055600f81905591945092509050600083111561103f57600d54604080517f40c10f19000000000000000000000000000000000000000000000000000000008152336004820152602481018690529051600160a060020a03909216916340c10f19916044808201926020929091908290030181600087803b15801561101257600080fd5b505af1158015611026573d6000803e3d6000fd5b505050506040513d602081101561103c57600080fd5b50505b505060009283526012602090815260408085203386529091529092209190915550600190565b600081815260016020526040812054600160a060020a0316801515610e9e57600080fd5b6000600160a060020a03821615156110a057600080fd5b50600160a060020a031660009081526003602052604090205490565b600c54600160a060020a031633146110d357600080fd5b600c54604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a2600c8054600160a060020a0319169055565b6000808080808080805b61112f610968565b8510156111755761113f85610ee2565b935061114a84610992565b91945092509050611161888463ffffffff61188216565b975090955093506001909201918484611127565b5050505050909192565b600080805b61118c610968565b8210156111b35761119c82610ee2565b90506111a781610f7c565b50600190910190611184565b60019250505090565b600c54600160a060020a031681565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108535780601f1061082857610100808354040283529160200191610853565b600160a060020a03821633141561124257600080fd5b336000818152600460209081526040808320600160a060020a03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b600d54600160a060020a031681565b604080517f01ffc9a700000000000000000000000000000000000000000000000000000000808252600482015290516000918291600160a060020a038716916301ffc9a791602480830192602092919082900301818787803b15801561132457600080fd5b505af1158015611338573d6000803e3d6000fd5b505050506040513d602081101561134e57600080fd5b5051151561135b57600080fd5b604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fd48445ff0000000000000000000000000000000000000000000000000000000060048201529051600160a060020a038716916301ffc9a79160248083019260209291908290030181600087803b1580156113dc57600080fd5b505af11580156113f0573d6000803e3d6000fd5b505050506040513d602081101561140657600080fd5b5051151561141357600080fd5b61141c86610ccb565b600081815260106020526040902054909250600160a060020a03161561144157600080fd5b84600160a060020a0316636535b4a53486866040518463ffffffff1660e060020a028152600401808060200180602001838103835285818151815260200191508051906020019080838360005b838110156114a657818101518382015260200161148e565b50505050905090810190601f1680156114d35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156115065781810151838201526020016114ee565b50505050905090810190601f1680156115335780820380516001836020036101000a031916815260200191505b509450505050506020604051808303818588803b15801561155357600080fd5b505af1158015611567573d6000803e3d6000fd5b50505050506040513d602081101561157e57600080fd5b505160008381526010602090815260408083208054600160a060020a031916600160a060020a0386161790556011825290912088519293506115c4929091890190611ea6565b506115cf3383611aba565b60408051838152905133917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a2505050505050565b611618848484610c28565b61162484848484611b09565b151561162f57600080fd5b50505050565b606061164082610ec5565b151561164b57600080fd5b6000828152600b602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156116de5780601f106116b3576101008083540402835291602001916116de565b820191906000526020600020905b8154815290600101906020018083116116c157829003601f168201915b50505050509050919050565b60008181526011602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156116de5780601f106116b3576101008083540402835291602001916116de565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205460ff1690565b600c54600160a060020a0316331461179957600080fd5b6117a281611c76565b50565b60008060008060006014600e5411156117cc57600e54600f54600096509094509250610c1f565b85915060009450600e549350600f5492505b6000821115610c1f576117f382600f54611aa2565b905061183b61182e61181e6103e861181260148963ffffffff611ce716565b9063ffffffff611cf916565b839060020a63ffffffff611d0e16565b869063ffffffff61188216565b945061184d828263ffffffff611ce716565b915061185f838263ffffffff611ce716565b925082151561187d576a115eec47f6cf7e3500000092506001840193505b6117de565b81810182811015610e9e57fe5b60008061189b83611065565b905080600160a060020a031684600160a060020a031614806118d6575083600160a060020a03166118cb8461085e565b600160a060020a0316145b806118e657506118e68185611754565b949350505050565b81600160a060020a031661190182611065565b600160a060020a03161461191457600080fd5b600081815260026020526040902054600160a060020a03161561194e5760008181526002602052604090208054600160a060020a03191690555b5050565b60008060006119618585611d37565b600084815260086020908152604080832054600160a060020a038916845260079092529091205490935061199c90600163ffffffff611ce716565b600160a060020a0386166000908152600760205260409020805491935090839081106119c457fe5b90600052602060002001549050806007600087600160a060020a0316600160a060020a0316815260200190815260200160002084815481101515611a0457fe5b6000918252602080832090910192909255600160a060020a0387168152600790915260409020805490611a3b906000198301611f20565b50600093845260086020526040808520859055908452909220555050565b6000611a658383611dc0565b50600160a060020a039091166000908152600760209081526040808320805460018101825590845282842081018590559383526008909152902055565b6000818310611ab15781611ab3565b825b9392505050565b611ac48282611e43565b600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af015550565b600080611b1e85600160a060020a0316611e9e565b1515611b2d5760019150611c6d565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201818152600160a060020a03898116602485015260448401889052608060648501908152875160848601528751918a169463150b7a0294938c938b938b93909160a490910190602085019080838360005b83811015611bc0578181015183820152602001611ba8565b50505050905090810190601f168015611bed5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611c0f57600080fd5b505af1158015611c23573d6000803e3d6000fd5b505050506040513d6020811015611c3957600080fd5b5051600160e060020a031981167f150b7a020000000000000000000000000000000000000000000000000000000014925090505b50949350505050565b600160a060020a0381161515611c8b57600080fd5b600c54604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600c8054600160a060020a031916600160a060020a0392909216919091179055565b600082821115611cf357fe5b50900390565b60008183811515611d0657fe5b049392505050565b6000821515611d1f57506000610e9e565b50818102818382811515611d2f57fe5b0414610e9e57fe5b81600160a060020a0316611d4a82611065565b600160a060020a031614611d5d57600080fd5b600160a060020a038216600090815260036020526040902054611d8790600163ffffffff611ce716565b600160a060020a039092166000908152600360209081526040808320949094559181526001909152208054600160a060020a0319169055565b600081815260016020526040902054600160a060020a031615611de257600080fd5b60008181526001602081815260408084208054600160a060020a031916600160a060020a0388169081179091558452600390915290912054611e2391611882565b600160a060020a0390921660009081526003602052604090209190915550565b600160a060020a0382161515611e5857600080fd5b611e628282611a59565b6040518190600160a060020a038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000903b1190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611ee757805160ff1916838001178555611f14565b82800160010185558215611f14579182015b82811115611f14578251825591602001919060010190611ef9565b50610955929150611f40565b815481835581811115610ec057600083815260209020610ec09181019083015b61085b91905b808211156109555760008155600101611f465600a165627a7a723058200aafb32ba569e0b59ed229e5265b5e3bbb869f17b8fc2e2a260eda3bc5e6a2350029",
  "deployedBytecode": "0x6080604052600436106101a85763ffffffff60e060020a60003504166301ffc9a781146101ad57806303948e47146101e357806306fdde031461020a578063081812fc14610294578063095ea7b3146102c85780630c972b09146102ee57806311bae04f1461030657806318076e4f1461031b57806318160ddd1461033057806319fa8f50146103455780632213719b1461037757806323b872dd146103ad57806326eed3b5146103d75780632d38bf7a146104305780632f745c591461044557806342842e0e146104695780634f558e79146104935780634f6ccce7146104ab578063550a778b146104c357806356935e8e146104db57806361db2445146104f05780636352211e1461050857806370a0823114610520578063715018a61461054157806373edf1891461055657806385449c091461056b5780638da5cb5b1461058057806395d89b4114610595578063a22cb465146105aa578063a66f42c0146105d0578063aeef6719146105e5578063b88d4fde146106bc578063c87b56dd1461072b578063dfdab20d14610743578063e985e9c51461075b578063f2fde38b14610782575b600080fd5b3480156101b957600080fd5b506101cf600160e060020a0319600435166107a3565b604080519115158252519081900360200190f35b3480156101ef57600080fd5b506101f86107c2565b60408051918252519081900360200190f35b34801561021657600080fd5b5061021f6107c7565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610259578181015183820152602001610241565b50505050905090810190601f1680156102865780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a057600080fd5b506102ac60043561085e565b60408051600160a060020a039092168252519081900360200190f35b3480156102d457600080fd5b506102ec600160a060020a0360043516602435610879565b005b3480156102fa57600080fd5b506101f8600435610922565b34801561031257600080fd5b506101f861093f565b34801561032757600080fd5b506101f8610959565b34801561033c57600080fd5b506101f8610968565b34801561035157600080fd5b5061035a61096e565b60408051600160e060020a03199092168252519081900360200190f35b34801561038357600080fd5b5061038f600435610992565b60408051938452602084019290925282820152519081900360600190f35b3480156103b957600080fd5b506102ec600160a060020a0360043581169060243516604435610c28565b3480156103e357600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526101f8943694929360249392840191908190840183828082843750949750610ccb9650505050505050565b34801561043c57600080fd5b506101f8610e50565b34801561045157600080fd5b506101f8600160a060020a0360043516602435610e56565b34801561047557600080fd5b506102ec600160a060020a0360043581169060243516604435610ea4565b34801561049f57600080fd5b506101cf600435610ec5565b3480156104b757600080fd5b506101f8600435610ee2565b3480156104cf57600080fd5b506102ac600435610f17565b3480156104e757600080fd5b506101f8610f32565b3480156104fc57600080fd5b506101cf600435610f7c565b34801561051457600080fd5b506102ac600435611065565b34801561052c57600080fd5b506101f8600160a060020a0360043516611089565b34801561054d57600080fd5b506102ec6110bc565b34801561056257600080fd5b5061038f61111d565b34801561057757600080fd5b506101cf61117f565b34801561058c57600080fd5b506102ac6111bc565b3480156105a157600080fd5b5061021f6111cb565b3480156105b657600080fd5b506102ec600160a060020a0360043516602435151561122c565b3480156105dc57600080fd5b506102ac6112b0565b6040805160206004803580820135601f81018490048402850184019095528484526102ec94369492936024939284019190819084018382808284375050604080516020601f818a01358b0180359182018390048302840183018552818452989b600160a060020a038b35169b909a90999401975091955091820193509150819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506112bf9650505050505050565b3480156106c857600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526102ec94600160a060020a03813581169560248035909216956044359536956084940191819084018382808284375094975061160d9650505050505050565b34801561073757600080fd5b5061021f600435611635565b34801561074f57600080fd5b5061021f6004356116ea565b34801561076757600080fd5b506101cf600160a060020a0360043581169060243516611754565b34801561078e57600080fd5b506102ec600160a060020a0360043516611782565b600160e060020a03191660009081526020819052604090205460ff1690565b601481565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108535780601f1061082857610100808354040283529160200191610853565b820191906000526020600020905b81548152906001019060200180831161083657829003601f168201915b505050505090505b90565b600090815260026020526040902054600160a060020a031690565b600061088482611065565b9050600160a060020a03838116908216141561089f57600080fd5b33600160a060020a03821614806108bb57506108bb8133611754565b15156108c657600080fd5b6000828152600260205260408082208054600160a060020a031916600160a060020a0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600090815260126020908152604080832033845290915290205490565b60008061094d600f546117a5565b505090508091505b5090565b6a115eec47f6cf7e3500000081565b60095490565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b600081815260126020908152604080832033845290915281205481908190819081908110156109cf57600e54600f54600096509094509250610c1f565b600086815260106020526040902054600160a060020a031691508115156109f557600080fd5b81600160a060020a031663bef4876b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610a3357600080fd5b505af1158015610a47573d6000803e3d6000fd5b505050506040513d6020811015610a5d57600080fd5b50511515610a6a57600080fd5b604080517fcf7c2b310000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a0384169163cf7c2b319160248083019260209291908290030181600087803b158015610acb57600080fd5b505af1158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5051604080517f8da5cb5b00000000000000000000000000000000000000000000000000000000815290519192503391600160a060020a03851691638da5cb5b9160048083019260209291908290030181600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050506040513d6020811015610b8157600080fd5b5051600160a060020a03161415610c0f57610c0c82600160a060020a0316634042b66f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610bd357600080fd5b505af1158015610be7573d6000803e3d6000fd5b505050506040513d6020811015610bfd57600080fd5b5051829063ffffffff61188216565b90505b610c18816117a5565b9450945094505b50509193909250565b610c32338261188f565b1515610c3d57600080fd5b600160a060020a0383161515610c5257600080fd5b600160a060020a0382161515610c6757600080fd5b610c7183826118ee565b610c7b8382611952565b610c858282611a59565b8082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000606060008084925060008351111515610d4757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f537472696e6720697320656d7074792e00000000000000000000000000000000604482015290519081900360640190fd5b600091505b610d5883516020611aa2565b821015610e44578282815181101515610d6d57fe5b90602001015160f860020a900460f860020a0260f860020a9004905080606111158015610d9b5750607a8111155b80610da6575080602d145b1515610e3957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f537472696e67206d75737420636f6e7461696e206f6e6c79206c6f776572636160448201527f736520616c70686162657473206f722068797068656e732e0000000000000000606482015290519081900360840190fd5b600190910190610d4c565b50506020015192915050565b600e5481565b6000610e6183611089565b8210610e6c57600080fd5b600160a060020a0383166000908152600760205260409020805483908110610e9057fe5b906000526020600020015490505b92915050565b610ec0838383602060405190810160405280600081525061160d565b505050565b600090815260016020526040902054600160a060020a0316151590565b6000610eec610968565b8210610ef757600080fd5b6009805483908110610f0557fe5b90600052602060002001549050919050565b600090815260106020526040902054600160a060020a031690565b600080805b610f3f610968565b821015610f7757610f4f82610ee2565b9050610f6a610f5d82610922565b849063ffffffff61188216565b9250600190910190610f37565b505090565b600080600080610f8b85610992565b600e829055600f81905591945092509050600083111561103f57600d54604080517f40c10f19000000000000000000000000000000000000000000000000000000008152336004820152602481018690529051600160a060020a03909216916340c10f19916044808201926020929091908290030181600087803b15801561101257600080fd5b505af1158015611026573d6000803e3d6000fd5b505050506040513d602081101561103c57600080fd5b50505b505060009283526012602090815260408085203386529091529092209190915550600190565b600081815260016020526040812054600160a060020a0316801515610e9e57600080fd5b6000600160a060020a03821615156110a057600080fd5b50600160a060020a031660009081526003602052604090205490565b600c54600160a060020a031633146110d357600080fd5b600c54604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a2600c8054600160a060020a0319169055565b6000808080808080805b61112f610968565b8510156111755761113f85610ee2565b935061114a84610992565b91945092509050611161888463ffffffff61188216565b975090955093506001909201918484611127565b5050505050909192565b600080805b61118c610968565b8210156111b35761119c82610ee2565b90506111a781610f7c565b50600190910190611184565b60019250505090565b600c54600160a060020a031681565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108535780601f1061082857610100808354040283529160200191610853565b600160a060020a03821633141561124257600080fd5b336000818152600460209081526040808320600160a060020a03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b600d54600160a060020a031681565b604080517f01ffc9a700000000000000000000000000000000000000000000000000000000808252600482015290516000918291600160a060020a038716916301ffc9a791602480830192602092919082900301818787803b15801561132457600080fd5b505af1158015611338573d6000803e3d6000fd5b505050506040513d602081101561134e57600080fd5b5051151561135b57600080fd5b604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fd48445ff0000000000000000000000000000000000000000000000000000000060048201529051600160a060020a038716916301ffc9a79160248083019260209291908290030181600087803b1580156113dc57600080fd5b505af11580156113f0573d6000803e3d6000fd5b505050506040513d602081101561140657600080fd5b5051151561141357600080fd5b61141c86610ccb565b600081815260106020526040902054909250600160a060020a03161561144157600080fd5b84600160a060020a0316636535b4a53486866040518463ffffffff1660e060020a028152600401808060200180602001838103835285818151815260200191508051906020019080838360005b838110156114a657818101518382015260200161148e565b50505050905090810190601f1680156114d35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156115065781810151838201526020016114ee565b50505050905090810190601f1680156115335780820380516001836020036101000a031916815260200191505b509450505050506020604051808303818588803b15801561155357600080fd5b505af1158015611567573d6000803e3d6000fd5b50505050506040513d602081101561157e57600080fd5b505160008381526010602090815260408083208054600160a060020a031916600160a060020a0386161790556011825290912088519293506115c4929091890190611ea6565b506115cf3383611aba565b60408051838152905133917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a2505050505050565b611618848484610c28565b61162484848484611b09565b151561162f57600080fd5b50505050565b606061164082610ec5565b151561164b57600080fd5b6000828152600b602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156116de5780601f106116b3576101008083540402835291602001916116de565b820191906000526020600020905b8154815290600101906020018083116116c157829003601f168201915b50505050509050919050565b60008181526011602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156116de5780601f106116b3576101008083540402835291602001916116de565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205460ff1690565b600c54600160a060020a0316331461179957600080fd5b6117a281611c76565b50565b60008060008060006014600e5411156117cc57600e54600f54600096509094509250610c1f565b85915060009450600e549350600f5492505b6000821115610c1f576117f382600f54611aa2565b905061183b61182e61181e6103e861181260148963ffffffff611ce716565b9063ffffffff611cf916565b839060020a63ffffffff611d0e16565b869063ffffffff61188216565b945061184d828263ffffffff611ce716565b915061185f838263ffffffff611ce716565b925082151561187d576a115eec47f6cf7e3500000092506001840193505b6117de565b81810182811015610e9e57fe5b60008061189b83611065565b905080600160a060020a031684600160a060020a031614806118d6575083600160a060020a03166118cb8461085e565b600160a060020a0316145b806118e657506118e68185611754565b949350505050565b81600160a060020a031661190182611065565b600160a060020a03161461191457600080fd5b600081815260026020526040902054600160a060020a03161561194e5760008181526002602052604090208054600160a060020a03191690555b5050565b60008060006119618585611d37565b600084815260086020908152604080832054600160a060020a038916845260079092529091205490935061199c90600163ffffffff611ce716565b600160a060020a0386166000908152600760205260409020805491935090839081106119c457fe5b90600052602060002001549050806007600087600160a060020a0316600160a060020a0316815260200190815260200160002084815481101515611a0457fe5b6000918252602080832090910192909255600160a060020a0387168152600790915260409020805490611a3b906000198301611f20565b50600093845260086020526040808520859055908452909220555050565b6000611a658383611dc0565b50600160a060020a039091166000908152600760209081526040808320805460018101825590845282842081018590559383526008909152902055565b6000818310611ab15781611ab3565b825b9392505050565b611ac48282611e43565b600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af015550565b600080611b1e85600160a060020a0316611e9e565b1515611b2d5760019150611c6d565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201818152600160a060020a03898116602485015260448401889052608060648501908152875160848601528751918a169463150b7a0294938c938b938b93909160a490910190602085019080838360005b83811015611bc0578181015183820152602001611ba8565b50505050905090810190601f168015611bed5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611c0f57600080fd5b505af1158015611c23573d6000803e3d6000fd5b505050506040513d6020811015611c3957600080fd5b5051600160e060020a031981167f150b7a020000000000000000000000000000000000000000000000000000000014925090505b50949350505050565b600160a060020a0381161515611c8b57600080fd5b600c54604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600c8054600160a060020a031916600160a060020a0392909216919091179055565b600082821115611cf357fe5b50900390565b60008183811515611d0657fe5b049392505050565b6000821515611d1f57506000610e9e565b50818102818382811515611d2f57fe5b0414610e9e57fe5b81600160a060020a0316611d4a82611065565b600160a060020a031614611d5d57600080fd5b600160a060020a038216600090815260036020526040902054611d8790600163ffffffff611ce716565b600160a060020a039092166000908152600360209081526040808320949094559181526001909152208054600160a060020a0319169055565b600081815260016020526040902054600160a060020a031615611de257600080fd5b60008181526001602081815260408084208054600160a060020a031916600160a060020a0388169081179091558452600390915290912054611e2391611882565b600160a060020a0390921660009081526003602052604090209190915550565b600160a060020a0382161515611e5857600080fd5b611e628282611a59565b6040518190600160a060020a038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000903b1190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611ee757805160ff1916838001178555611f14565b82800160010185558215611f14579182015b82811115611f14578251825591602001919060010190611ef9565b50610955929150611f40565b815481835581811115610ec057600083815260209020610ec09181019083015b61085b91905b808211156109555760008155600101611f465600a165627a7a723058200aafb32ba569e0b59ed229e5265b5e3bbb869f17b8fc2e2a260eda3bc5e6a2350029",
  "sourceMap": "305:5221:3:-;;;622:1;595:28;;493:21;630:41;;854:64;8:9:-1;5:2;;;30:1;27;20:12;5:2;854:64:3;;;;;;;;;;;;;;;;1166:276:33;;;;;;;;;854:64:3;1166:276:33;;;;;;;;;;;;;;;;;;;;;;;854:64:3;649:38:20;668:18;649;;;;:38;:::i;:::-;1258::31;1277:18;1258;;;;:38;:::i;:::-;1302:44;1321:24;1302:18;;;;:44;:::i;:::-;1221:13:33;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;1240:17:33;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;1337:48:33;1356:28;1337:18;;;;:48;:::i;:::-;1391:46;1410:26;1391:18;;;;:46;:::i;:::-;-1:-1:-1;;567:5:22;:18;;575:10;-1:-1:-1;;;;;;567:18:22;;;;;;;897:5:3;:14;;;;;-1:-1:-1;;;;;897:14:3;;;;;;;;;;305:5221;;987:156:20;1065:26;;;;;;1057:35;;;;;;1098:33;;:19;:33;;;;;;;;;;:40;;-1:-1:-1;;1098:40:20;1134:4;1098:40;;;987:156::o;305:5221:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;305:5221:3;;;-1:-1:-1;305:5221:3;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "305:5221:3:-;;;;;;;;;-1:-1:-1;;;305:5221:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;775:142:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;775:142:20;-1:-1:-1;;;;;;775:142:20;;;;;;;;;;;;;;;;;;;;;;;520:44:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;520:44:3;;;;;;;;;;;;;;;;;;;;1536:70:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1536:70:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1536:70:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3289:111:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3289:111:31;;;;;;;;;-1:-1:-1;;;;;3289:111:31;;;;;;;;;;;;;;2785:277;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2785:277:31;-1:-1:-1;;;;;2785:277:31;;;;;;;;;3352:159:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3352:159:3;;;;;4405:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4405:158:3;;;;455:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;455:59:3;;;;2805:87:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2805:87:33;;;;230:54:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;230:54:20;;;;;;;;-1:-1:-1;;;;;;230:54:20;;;;;;;;;;;;;;2283:615:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2283:615:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4780:370:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4780:370:31;-1:-1:-1;;;;;4780:370:31;;;;;;;;;;;;1562:475:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1562:475:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1562:475:3;;-1:-1:-1;1562:475:3;;-1:-1:-1;;;;;;;1562:475:3;595:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;595:28:3;;;;2460:203:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2460:203:33;-1:-1:-1;;;;;2460:203:33;;;;;;;5766:199:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5766:199:31;-1:-1:-1;;;;;5766:199:31;;;;;;;;;;;;2240:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2240:140:31;;;;;3216::33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3216:140:33;;;;;2164:113:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2164:113:3;;;;;4161:238;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4161:238:3;;;;2904:442;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2904:442:3;;;;;1898:164:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1898:164:31;;;;;1543:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1543:142:31;-1:-1:-1;;;;;1543:142:31;;;;;1001:111:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1001:111:22;;;;3517:415:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3517:415:3;;;;3938:217;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3938:217:3;;;;238:20:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:20:22;;;;1704:74:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1704:74:33;;;;3680:205:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3680:205:31;-1:-1:-1;;;;;3680:205:31;;;;;;;;;571:18:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;571:18:3;;;;924:632;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;924:632:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;924:632:3;;;;;;;;;;;-1:-1:-1;924:632:3;;-1:-1:-1;924:632:3;;;;-1:-1:-1;924:632:3;-1:-1:-1;924:632:3;;;;;;;;;;-1:-1:-1;;924:632:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;924:632:3;;;;-1:-1:-1;924:632:3;-1:-1:-1;924:632:3;;-1:-1:-1;924:632:3;;;;;;;;-1:-1:-1;924:632:3;;-1:-1:-1;924:632:3;;-1:-1:-1;;;;;;;924:632:3;6647:276:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6647:276:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6647:276:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6647:276:31;;-1:-1:-1;6647:276:31;;-1:-1:-1;;;;;;;6647:276:31;1966:133:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1966:133:33;;;;;2043:115:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2043:115:3;;;;;4194:168:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4194:168:31;-1:-1:-1;;;;;4194:168:31;;;;;;;;;;1274:103:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1274:103:22;-1:-1:-1;;;;;1274:103:22;;;;;775:142:20;-1:-1:-1;;;;;;879:33:20;858:4;879:33;;;;;;;;;;;;;;775:142::o;520:44:3:-;562:2;520:44;:::o;1536:70:33:-;1596:5;1589:12;;;;;;;;-1:-1:-1;;1589:12:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1575:6;;1589:12;;1596:5;;1589:12;;1596:5;1589:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1536:70;;:::o;3289:111:31:-;3349:7;3371:24;;;:14;:24;;;;;;-1:-1:-1;;;;;3371:24:31;;3289:111::o;2785:277::-;2846:13;2862:17;2870:8;2862:7;:17::i;:::-;2846:33;-1:-1:-1;;;;;;2893:12:31;;;;;;;;2885:21;;;;;;2920:10;-1:-1:-1;;;;;2920:19:31;;;;:58;;;2943:35;2960:5;2967:10;2943:16;:35::i;:::-;2912:67;;;;;;;;2986:24;;;;:14;:24;;;;;;:30;;-1:-1:-1;;;;;;2986:30:31;-1:-1:-1;;;;;2986:30:31;;;;;;;;;3027;;2986:24;;3027:30;;;;;;;2785:277;;;:::o;3352:159:3:-;3417:14;3450:42;;;:32;:42;;;;;;;;3493:10;3450:54;;;;;;;;;3352:159::o;4405:158::-;4460:7;4480:14;4500:33;4513:19;;4500:12;:33::i;:::-;4479:54;;;;4550:6;4543:13;;4405:158;;;:::o;455:59::-;493:21;455:59;:::o;2805:87:33:-;2871:9;:16;2805:87;:::o;230:54:20:-;;;:::o;2283:615:3:-;2349:14;2433:42;;;:32;:42;;;;;;;;2476:10;2433:54;;;;;;;;2349:14;;;;;;;;2433:58;-1:-1:-1;2429:131:3;;;2518:9;;2529:19;;2515:1;;-1:-1:-1;2518:9:3;;-1:-1:-1;2529:19:3;-1:-1:-1;2507:42:3;;2429:131;2582:23;;;;:13;:23;;;;;;-1:-1:-1;;;;;2582:23:3;;-1:-1:-1;2623:27:3;;;2615:36;;;;;;2669:4;-1:-1:-1;;;;;2669:13:3;;:15;;;;;-1:-1:-1;;;2669:15:3;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2669:15:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2669:15:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2669:15:3;2661:24;;;;;;;;2716:26;;;;;;2731:10;2716:26;;;;;;-1:-1:-1;;;;;2716:14:3;;;;;:26;;;;;;;;;;;;;;-1:-1:-1;2716:14:3;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;2716:26:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2716:26:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2716:26:3;2756:12;;;;;;;;2716:26;;-1:-1:-1;2772:10:3;;-1:-1:-1;;;;;2756:10:3;;;;;:12;;;;;2716:26;;2756:12;;;;;;;;:10;:12;;;5:2:-1;;;;30:1;27;20:12;5:2;2756:12:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2756:12:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2756:12:3;-1:-1:-1;;;;;2756:26:3;;2752:100;;;2810:31;2824:4;-1:-1:-1;;;;;2824:14:3;;:16;;;;;-1:-1:-1;;;2824:16:3;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2824:16:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2824:16:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2824:16:3;2810:9;;:31;:13;:31;:::i;:::-;2798:43;;2752:100;2868:23;2881:9;2868:12;:23::i;:::-;2861:30;;;;;;2283:615;;;;;;;;:::o;4780:370:31:-;4891:39;4909:10;4921:8;4891:17;:39::i;:::-;4883:48;;;;;;;;-1:-1:-1;;;;;4945:19:31;;;;4937:28;;;;;;-1:-1:-1;;;;;4979:17:31;;;;4971:26;;;;;;5004:30;5018:5;5025:8;5004:13;:30::i;:::-;5040:32;5056:5;5063:8;5040:15;:32::i;:::-;5078:25;5089:3;5094:8;5078:10;:25::i;:::-;5136:8;5131:3;-1:-1:-1;;;;;5115:30:31;5124:5;-1:-1:-1;;;;;5115:30:31;;;;;;;;;;;4780:370;;;:::o;1562:475:3:-;1616:15;1643:18;1746:6;1805;1670:5;1643:33;;1709:1;1694:5;:12;:16;1686:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1755:1;1746:10;;1741:216;1762:22;1767:5;:12;1781:2;1762:4;:22::i;:::-;1758:1;:26;1741:216;;;1819:5;1825:1;1819:8;;;;;;;;;;;;;;;-1:-1:-1;;;1819:8:3;;-1:-1:-1;;;1819:8:3;-1:-1:-1;;;1814:14:3;;1805:23;;1858:1;1850:4;:9;;:22;;;;;1868:4;1863:1;:9;;1850:22;:35;;;;1876:1;1881:4;1876:9;1850:35;1842:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1786:3;;;;;1741:216;;;-1:-1:-1;;2017:2:3;2006:14;2000:21;;1975:56;-1:-1:-1;;1975:56:3:o;595:28::-;;;;:::o;2460:203:33:-;2566:7;2600:17;2610:6;2600:9;:17::i;:::-;2591:26;;2583:35;;;;;;-1:-1:-1;;;;;2631:19:33;;;;;;:11;:19;;;;;:27;;2651:6;;2631:27;;;;;;;;;;;;;;2624:34;;2460:203;;;;;:::o;5766:199:31:-;5918:42;5935:5;5942:3;5947:8;5918:42;;;;;;;;;;;;;:16;:42::i;:::-;5766:199;;;:::o;2240:140::-;2295:4;2323:20;;;:10;:20;;;;;;-1:-1:-1;;;;;2323:20:31;2356:19;;;2240:140::o;3216::33:-;3275:7;3307:13;:11;:13::i;:::-;3298:22;;3290:31;;;;;;3334:9;:17;;3344:6;;3334:17;;;;;;;;;;;;;;3327:24;;3216:140;;;:::o;2164:113:3:-;2219:9;2247:23;;;:13;:23;;;;;;-1:-1:-1;;;;;2247:23:3;;2164:113::o;4161:238::-;4208:14;;;4234:159;4255:13;:11;:13::i;:::-;4251:1;:17;4234:159;;;4307:15;4320:1;4307:12;:15::i;:::-;4289:33;;4345:37;4356:25;4373:7;4356:16;:25::i;:::-;4345:6;;:37;:10;:37;:::i;:::-;4336:46;-1:-1:-1;4270:3:3;;;;;4234:159;;;4161:238;;;:::o;2904:442::-;2961:4;2978:14;2994:20;3016:30;3050:27;3068:8;3050:17;:27::i;:::-;3087:9;:24;;;3121:19;:44;;;2977:100;;-1:-1:-1;2977:100:3;-1:-1:-1;2977:100:3;-1:-1:-1;;3179:10:3;;3175:71;;;3205:5;;:30;;;;;;3216:10;3205:30;;;;;;;;;;;;-1:-1:-1;;;;;3205:5:3;;;;:10;;:30;;;;;;;;;;;;;;;:5;;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;3205:30:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3205:30:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;3175:71:3;-1:-1:-1;;3255:42:3;;;;:32;:42;;;;;;;;3298:10;3255:54;;;;;;;;:63;;;;-1:-1:-1;3335:4:3;;2904:442::o;1898:164:31:-;1954:7;1985:20;;;:10;:20;;;;;;-1:-1:-1;;;;;1985:20:31;2019:19;;;2011:28;;;;;1543:142;1599:7;-1:-1:-1;;;;;1622:20:31;;;;1614:29;;;;;;-1:-1:-1;;;;;;1656:24:31;;;;;:16;:24;;;;;;;1543:142::o;1001:111:22:-;719:5;;-1:-1:-1;;;;;719:5:22;705:10;:19;697:28;;;;;;1077:5;;1058:25;;-1:-1:-1;;;;;1077:5:22;;;;1058:25;;1077:5;;1058:25;1089:5;:18;;-1:-1:-1;;;;;;1089:18:22;;;1001:111::o;3517:415:3:-;3565:14;;;;;;;;3645:281;3666:13;:11;:13::i;:::-;3662:1;:17;3645:281;;;3718:15;3731:1;3718:12;:15::i;:::-;3700:33;;3783:26;3801:7;3783:17;:26::i;:::-;3747:62;;-1:-1:-1;3747:62:3;-1:-1:-1;3747:62:3;-1:-1:-1;3832:13:3;:6;3747:62;3832:13;:10;:13;:::i;:::-;3823:22;-1:-1:-1;3874:1:3;;-1:-1:-1;3914:1:3;-1:-1:-1;3681:3:3;;;;;3874:1;3914;3645:281;;;3517:415;;;;;;;;:::o;3938:217::-;3977:4;;;3993:135;4014:13;:11;:13::i;:::-;4010:1;:17;3993:135;;;4066:15;4079:1;4066:12;:15::i;:::-;4048:33;;4095:22;4109:7;4095:13;:22::i;:::-;-1:-1:-1;4029:3:3;;;;;3993:135;;;4144:4;4137:11;;3938:217;;;:::o;238:20:22:-;;;-1:-1:-1;;;;;238:20:22;;:::o;1704:74:33:-;1766:7;1759:14;;;;;;;;-1:-1:-1;;1759:14:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1745:6;;1759:14;;1766:7;;1759:14;;1766:7;1759:14;;;;;;;;;;;;;;;;;;;;;;;;3680:205:31;-1:-1:-1;;;;;3757:17:31;;3764:10;3757:17;;3749:26;;;;;;3799:10;3781:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;3781:34:31;;;;;;;;;;;;:46;;-1:-1:-1;;3781:46:31;;;;;;;;;;3838:42;;;;;;;3781:34;;3799:10;3838:42;;;;;;;;;;;3680:205;;:::o;571:18:3:-;;;-1:-1:-1;;;;;571:18:3;;:::o;924:632::-;1069:39;;;;;;;;;;;;;1210:15;;;;-1:-1:-1;;;;;1069:27:3;;;;;:39;;;;;;;;;;;;;;1210:15;1069:27;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;1069:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1069:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1069:39:3;1061:48;;;;;;;;1159:39;;;;;;;;;;;;;-1:-1:-1;;;;;1159:27:3;;;;;:39;;;;;;;;;;;;;;-1:-1:-1;1159:27:3;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;1159:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1159:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1159:39:3;1151:48;;;;;;;;1228:16;1238:5;1228:9;:16::i;:::-;1305:1;1270:22;;;:13;:22;;;;;;1210:34;;-1:-1:-1;;;;;;1270:22:3;1262:45;1254:54;;;;;;1336:9;-1:-1:-1;;;;;1336:21:3;;1364:9;1375;1386:5;1336:56;;;;;-1:-1:-1;;;1336:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1336:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1336:56:3;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1336:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1336:56:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1336:56:3;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1336:56:3;1403:22;;;;:13;1336:56;1403:22;;;;;;;:29;;-1:-1:-1;;;;;;1403:29:3;-1:-1:-1;;;;;1403:29:3;;;;;1442:13;:22;;;;;:30;;1336:56;;-1:-1:-1;1442:30:3;;:22;;:30;;;;:::i;:::-;;1483:26;1489:10;1501:7;1483:5;:26::i;:::-;1524:25;;;;;;;;1529:10;;1524:25;;;;;;;;;;924:632;;;;;;:::o;6647:276:31:-;6771:34;6784:5;6791:3;6796:8;6771:12;:34::i;:::-;6864:53;6889:5;6896:3;6901:8;6911:5;6864:24;:53::i;:::-;6856:62;;;;;;;;6647:276;;;;:::o;1966:133:33:-;2023:6;2045:16;2052:8;2045:6;:16::i;:::-;2037:25;;;;;;;;2075:19;;;;:9;:19;;;;;;;;;2068:26;;;;;;-1:-1:-1;;2068:26:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2075:19;;2068:26;;2075:19;2068:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1966:133;;;:::o;2043:115:3:-;2128:23;;;;:13;:23;;;;;;;;;2121:30;;;;;;-1:-1:-1;;2121:30:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2098:11;;2121:30;;;2128:23;2121:30;;;;;;;;;;;;;;;;;;;;;;;;4194:168:31;-1:-1:-1;;;;;4321:25:31;;;4300:4;4321:25;;;:17;:25;;;;;;;;:36;;;;;;;;;;;;;;;4194:168::o;1274:103:22:-;719:5;;-1:-1:-1;;;;;719:5:22;705:10;:19;697:28;;;;;;1343:29;1362:9;1343:18;:29::i;:::-;1274:103;:::o;4569:839:3:-;4633:14;4649:20;4671:30;4822:14;5000:9;562:2;4717:9;;:27;4713:100;;;4771:9;;4782:19;;4768:1;;-1:-1:-1;4771:9:3;;-1:-1:-1;4782:19:3;-1:-1:-1;4760:42:3;;4713:100;4839:10;4822:27;;4868:1;4859:10;;4894:9;;4879:24;;4938:19;;4913:44;;4967:435;4983:1;4974:6;:10;4967:435;;;5012:33;5017:6;5025:19;;5012:4;:33::i;:::-;5000:45;-1:-1:-1;5068:69:3;5079:57;5090:45;5130:4;5091:33;562:2;5111:12;5091:33;:19;:33;:::i;:::-;5090:39;:45;:39;:45;:::i;:::-;5079:1;;5085;:50;5079:57;:5;:57;:::i;:::-;5068:6;;:69;:10;:69;:::i;:::-;5059:78;-1:-1:-1;5160:13:3;:6;5171:1;5160:13;:10;:13;:::i;:::-;5151:22;-1:-1:-1;5212:29:3;:22;5239:1;5212:29;:26;:29;:::i;:::-;5187:54;-1:-1:-1;5259:27:3;;5255:137;;;493:21;5306:36;;5376:1;5360:17;;;;5255:137;4967:435;;1238:128:21;1319:7;;;1339;;;;1332:15;;;7270:438:31;7380:4;7394:13;7410:17;7418:8;7410:7;:17::i;:::-;7394:33;;7606:5;-1:-1:-1;;;;;7594:17:31;:8;-1:-1:-1;;;;;7594:17:31;;:60;;;;7646:8;-1:-1:-1;;;;;7621:33:31;:21;7633:8;7621:11;:21::i;:::-;-1:-1:-1;;;;;7621:33:31;;7594:60;:103;;;;7664:33;7681:5;7688:8;7664:16;:33::i;:::-;7579:124;7270:438;-1:-1:-1;;;;7270:438:31:o;8762:214::-;8863:6;-1:-1:-1;;;;;8842:27:31;:17;8850:8;8842:7;:17::i;:::-;-1:-1:-1;;;;;8842:27:31;;8834:36;;;;;;8916:1;8880:24;;;:14;:24;;;;;;-1:-1:-1;;;;;8880:24:31;:38;8876:96;;8963:1;8928:24;;;:14;:24;;;;;:37;;-1:-1:-1;;;;;;8928:37:31;;;8876:96;8762:214;;:::o;4479:1022:33:-;4734:18;4787:22;4850:17;4552:38;4574:5;4581:8;4552:21;:38::i;:::-;4755:26;;;;:16;:26;;;;;;;;;-1:-1:-1;;;;;4812:18:33;;;;:11;:18;;;;;;:25;4755:26;;-1:-1:-1;4812:32:33;;4842:1;4812:32;:29;:32;:::i;:::-;-1:-1:-1;;;;;4870:18:33;;;;;;:11;:18;;;;;:34;;4787:57;;-1:-1:-1;4870:18:33;4787:57;;4870:34;;;;;;;;;;;;;;4850:54;;4944:9;4911:11;:18;4923:5;-1:-1:-1;;;;;4911:18:33;-1:-1:-1;;;;;4911:18:33;;;;;;;;;;;;4930:10;4911:30;;;;;;;;;;;;;;;;;;;;;:42;;;;-1:-1:-1;;;;;5031:18:33;;;;:11;:18;;;;;;:27;;;;;-1:-1:-1;;5031:27:33;;;:::i;:::-;-1:-1:-1;5449:1:33;5420:26;;;:16;:26;;;;;;:30;;;5456:27;;;;;;:40;-1:-1:-1;;4479:1022:33:o;3974:226::-;4077:14;4040:31;4057:3;4062:8;4040:16;:31::i;:::-;-1:-1:-1;;;;;;4094:16:33;;;;;;;:11;:16;;;;;;;;:23;;39:1:-1;23:18;;45:23;;4123:31:33;;;;;;;;;;;4160:26;;;:16;:26;;;;;:35;3974:226::o;5414:110:3:-;5474:7;5505:2;5500;:7;:17;;5515:2;5500:17;;;5510:2;5500:17;5493:24;5414:110;-1:-1:-1;;;5414:110:3:o;5762:172:33:-;5823:26;5835:3;5840:8;5823:11;:26::i;:::-;5883:9;:16;;5856:24;;;;:14;:24;;;;;:43;;;39:1:-1;23:18;;45:23;;5905:24:33;;;;;;;-1:-1:-1;5762:172:33:o;10442:347:31:-;10581:4;10649:13;10600:16;:3;-1:-1:-1;;;;;10600:14:31;;:16::i;:::-;10599:17;10595:49;;;10633:4;10626:11;;;;10595:49;10665:79;;;;;10709:10;10665:79;;;;;;-1:-1:-1;;;;;10665:79:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;;10709:10;10721:5;;10728:8;;10738:5;;10665:79;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10665:79:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10665:79:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10665:79:31;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10665:79:31;-1:-1:-1;;;;;;10758:25:31;;10768:15;10758:25;;-1:-1:-1;10665:79:31;-1:-1:-1;10442:347:31;;;;;;;;:::o;1512:171:22:-;-1:-1:-1;;;;;1582:23:22;;;;1574:32;;;;;;1638:5;;1617:38;;-1:-1:-1;;;;;1617:38:22;;;;1638:5;;1617:38;;1638:5;;1617:38;1661:5;:17;;-1:-1:-1;;;;;;1661:17:22;-1:-1:-1;;;;;1661:17:22;;;;;;;;;;1512:171::o;1060:116:21:-;1120:7;1142:8;;;;1135:16;;;;-1:-1:-1;1164:7:21;;;1060:116::o;665:283::-;725:7;941:2;936;:7;;;;;;;;;665:283;-1:-1:-1;;;665:283:21:o;203:380::-;263:9;489:7;;485:36;;;-1:-1:-1;513:1:21;506:8;;485:36;-1:-1:-1;531:7:21;;;536:2;531;:7;551:6;;;;;;;;:12;544:20;;;9722:214:31;9824:5;-1:-1:-1;;;;;9803:26:31;:17;9811:8;9803:7;:17::i;:::-;-1:-1:-1;;;;;9803:26:31;;9795:35;;;;;;-1:-1:-1;;;;;9862:23:31;;;;;;:16;:23;;;;;;:30;;9890:1;9862:30;:27;:30;:::i;:::-;-1:-1:-1;;;;;9836:23:31;;;;;;;:16;:23;;;;;;;;:56;;;;9898:20;;;:10;:20;;;;:33;;-1:-1:-1;;;;;;9898:33:31;;;9722:214::o;9239:204::-;9345:1;9313:20;;;:10;:20;;;;;;-1:-1:-1;;;;;9313:20:31;:34;9305:43;;;;;;9354:20;;;;:10;:20;;;;;;;;:26;;-1:-1:-1;;;;;;9354:26:31;-1:-1:-1;;;;;9354:26:31;;;;;;;;9410:21;;:16;:21;;;;;;;:28;;:25;:28::i;:::-;-1:-1:-1;;;;;9386:21:31;;;;;;;:16;:21;;;;;:52;;;;-1:-1:-1;9239:204:31:o;7957:169::-;-1:-1:-1;;;;;8026:17:31;;;;8018:26;;;;;;8050:25;8061:3;8066:8;8050:10;:25::i;:::-;8086:35;;8112:8;;-1:-1:-1;;;;;8086:35:31;;;8103:1;;8086:35;;8103:1;;8086:35;7957:169;;:::o;438:578:18:-;496:4;971:18;;1003:8;;438:578::o;305:5221:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;305:5221:3;;;-1:-1:-1;305:5221:3;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity ^0.4.24;\n\nimport \"zeppelin-solidity/contracts/token/ERC721/ERC721Token.sol\";\nimport \"zeppelin-solidity/contracts/token/ERC20/ERC20.sol\";\nimport \"zeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"./Boost.sol\";\nimport \"./sale/Sale.sol\";\nimport \"./template/sale/SaleTemplate.sol\";\n\ncontract Raiser is ERC721Token(\"Raiser\", \"RAI\"), Ownable {\n    using SafeMath for uint256;\n\n    event Mint(address indexed to, uint256 tokenId);\n\n    uint256 public constant HALVING_WEI = 21000000 * (10 ** 18);\n    uint256 public constant MAX_HALVING_ERA = 20;\n\n    Boost public boost;\n    uint256 public rewardEra = 0;\n\n    uint256 weiUntilNextHalving = HALVING_WEI;\n    mapping(uint256 => Sale) saleOfTokenId;\n    mapping(uint256 => string) slugOfTokenId;\n    mapping(uint256 => mapping(address => uint256)) rewardedBoostsOfSomeoneOfTokenId;\n\n    constructor(Boost _boost) public {\n        boost = _boost;\n    }\n\n    function mint(string _slug, SaleTemplate _template, bytes _bytecode, bytes _args) public payable {\n        // InterfaceId_ERC165\n        require(_template.supportsInterface(0x01ffc9a7));\n        // InterfaceId_Template\n        require(_template.supportsInterface(0xd48445ff));\n\n        uint256 tokenId = toTokenId(_slug);\n        require(address(saleOfTokenId[tokenId]) == address(0));\n\n        Sale sale = Sale(_template.instantiate.value(msg.value)(_bytecode, _args));\n        saleOfTokenId[tokenId] = sale;\n        slugOfTokenId[tokenId] = _slug;\n\n        _mint(msg.sender, tokenId);\n        emit Mint(msg.sender, tokenId);\n    }\n\n    function toTokenId(string _slug) public pure returns (uint256 tokenId) {\n        bytes memory chars = bytes(_slug);\n        require(chars.length > 0, \"String is empty.\");\n        for (uint i = 0; i < _min(chars.length, 32); i++) {\n            uint c = uint(chars[i]);\n            require(0x61 <= c && c <= 0x7a || c == 0x2d, \"String must contain only lowercase alphabets or hyphens.\");\n        }\n        assembly {\n            tokenId := mload(add(chars, 32))\n        }\n    }\n\n    function slugOf(uint256 _tokenId) public view returns (string slug) {\n        return slugOfTokenId[_tokenId];\n    }\n\n    function saleOf(uint256 _tokenId) public view returns (Sale sale) {\n        return saleOfTokenId[_tokenId];\n    }\n\n    function claimableBoostsOf(uint256 _tokenId) public view returns (uint256 boosts, uint256 newRewardEra, uint256 newWeiUntilNextHalving) {\n        if (rewardedBoostsOfSomeoneOfTokenId[_tokenId][msg.sender] > 0) {\n            return (0, rewardEra, weiUntilNextHalving);\n        }\n\n        Sale sale = saleOfTokenId[_tokenId];\n        require(address(sale) != address(0));\n        require(sale.finished());\n\n        uint256 weiAmount = sale.paymentOf(msg.sender);\n        if (sale.owner() == msg.sender) {\n            weiAmount = weiAmount.add(sale.weiRaised());\n        }\n        return _weiToBoosts(weiAmount);\n    }\n\n    function claimBoostsOf(uint256 _tokenId) public returns (bool) {\n        (uint256 boosts, uint256 newRewardEra, uint256 newWeiUntilNextHalving) = claimableBoostsOf(_tokenId);\n        rewardEra = newRewardEra;\n        weiUntilNextHalving = newWeiUntilNextHalving;\n        if (boosts > 0) {\n            boost.mint(msg.sender, boosts);\n        }\n        rewardedBoostsOfSomeoneOfTokenId[_tokenId][msg.sender] = boosts;\n        return true;\n    }\n\n    function rewardedBoostsOf(uint256 _tokenId) public view returns (uint256 boosts) {\n        return rewardedBoostsOfSomeoneOfTokenId[_tokenId][msg.sender];\n    }\n\n    function claimableBoosts() public view returns (uint256 boosts, uint256 newRewardEra, uint256 newWeiUntilNextHalving) {\n        for (uint i = 0; i < totalSupply(); i++) {\n            uint256 tokenId = tokenByIndex(i);\n            (uint256 b, uint256 r, uint256 w) = claimableBoostsOf(tokenId);\n            boosts = boosts.add(b);\n            newRewardEra = r;\n            newWeiUntilNextHalving = w;\n        }\n    }\n\n    function claimBoosts() public returns (bool) {\n        for (uint i = 0; i < totalSupply(); i++) {\n            uint256 tokenId = tokenByIndex(i);\n            claimBoostsOf(tokenId);\n        }\n        return true;\n    }\n\n    function rewardedBoosts() public view returns (uint256 boosts) {\n        for (uint i = 0; i < totalSupply(); i++) {\n            uint256 tokenId = tokenByIndex(i);\n            boosts = boosts.add(rewardedBoostsOf(tokenId));\n        }\n    }\n\n    function boostsUntilNextHalving() public view returns (uint256) {\n        (uint256 boosts,,) = _weiToBoosts(weiUntilNextHalving);\n        return boosts;\n    }\n\n    function _weiToBoosts(uint256 _weiAmount) private view returns (uint256 boosts, uint256 newRewardEra, uint256 newWeiUntilNextHalving) {\n        if (rewardEra > MAX_HALVING_ERA) {\n            return (0, rewardEra, weiUntilNextHalving);\n        }\n        uint256 amount = _weiAmount;\n        boosts = 0;\n        newRewardEra = rewardEra;\n        newWeiUntilNextHalving = weiUntilNextHalving;\n        while (amount > 0) {\n            uint256 a = _min(amount, weiUntilNextHalving);\n            boosts = boosts.add(a.mul(2 ** (MAX_HALVING_ERA.sub(newRewardEra)).div(1000)));\n            amount = amount.sub(a);\n            newWeiUntilNextHalving = newWeiUntilNextHalving.sub(a);\n            if (newWeiUntilNextHalving == 0) {\n                newWeiUntilNextHalving = HALVING_WEI;\n                newRewardEra += 1;\n            }\n        }\n    }\n\n    function _min(uint256 _a, uint256 _b) private pure returns (uint256) {\n        return _a < _b ? _a : _b;\n    }\n}\n",
  "sourcePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/Raiser.sol",
  "ast": {
    "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/Raiser.sol",
    "exportedSymbols": {
      "Raiser": [
        713
      ]
    },
    "id": 714,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 91,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:3"
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/token/ERC721/ERC721Token.sol",
        "file": "zeppelin-solidity/contracts/token/ERC721/ERC721Token.sol",
        "id": 92,
        "nodeType": "ImportDirective",
        "scope": 714,
        "sourceUnit": 6559,
        "src": "26:66:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/token/ERC20/ERC20.sol",
        "file": "zeppelin-solidity/contracts/token/ERC20/ERC20.sol",
        "id": 93,
        "nodeType": "ImportDirective",
        "scope": 714,
        "sourceUnit": 5058,
        "src": "93:59:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/ownership/Ownable.sol",
        "file": "zeppelin-solidity/contracts/ownership/Ownable.sol",
        "id": 94,
        "nodeType": "ImportDirective",
        "scope": 714,
        "sourceUnit": 4885,
        "src": "153:59:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/Boost.sol",
        "file": "./Boost.sol",
        "id": 95,
        "nodeType": "ImportDirective",
        "scope": 714,
        "sourceUnit": 46,
        "src": "213:21:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/sale/Sale.sol",
        "file": "./sale/Sale.sol",
        "id": 96,
        "nodeType": "ImportDirective",
        "scope": 714,
        "sourceUnit": 1353,
        "src": "235:25:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/template/sale/SaleTemplate.sol",
        "file": "./template/sale/SaleTemplate.sol",
        "id": 97,
        "nodeType": "ImportDirective",
        "scope": 714,
        "sourceUnit": 1740,
        "src": "261:42:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": [
              {
                "argumentTypes": null,
                "hexValue": "526169736572",
                "id": 99,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "string",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "336:8:3",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_stringliteral_46ae19143603f05591b93e45011d8e48b3ac3cead0c5382c5e6440d3dad87d21",
                  "typeString": "literal_string \"Raiser\""
                },
                "value": "Raiser"
              },
              {
                "argumentTypes": null,
                "hexValue": "524149",
                "id": 100,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "string",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "346:5:3",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_stringliteral_c8ec019e548841114c7185bbedf896d71ab0e7123130f4e29856964b35f51eef",
                  "typeString": "literal_string \"RAI\""
                },
                "value": "RAI"
              }
            ],
            "baseName": {
              "contractScope": null,
              "id": 98,
              "name": "ERC721Token",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6558,
              "src": "324:11:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC721Token_$6558",
                "typeString": "contract ERC721Token"
              }
            },
            "id": 101,
            "nodeType": "InheritanceSpecifier",
            "src": "324:28:3"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 102,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4884,
              "src": "354:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$4884",
                "typeString": "contract Ownable"
              }
            },
            "id": 103,
            "nodeType": "InheritanceSpecifier",
            "src": "354:7:3"
          }
        ],
        "contractDependencies": [
          4653,
          4704,
          4884,
          5469,
          5489,
          5496,
          5618,
          6166,
          6558
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 713,
        "linearizedBaseContracts": [
          713,
          4884,
          6558,
          5496,
          5489,
          5469,
          6166,
          5618,
          4704,
          4653
        ],
        "name": "Raiser",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 106,
            "libraryName": {
              "contractScope": null,
              "id": 104,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4798,
              "src": "374:8:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$4798",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "368:27:3",
            "typeName": {
              "id": 105,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "387:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 112,
            "name": "Mint",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 111,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 108,
                  "indexed": true,
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 112,
                  "src": "412:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 107,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "412:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 110,
                  "indexed": false,
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 112,
                  "src": "432:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 109,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "432:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "411:37:3"
            },
            "src": "401:48:3"
          },
          {
            "constant": true,
            "id": 120,
            "name": "HALVING_WEI",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "455:59:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 113,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "455:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_rational_21000000000000000000000000_by_1",
                "typeString": "int_const 21000000000000000000000000"
              },
              "id": 119,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "hexValue": "3231303030303030",
                "id": 114,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "493:8:3",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_21000000_by_1",
                  "typeString": "int_const 21000000"
                },
                "value": "21000000"
              },
              "nodeType": "BinaryOperation",
              "operator": "*",
              "rightExpression": {
                "argumentTypes": null,
                "components": [
                  {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "id": 117,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "3130",
                      "id": 115,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "505:2:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3138",
                      "id": 116,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "511:2:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_18_by_1",
                        "typeString": "int_const 18"
                      },
                      "value": "18"
                    },
                    "src": "505:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    }
                  }
                ],
                "id": 118,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "504:10:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                  "typeString": "int_const 1000000000000000000"
                }
              },
              "src": "493:21:3",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_21000000000000000000000000_by_1",
                "typeString": "int_const 21000000000000000000000000"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 123,
            "name": "MAX_HALVING_ERA",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "520:44:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 121,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "520:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3230",
              "id": 122,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "562:2:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_20_by_1",
                "typeString": "int_const 20"
              },
              "value": "20"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 125,
            "name": "boost",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "571:18:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Boost_$45",
              "typeString": "contract Boost"
            },
            "typeName": {
              "contractScope": null,
              "id": 124,
              "name": "Boost",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 45,
              "src": "571:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Boost_$45",
                "typeString": "contract Boost"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 128,
            "name": "rewardEra",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "595:28:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 126,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "595:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30",
              "id": 127,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "622:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 131,
            "name": "weiUntilNextHalving",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "630:41:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 129,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "630:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "id": 130,
              "name": "HALVING_WEI",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 120,
              "src": "660:11:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 135,
            "name": "saleOfTokenId",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "677:38:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_Sale_$1352_$",
              "typeString": "mapping(uint256 => contract Sale)"
            },
            "typeName": {
              "id": 134,
              "keyType": {
                "id": 132,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "685:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "677:24:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_Sale_$1352_$",
                "typeString": "mapping(uint256 => contract Sale)"
              },
              "valueType": {
                "contractScope": null,
                "id": 133,
                "name": "Sale",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 1352,
                "src": "696:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_Sale_$1352",
                  "typeString": "contract Sale"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 139,
            "name": "slugOfTokenId",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "721:40:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
              "typeString": "mapping(uint256 => string)"
            },
            "typeName": {
              "id": 138,
              "keyType": {
                "id": 136,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "729:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "721:26:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                "typeString": "mapping(uint256 => string)"
              },
              "valueType": {
                "id": 137,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "740:6:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 145,
            "name": "rewardedBoostsOfSomeoneOfTokenId",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "767:80:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
              "typeString": "mapping(uint256 => mapping(address => uint256))"
            },
            "typeName": {
              "id": 144,
              "keyType": {
                "id": 140,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "775:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "767:47:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                "typeString": "mapping(uint256 => mapping(address => uint256))"
              },
              "valueType": {
                "id": 143,
                "keyType": {
                  "id": 141,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "794:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "786:27:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "valueType": {
                  "id": 142,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "805:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 154,
              "nodeType": "Block",
              "src": "887:31:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 150,
                      "name": "boost",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 125,
                      "src": "897:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Boost_$45",
                        "typeString": "contract Boost"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 151,
                      "name": "_boost",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 147,
                      "src": "905:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Boost_$45",
                        "typeString": "contract Boost"
                      }
                    },
                    "src": "897:14:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Boost_$45",
                      "typeString": "contract Boost"
                    }
                  },
                  "id": 153,
                  "nodeType": "ExpressionStatement",
                  "src": "897:14:3"
                }
              ]
            },
            "documentation": null,
            "id": 155,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 148,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 147,
                  "name": "_boost",
                  "nodeType": "VariableDeclaration",
                  "scope": 155,
                  "src": "866:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Boost_$45",
                    "typeString": "contract Boost"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 146,
                    "name": "Boost",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 45,
                    "src": "866:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Boost_$45",
                      "typeString": "contract Boost"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "865:14:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 149,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "887:0:3"
            },
            "scope": 713,
            "src": "854:64:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 236,
              "nodeType": "Block",
              "src": "1021:535:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30783031666663396137",
                            "id": 169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1097:10:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_33540519_by_1",
                              "typeString": "int_const 33540519"
                            },
                            "value": "0x01ffc9a7"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_33540519_by_1",
                              "typeString": "int_const 33540519"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 167,
                            "name": "_template",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 159,
                            "src": "1069:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SaleTemplate_$1739",
                              "typeString": "contract SaleTemplate"
                            }
                          },
                          "id": 168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "supportsInterface",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4685,
                          "src": "1069:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes4_$returns$_t_bool_$",
                            "typeString": "function (bytes4) view external returns (bool)"
                          }
                        },
                        "id": 170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1069:39:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 166,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6576,
                        6577
                      ],
                      "referencedDeclaration": 6576,
                      "src": "1061:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1061:48:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 172,
                  "nodeType": "ExpressionStatement",
                  "src": "1061:48:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30786434383434356666",
                            "id": 176,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1187:10:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3565438463_by_1",
                              "typeString": "int_const 3565438463"
                            },
                            "value": "0xd48445ff"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_3565438463_by_1",
                              "typeString": "int_const 3565438463"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 174,
                            "name": "_template",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 159,
                            "src": "1159:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SaleTemplate_$1739",
                              "typeString": "contract SaleTemplate"
                            }
                          },
                          "id": 175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "supportsInterface",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4685,
                          "src": "1159:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes4_$returns$_t_bool_$",
                            "typeString": "function (bytes4) view external returns (bool)"
                          }
                        },
                        "id": 177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1159:39:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 173,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6576,
                        6577
                      ],
                      "referencedDeclaration": 6576,
                      "src": "1151:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1151:48:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 179,
                  "nodeType": "ExpressionStatement",
                  "src": "1151:48:3"
                },
                {
                  "assignments": [
                    181
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 181,
                      "name": "tokenId",
                      "nodeType": "VariableDeclaration",
                      "scope": 237,
                      "src": "1210:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 180,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1210:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 185,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 183,
                        "name": "_slug",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 157,
                        "src": "1238:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 182,
                      "name": "toTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 299,
                      "src": "1228:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (string memory) pure returns (uint256)"
                      }
                    },
                    "id": 184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1228:16:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1210:34:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 195,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 188,
                                "name": "saleOfTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 135,
                                "src": "1270:13:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_Sale_$1352_$",
                                  "typeString": "mapping(uint256 => contract Sale)"
                                }
                              },
                              "id": 190,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 189,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 181,
                                "src": "1284:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1270:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Sale_$1352",
                                "typeString": "contract Sale"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Sale_$1352",
                                "typeString": "contract Sale"
                              }
                            ],
                            "id": 187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1262:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1262:31:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1305:1:3",
                              "subdenomination": null,
                              "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": 192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1297:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1297:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1262:45:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 186,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6576,
                        6577
                      ],
                      "referencedDeclaration": 6576,
                      "src": "1254:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1254:54:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 197,
                  "nodeType": "ExpressionStatement",
                  "src": "1254:54:3"
                },
                {
                  "assignments": [
                    199
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 199,
                      "name": "sale",
                      "nodeType": "VariableDeclaration",
                      "scope": 237,
                      "src": "1319:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Sale_$1352",
                        "typeString": "contract Sale"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 198,
                        "name": "Sale",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1352,
                        "src": "1319:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Sale_$1352",
                          "typeString": "contract Sale"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 211,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 207,
                            "name": "_bytecode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 161,
                            "src": "1375:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 208,
                            "name": "_args",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 163,
                            "src": "1386:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 204,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6573,
                                "src": "1364:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1364:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 201,
                                "name": "_template",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 159,
                                "src": "1336:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_SaleTemplate_$1739",
                                  "typeString": "contract SaleTemplate"
                                }
                              },
                              "id": 202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "instantiate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1738,
                              "src": "1336:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_address_$",
                                "typeString": "function (bytes memory,bytes memory) payable external returns (address)"
                              }
                            },
                            "id": 203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1336:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_setvalue_nonpayable$_t_uint256_$returns$_t_function_external_payable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_address_$value_$",
                              "typeString": "function (uint256) returns (function (bytes memory,bytes memory) payable external returns (address))"
                            }
                          },
                          "id": 206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1336:38:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_address_$value",
                            "typeString": "function (bytes memory,bytes memory) payable external returns (address)"
                          }
                        },
                        "id": 209,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1336:56:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 200,
                      "name": "Sale",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1352,
                      "src": "1331:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Sale_$1352_$",
                        "typeString": "type(contract Sale)"
                      }
                    },
                    "id": 210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1331:62:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Sale_$1352",
                      "typeString": "contract Sale"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1319:74:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 212,
                        "name": "saleOfTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 135,
                        "src": "1403:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_Sale_$1352_$",
                          "typeString": "mapping(uint256 => contract Sale)"
                        }
                      },
                      "id": 214,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 213,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 181,
                        "src": "1417:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1403:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Sale_$1352",
                        "typeString": "contract Sale"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 215,
                      "name": "sale",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 199,
                      "src": "1428:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Sale_$1352",
                        "typeString": "contract Sale"
                      }
                    },
                    "src": "1403:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Sale_$1352",
                      "typeString": "contract Sale"
                    }
                  },
                  "id": 217,
                  "nodeType": "ExpressionStatement",
                  "src": "1403:29:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 218,
                        "name": "slugOfTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 139,
                        "src": "1442:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                          "typeString": "mapping(uint256 => string storage ref)"
                        }
                      },
                      "id": 220,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 219,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 181,
                        "src": "1456:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1442:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 221,
                      "name": "_slug",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 157,
                      "src": "1467:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1442:30:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 223,
                  "nodeType": "ExpressionStatement",
                  "src": "1442:30:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 225,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6573,
                          "src": "1489:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1489:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 227,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 181,
                        "src": "1501:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 224,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6478
                      ],
                      "referencedDeclaration": 6478,
                      "src": "1483:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 228,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1483:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 229,
                  "nodeType": "ExpressionStatement",
                  "src": "1483:26:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 231,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6573,
                          "src": "1529:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 232,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1529:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 233,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 181,
                        "src": "1541:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 230,
                      "name": "Mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 112,
                      "src": "1524:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 234,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1524:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 235,
                  "nodeType": "EmitStatement",
                  "src": "1519:30:3"
                }
              ]
            },
            "documentation": null,
            "id": 237,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 164,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 157,
                  "name": "_slug",
                  "nodeType": "VariableDeclaration",
                  "scope": 237,
                  "src": "938:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 156,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "938:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 159,
                  "name": "_template",
                  "nodeType": "VariableDeclaration",
                  "scope": 237,
                  "src": "952:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SaleTemplate_$1739",
                    "typeString": "contract SaleTemplate"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 158,
                    "name": "SaleTemplate",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1739,
                    "src": "952:12:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SaleTemplate_$1739",
                      "typeString": "contract SaleTemplate"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 161,
                  "name": "_bytecode",
                  "nodeType": "VariableDeclaration",
                  "scope": 237,
                  "src": "976:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 160,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "976:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 163,
                  "name": "_args",
                  "nodeType": "VariableDeclaration",
                  "scope": 237,
                  "src": "993:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 162,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "993:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "937:68:3"
            },
            "payable": true,
            "returnParameters": {
              "id": 165,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1021:0:3"
            },
            "scope": 713,
            "src": "924:632:3",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 298,
              "nodeType": "Block",
              "src": "1633:404:3",
              "statements": [
                {
                  "assignments": [
                    245
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 245,
                      "name": "chars",
                      "nodeType": "VariableDeclaration",
                      "scope": 299,
                      "src": "1643:18:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 244,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1643:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 249,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 247,
                        "name": "_slug",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 239,
                        "src": "1670:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 246,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1664:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                        "typeString": "type(bytes storage pointer)"
                      },
                      "typeName": "bytes"
                    },
                    "id": 248,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1664:12:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1643:33:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 251,
                            "name": "chars",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 245,
                            "src": "1694:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1694:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1709:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1694:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "537472696e6720697320656d7074792e",
                        "id": 255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1712:18:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_aeb6d643af0369a6363fb8576af2305f659b71987766fc28e085f59ce3be38a7",
                          "typeString": "literal_string \"String is empty.\""
                        },
                        "value": "String is empty."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_aeb6d643af0369a6363fb8576af2305f659b71987766fc28e085f59ce3be38a7",
                          "typeString": "literal_string \"String is empty.\""
                        }
                      ],
                      "id": 250,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6576,
                        6577
                      ],
                      "referencedDeclaration": 6577,
                      "src": "1686:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1686:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 257,
                  "nodeType": "ExpressionStatement",
                  "src": "1686:45:3"
                },
                {
                  "body": {
                    "id": 295,
                    "nodeType": "Block",
                    "src": "1791:166:3",
                    "statements": [
                      {
                        "assignments": [
                          273
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 273,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 299,
                            "src": "1805:6:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 272,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "1805:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 279,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 275,
                                "name": "chars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 245,
                                "src": "1819:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 277,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 276,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 259,
                                "src": "1825:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1819:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            ],
                            "id": 274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1814:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1814:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1805:23:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 283,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30783631",
                                    "id": 281,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1850:4:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_97_by_1",
                                      "typeString": "int_const 97"
                                    },
                                    "value": "0x61"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 282,
                                    "name": "c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 273,
                                    "src": "1858:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1850:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 286,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 284,
                                    "name": "c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 273,
                                    "src": "1863:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30783761",
                                    "id": 285,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1868:4:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_122_by_1",
                                      "typeString": "int_const 122"
                                    },
                                    "value": "0x7a"
                                  },
                                  "src": "1863:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "1850:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 288,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 273,
                                  "src": "1876:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30783264",
                                  "id": 289,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1881:4:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_45_by_1",
                                    "typeString": "int_const 45"
                                  },
                                  "value": "0x2d"
                                },
                                "src": "1876:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1850:35:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "537472696e67206d75737420636f6e7461696e206f6e6c79206c6f7765726361736520616c70686162657473206f722068797068656e732e",
                              "id": 292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1887:58:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_610502c3a542a8916cca2b81cfe7acb625955df896a89a47d9eb28013858d3a6",
                                "typeString": "literal_string \"String must contain only lowercase alphabets or hyphens.\""
                              },
                              "value": "String must contain only lowercase alphabets or hyphens."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_610502c3a542a8916cca2b81cfe7acb625955df896a89a47d9eb28013858d3a6",
                                "typeString": "literal_string \"String must contain only lowercase alphabets or hyphens.\""
                              }
                            ],
                            "id": 280,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              6576,
                              6577
                            ],
                            "referencedDeclaration": 6577,
                            "src": "1842:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1842:104:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 294,
                        "nodeType": "ExpressionStatement",
                        "src": "1842:104:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 262,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 259,
                      "src": "1758:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 264,
                            "name": "chars",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 245,
                            "src": "1767:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1767:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "3332",
                          "id": 266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1781:2:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          },
                          "value": "32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          }
                        ],
                        "id": 263,
                        "name": "_min",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 712,
                        "src": "1762:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1762:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1758:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 296,
                  "initializationExpression": {
                    "assignments": [
                      259
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 259,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 299,
                        "src": "1746:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 258,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "1746:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 261,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 260,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1755:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1746:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 270,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "1786:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 269,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 259,
                        "src": "1786:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 271,
                    "nodeType": "ExpressionStatement",
                    "src": "1786:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "1741:216:3"
                },
                {
                  "externalReferences": [
                    {
                      "tokenId": {
                        "declaration": 242,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1989:7:3",
                        "valueSize": 1
                      }
                    },
                    {
                      "chars": {
                        "declaration": 245,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2010:5:3",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 297,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    tokenId := mload(add(chars, 32))\n}",
                  "src": "1966:71:3"
                }
              ]
            },
            "documentation": null,
            "id": 299,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "toTokenId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 240,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 239,
                  "name": "_slug",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "1581:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 238,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1581:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1580:14:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 243,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 242,
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "1616:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 241,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1616:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1615:17:3"
            },
            "scope": 713,
            "src": "1562:475:3",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 310,
              "nodeType": "Block",
              "src": "2111:47:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 306,
                      "name": "slugOfTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 139,
                      "src": "2128:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                        "typeString": "mapping(uint256 => string storage ref)"
                      }
                    },
                    "id": 308,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 307,
                      "name": "_tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 301,
                      "src": "2142:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2128:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 305,
                  "id": 309,
                  "nodeType": "Return",
                  "src": "2121:30:3"
                }
              ]
            },
            "documentation": null,
            "id": 311,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "slugOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 302,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 301,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 311,
                  "src": "2059:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 300,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2059:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2058:18:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 304,
                  "name": "slug",
                  "nodeType": "VariableDeclaration",
                  "scope": 311,
                  "src": "2098:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 303,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2098:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2097:13:3"
            },
            "scope": 713,
            "src": "2043:115:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 322,
              "nodeType": "Block",
              "src": "2230:47:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 318,
                      "name": "saleOfTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 135,
                      "src": "2247:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_Sale_$1352_$",
                        "typeString": "mapping(uint256 => contract Sale)"
                      }
                    },
                    "id": 320,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 319,
                      "name": "_tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 313,
                      "src": "2261:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2247:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Sale_$1352",
                      "typeString": "contract Sale"
                    }
                  },
                  "functionReturnParameters": 317,
                  "id": 321,
                  "nodeType": "Return",
                  "src": "2240:30:3"
                }
              ]
            },
            "documentation": null,
            "id": 323,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "saleOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 313,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 323,
                  "src": "2180:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 312,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2180:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2179:18:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 317,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 316,
                  "name": "sale",
                  "nodeType": "VariableDeclaration",
                  "scope": 323,
                  "src": "2219:9:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Sale_$1352",
                    "typeString": "contract Sale"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 315,
                    "name": "Sale",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1352,
                    "src": "2219:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Sale_$1352",
                      "typeString": "contract Sale"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2218:11:3"
            },
            "scope": 713,
            "src": "2164:113:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 400,
              "nodeType": "Block",
              "src": "2419:479:3",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 341,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 334,
                          "name": "rewardedBoostsOfSomeoneOfTokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 145,
                          "src": "2433:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 336,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 335,
                          "name": "_tokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 325,
                          "src": "2466:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2433:42:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 339,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 337,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6573,
                          "src": "2476:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2476:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2433:54:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 340,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2490:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2433:58:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 348,
                  "nodeType": "IfStatement",
                  "src": "2429:131:3",
                  "trueBody": {
                    "id": 347,
                    "nodeType": "Block",
                    "src": "2493:67:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2515:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 343,
                              "name": "rewardEra",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 128,
                              "src": "2518:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 344,
                              "name": "weiUntilNextHalving",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 131,
                              "src": "2529:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 345,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2514:35:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(int_const 0,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 333,
                        "id": 346,
                        "nodeType": "Return",
                        "src": "2507:42:3"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    350
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 350,
                      "name": "sale",
                      "nodeType": "VariableDeclaration",
                      "scope": 401,
                      "src": "2570:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Sale_$1352",
                        "typeString": "contract Sale"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 349,
                        "name": "Sale",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1352,
                        "src": "2570:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Sale_$1352",
                          "typeString": "contract Sale"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 354,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 351,
                      "name": "saleOfTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 135,
                      "src": "2582:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_Sale_$1352_$",
                        "typeString": "mapping(uint256 => contract Sale)"
                      }
                    },
                    "id": 353,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 352,
                      "name": "_tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 325,
                      "src": "2596:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2582:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Sale_$1352",
                      "typeString": "contract Sale"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2570:35:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 362,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 357,
                              "name": "sale",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 350,
                              "src": "2631:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Sale_$1352",
                                "typeString": "contract Sale"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Sale_$1352",
                                "typeString": "contract Sale"
                              }
                            ],
                            "id": 356,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2623:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 358,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2623:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 360,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2648:1:3",
                              "subdenomination": null,
                              "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": 359,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2640:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2640:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2623:27:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 355,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6576,
                        6577
                      ],
                      "referencedDeclaration": 6576,
                      "src": "2615:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2615:36:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 364,
                  "nodeType": "ExpressionStatement",
                  "src": "2615:36:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 366,
                            "name": "sale",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 350,
                            "src": "2669:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Sale_$1352",
                              "typeString": "contract Sale"
                            }
                          },
                          "id": 367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "finished",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1163,
                          "src": "2669:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                            "typeString": "function () view external returns (bool)"
                          }
                        },
                        "id": 368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2669:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 365,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6576,
                        6577
                      ],
                      "referencedDeclaration": 6576,
                      "src": "2661:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2661:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 370,
                  "nodeType": "ExpressionStatement",
                  "src": "2661:24:3"
                },
                {
                  "assignments": [
                    372
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 372,
                      "name": "weiAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 401,
                      "src": "2696:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 371,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2696:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 378,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 375,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6573,
                          "src": "2731:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2731:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 373,
                        "name": "sale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 350,
                        "src": "2716:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Sale_$1352",
                          "typeString": "contract Sale"
                        }
                      },
                      "id": 374,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paymentOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1242,
                      "src": "2716:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2716:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2696:46:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 379,
                          "name": "sale",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 350,
                          "src": "2756:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Sale_$1352",
                            "typeString": "contract Sale"
                          }
                        },
                        "id": 380,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4802,
                        "src": "2756:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                          "typeString": "function () view external returns (address)"
                        }
                      },
                      "id": 381,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2756:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 382,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6573,
                        "src": "2772:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 383,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2772:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2756:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 395,
                  "nodeType": "IfStatement",
                  "src": "2752:100:3",
                  "trueBody": {
                    "id": 394,
                    "nodeType": "Block",
                    "src": "2784:68:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 385,
                            "name": "weiAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 372,
                            "src": "2798:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 388,
                                    "name": "sale",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 350,
                                    "src": "2824:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Sale_$1352",
                                      "typeString": "contract Sale"
                                    }
                                  },
                                  "id": 389,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "weiRaised",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 750,
                                  "src": "2824:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view external returns (uint256)"
                                  }
                                },
                                "id": 390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2824:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 386,
                                "name": "weiAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 372,
                                "src": "2810:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4797,
                              "src": "2810:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2810:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2798:43:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 393,
                        "nodeType": "ExpressionStatement",
                        "src": "2798:43:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 397,
                        "name": "weiAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 372,
                        "src": "2881:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 396,
                      "name": "_weiToBoosts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 695,
                      "src": "2868:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256,uint256,uint256)"
                      }
                    },
                    "id": 398,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2868:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 333,
                  "id": 399,
                  "nodeType": "Return",
                  "src": "2861:30:3"
                }
              ]
            },
            "documentation": null,
            "id": 401,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "claimableBoostsOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 326,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 325,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 401,
                  "src": "2310:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 324,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2310:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2309:18:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 333,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 328,
                  "name": "boosts",
                  "nodeType": "VariableDeclaration",
                  "scope": 401,
                  "src": "2349:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 327,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2349:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 330,
                  "name": "newRewardEra",
                  "nodeType": "VariableDeclaration",
                  "scope": 401,
                  "src": "2365:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 329,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2365:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 332,
                  "name": "newWeiUntilNextHalving",
                  "nodeType": "VariableDeclaration",
                  "scope": 401,
                  "src": "2387:30:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 331,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2387:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2348:70:3"
            },
            "scope": 713,
            "src": "2283:615:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 450,
              "nodeType": "Block",
              "src": "2967:379:3",
              "statements": [
                {
                  "assignments": [
                    409,
                    411,
                    413
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 409,
                      "name": "boosts",
                      "nodeType": "VariableDeclaration",
                      "scope": 451,
                      "src": "2978:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 408,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2978:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 411,
                      "name": "newRewardEra",
                      "nodeType": "VariableDeclaration",
                      "scope": 451,
                      "src": "2994:20:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 410,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2994:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 413,
                      "name": "newWeiUntilNextHalving",
                      "nodeType": "VariableDeclaration",
                      "scope": 451,
                      "src": "3016:30:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 412,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3016:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 417,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 415,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 403,
                        "src": "3068:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 414,
                      "name": "claimableBoostsOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 401,
                      "src": "3050:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256,uint256,uint256)"
                      }
                    },
                    "id": 416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3050:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2977:100:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 420,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 418,
                      "name": "rewardEra",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 128,
                      "src": "3087:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 419,
                      "name": "newRewardEra",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 411,
                      "src": "3099:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3087:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 421,
                  "nodeType": "ExpressionStatement",
                  "src": "3087:24:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 422,
                      "name": "weiUntilNextHalving",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 131,
                      "src": "3121:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 423,
                      "name": "newWeiUntilNextHalving",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 413,
                      "src": "3143:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3121:44:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 425,
                  "nodeType": "ExpressionStatement",
                  "src": "3121:44:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 426,
                      "name": "boosts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 409,
                      "src": "3179:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 427,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3188:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3179:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 438,
                  "nodeType": "IfStatement",
                  "src": "3175:71:3",
                  "trueBody": {
                    "id": 437,
                    "nodeType": "Block",
                    "src": "3191:55:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 432,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6573,
                                "src": "3216:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3216:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 434,
                              "name": "boosts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 409,
                              "src": "3228:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 429,
                              "name": "boost",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 125,
                              "src": "3205:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Boost_$45",
                                "typeString": "contract Boost"
                              }
                            },
                            "id": 431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5175,
                            "src": "3205:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3205:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 436,
                        "nodeType": "ExpressionStatement",
                        "src": "3205:30:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 439,
                          "name": "rewardedBoostsOfSomeoneOfTokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 145,
                          "src": "3255:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 443,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 440,
                          "name": "_tokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 403,
                          "src": "3288:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3255:42:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 444,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 441,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6573,
                          "src": "3298:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3298:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3255:54:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 445,
                      "name": "boosts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 409,
                      "src": "3312:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3255:63:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 447,
                  "nodeType": "ExpressionStatement",
                  "src": "3255:63:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3335:4:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 407,
                  "id": 449,
                  "nodeType": "Return",
                  "src": "3328:11:3"
                }
              ]
            },
            "documentation": null,
            "id": 451,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "claimBoostsOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 404,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 403,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 451,
                  "src": "2927:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 402,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2927:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2926:18:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 407,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 406,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 451,
                  "src": "2961:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 405,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2961:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2960:6:3"
            },
            "scope": 713,
            "src": "2904:442:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 465,
              "nodeType": "Block",
              "src": "3433:78:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 458,
                        "name": "rewardedBoostsOfSomeoneOfTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 145,
                        "src": "3450:32:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                          "typeString": "mapping(uint256 => mapping(address => uint256))"
                        }
                      },
                      "id": 460,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 459,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 453,
                        "src": "3483:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3450:42:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 463,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 461,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6573,
                        "src": "3493:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 462,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3493:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3450:54:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 457,
                  "id": 464,
                  "nodeType": "Return",
                  "src": "3443:61:3"
                }
              ]
            },
            "documentation": null,
            "id": 466,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rewardedBoostsOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 454,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 453,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 466,
                  "src": "3378:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 452,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3378:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3377:18:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 457,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 456,
                  "name": "boosts",
                  "nodeType": "VariableDeclaration",
                  "scope": 466,
                  "src": "3417:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 455,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3417:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3416:16:3"
            },
            "scope": 713,
            "src": "3352:159:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 519,
              "nodeType": "Block",
              "src": "3635:297:3",
              "statements": [
                {
                  "body": {
                    "id": 517,
                    "nodeType": "Block",
                    "src": "3686:240:3",
                    "statements": [
                      {
                        "assignments": [
                          487
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 487,
                            "name": "tokenId",
                            "nodeType": "VariableDeclaration",
                            "scope": 520,
                            "src": "3700:15:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 486,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3700:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 491,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 489,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 476,
                              "src": "3731:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 488,
                            "name": "tokenByIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              6330
                            ],
                            "referencedDeclaration": 6330,
                            "src": "3718:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3718:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3700:33:3"
                      },
                      {
                        "assignments": [
                          493,
                          495,
                          497
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 493,
                            "name": "b",
                            "nodeType": "VariableDeclaration",
                            "scope": 520,
                            "src": "3748:9:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 492,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3748:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 495,
                            "name": "r",
                            "nodeType": "VariableDeclaration",
                            "scope": 520,
                            "src": "3759:9:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 494,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3759:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 497,
                            "name": "w",
                            "nodeType": "VariableDeclaration",
                            "scope": 520,
                            "src": "3770:9:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 496,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3770:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 501,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 499,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 487,
                              "src": "3801:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 498,
                            "name": "claimableBoostsOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 401,
                            "src": "3783:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3783:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3747:62:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 502,
                            "name": "boosts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 469,
                            "src": "3823:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 505,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 493,
                                "src": "3843:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 503,
                                "name": "boosts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 469,
                                "src": "3832:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4797,
                              "src": "3832:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 506,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3832:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3823:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 508,
                        "nodeType": "ExpressionStatement",
                        "src": "3823:22:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 509,
                            "name": "newRewardEra",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 471,
                            "src": "3859:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 510,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 495,
                            "src": "3874:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3859:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 512,
                        "nodeType": "ExpressionStatement",
                        "src": "3859:16:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 513,
                            "name": "newWeiUntilNextHalving",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 473,
                            "src": "3889:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 514,
                            "name": "w",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 497,
                            "src": "3914:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3889:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 516,
                        "nodeType": "ExpressionStatement",
                        "src": "3889:26:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 479,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 476,
                      "src": "3662:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 480,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          6311
                        ],
                        "referencedDeclaration": 6311,
                        "src": "3666:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 481,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3666:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3662:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 518,
                  "initializationExpression": {
                    "assignments": [
                      476
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 476,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 520,
                        "src": "3650:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 475,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3650:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 478,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 477,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3659:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3650:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 484,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "3681:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 483,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 476,
                        "src": "3681:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 485,
                    "nodeType": "ExpressionStatement",
                    "src": "3681:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "3645:281:3"
                }
              ]
            },
            "documentation": null,
            "id": 520,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "claimableBoosts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 467,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3541:2:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 474,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 469,
                  "name": "boosts",
                  "nodeType": "VariableDeclaration",
                  "scope": 520,
                  "src": "3565:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 468,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3565:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 471,
                  "name": "newRewardEra",
                  "nodeType": "VariableDeclaration",
                  "scope": 520,
                  "src": "3581:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 470,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3581:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 473,
                  "name": "newWeiUntilNextHalving",
                  "nodeType": "VariableDeclaration",
                  "scope": 520,
                  "src": "3603:30:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 472,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3603:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3564:70:3"
            },
            "scope": 713,
            "src": "3517:415:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 550,
              "nodeType": "Block",
              "src": "3983:172:3",
              "statements": [
                {
                  "body": {
                    "id": 546,
                    "nodeType": "Block",
                    "src": "4034:94:3",
                    "statements": [
                      {
                        "assignments": [
                          537
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 537,
                            "name": "tokenId",
                            "nodeType": "VariableDeclaration",
                            "scope": 551,
                            "src": "4048:15:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 536,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4048:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 541,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 539,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 526,
                              "src": "4079:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 538,
                            "name": "tokenByIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              6330
                            ],
                            "referencedDeclaration": 6330,
                            "src": "4066:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 540,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4066:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4048:33:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 543,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 537,
                              "src": "4109:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 542,
                            "name": "claimBoostsOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 451,
                            "src": "4095:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256) returns (bool)"
                            }
                          },
                          "id": 544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4095:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 545,
                        "nodeType": "ExpressionStatement",
                        "src": "4095:22:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 529,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 526,
                      "src": "4010:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 530,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          6311
                        ],
                        "referencedDeclaration": 6311,
                        "src": "4014:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 531,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4014:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4010:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 547,
                  "initializationExpression": {
                    "assignments": [
                      526
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 526,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 551,
                        "src": "3998:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 525,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3998:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 528,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 527,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4007:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3998:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 534,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4029:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 533,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 526,
                        "src": "4029:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 535,
                    "nodeType": "ExpressionStatement",
                    "src": "4029:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "3993:135:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 548,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4144:4:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 524,
                  "id": 549,
                  "nodeType": "Return",
                  "src": "4137:11:3"
                }
              ]
            },
            "documentation": null,
            "id": 551,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "claimBoosts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 521,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3958:2:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 524,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 523,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 551,
                  "src": "3977:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 522,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3977:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3976:6:3"
            },
            "scope": 713,
            "src": "3938:217:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 584,
              "nodeType": "Block",
              "src": "4224:175:3",
              "statements": [
                {
                  "body": {
                    "id": 582,
                    "nodeType": "Block",
                    "src": "4275:118:3",
                    "statements": [
                      {
                        "assignments": [
                          568
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 568,
                            "name": "tokenId",
                            "nodeType": "VariableDeclaration",
                            "scope": 585,
                            "src": "4289:15:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 567,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4289:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 572,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 570,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 557,
                              "src": "4320:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 569,
                            "name": "tokenByIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              6330
                            ],
                            "referencedDeclaration": 6330,
                            "src": "4307:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4307:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4289:33:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 573,
                            "name": "boosts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 554,
                            "src": "4336:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 577,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 568,
                                    "src": "4373:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 576,
                                  "name": "rewardedBoostsOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 466,
                                  "src": "4356:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) view returns (uint256)"
                                  }
                                },
                                "id": 578,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4356:25:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 574,
                                "name": "boosts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 554,
                                "src": "4345:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4797,
                              "src": "4345:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 579,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4345:37:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4336:46:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 581,
                        "nodeType": "ExpressionStatement",
                        "src": "4336:46:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 563,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 560,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 557,
                      "src": "4251:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 561,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          6311
                        ],
                        "referencedDeclaration": 6311,
                        "src": "4255:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 562,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4255:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4251:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 583,
                  "initializationExpression": {
                    "assignments": [
                      557
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 557,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 585,
                        "src": "4239:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 556,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4239:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 559,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 558,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4248:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4239:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 565,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4270:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 564,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 557,
                        "src": "4270:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 566,
                    "nodeType": "ExpressionStatement",
                    "src": "4270:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "4234:159:3"
                }
              ]
            },
            "documentation": null,
            "id": 585,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rewardedBoosts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 552,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4184:2:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 554,
                  "name": "boosts",
                  "nodeType": "VariableDeclaration",
                  "scope": 585,
                  "src": "4208:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4208:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4207:16:3"
            },
            "scope": 713,
            "src": "4161:238:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 598,
              "nodeType": "Block",
              "src": "4469:94:3",
              "statements": [
                {
                  "assignments": [
                    591,
                    null,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 591,
                      "name": "boosts",
                      "nodeType": "VariableDeclaration",
                      "scope": 599,
                      "src": "4480:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 590,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4480:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null,
                    null
                  ],
                  "id": 595,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 593,
                        "name": "weiUntilNextHalving",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 131,
                        "src": "4513:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 592,
                      "name": "_weiToBoosts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 695,
                      "src": "4500:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256,uint256,uint256)"
                      }
                    },
                    "id": 594,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4500:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4479:54:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 596,
                    "name": "boosts",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 591,
                    "src": "4550:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 589,
                  "id": 597,
                  "nodeType": "Return",
                  "src": "4543:13:3"
                }
              ]
            },
            "documentation": null,
            "id": 599,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "boostsUntilNextHalving",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 586,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4436:2:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 589,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 588,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 599,
                  "src": "4460:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 587,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4460:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4459:9:3"
            },
            "scope": 713,
            "src": "4405:158:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 694,
              "nodeType": "Block",
              "src": "4703:705:3",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 612,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 610,
                      "name": "rewardEra",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 128,
                      "src": "4717:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 611,
                      "name": "MAX_HALVING_ERA",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 123,
                      "src": "4729:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4717:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 619,
                  "nodeType": "IfStatement",
                  "src": "4713:100:3",
                  "trueBody": {
                    "id": 618,
                    "nodeType": "Block",
                    "src": "4746:67:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4768:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 614,
                              "name": "rewardEra",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 128,
                              "src": "4771:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 615,
                              "name": "weiUntilNextHalving",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 131,
                              "src": "4782:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 616,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4767:35:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(int_const 0,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 609,
                        "id": 617,
                        "nodeType": "Return",
                        "src": "4760:42:3"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    621
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 621,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 695,
                      "src": "4822:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 620,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4822:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 623,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 622,
                    "name": "_weiAmount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 601,
                    "src": "4839:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4822:27:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 626,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 624,
                      "name": "boosts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 604,
                      "src": "4859:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 625,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4868:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4859:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 627,
                  "nodeType": "ExpressionStatement",
                  "src": "4859:10:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 628,
                      "name": "newRewardEra",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 606,
                      "src": "4879:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 629,
                      "name": "rewardEra",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 128,
                      "src": "4894:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4879:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 631,
                  "nodeType": "ExpressionStatement",
                  "src": "4879:24:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 632,
                      "name": "newWeiUntilNextHalving",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 608,
                      "src": "4913:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 633,
                      "name": "weiUntilNextHalving",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 131,
                      "src": "4938:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4913:44:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 635,
                  "nodeType": "ExpressionStatement",
                  "src": "4913:44:3"
                },
                {
                  "body": {
                    "id": 692,
                    "nodeType": "Block",
                    "src": "4986:416:3",
                    "statements": [
                      {
                        "assignments": [
                          640
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 640,
                            "name": "a",
                            "nodeType": "VariableDeclaration",
                            "scope": 695,
                            "src": "5000:9:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 639,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5000:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 645,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 642,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 621,
                              "src": "5017:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 643,
                              "name": "weiUntilNextHalving",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 131,
                              "src": "5025:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 641,
                            "name": "_min",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 712,
                            "src": "5012:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5012:33:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5000:45:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 646,
                            "name": "boosts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 604,
                            "src": "5059:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 660,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 651,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5085:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "31303030",
                                          "id": 658,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5130:4:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000_by_1",
                                            "typeString": "int_const 1000"
                                          },
                                          "value": "1000"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_1000_by_1",
                                            "typeString": "int_const 1000"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 654,
                                                  "name": "newRewardEra",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 606,
                                                  "src": "5111:12:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 652,
                                                  "name": "MAX_HALVING_ERA",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 123,
                                                  "src": "5091:15:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 653,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4773,
                                                "src": "5091:19:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 655,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "5091:33:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 656,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5090:35:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 657,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "div",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4753,
                                        "src": "5090:39:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 659,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5090:45:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5085:50:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 649,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 640,
                                    "src": "5079:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 650,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4739,
                                  "src": "5079:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 661,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5079:57:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 647,
                                "name": "boosts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 604,
                                "src": "5068:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4797,
                              "src": "5068:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5068:69:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5059:78:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 664,
                        "nodeType": "ExpressionStatement",
                        "src": "5059:78:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 665,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 621,
                            "src": "5151:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 668,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 640,
                                "src": "5171:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 666,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 621,
                                "src": "5160:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4773,
                              "src": "5160:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5160:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5151:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 671,
                        "nodeType": "ExpressionStatement",
                        "src": "5151:22:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 672,
                            "name": "newWeiUntilNextHalving",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 608,
                            "src": "5187:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 675,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 640,
                                "src": "5239:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 673,
                                "name": "newWeiUntilNextHalving",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 608,
                                "src": "5212:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4773,
                              "src": "5212:26:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5212:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5187:54:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 678,
                        "nodeType": "ExpressionStatement",
                        "src": "5187:54:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 679,
                            "name": "newWeiUntilNextHalving",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 608,
                            "src": "5259:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 680,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5285:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5259:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 691,
                        "nodeType": "IfStatement",
                        "src": "5255:137:3",
                        "trueBody": {
                          "id": 690,
                          "nodeType": "Block",
                          "src": "5288:104:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 684,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 682,
                                  "name": "newWeiUntilNextHalving",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 608,
                                  "src": "5306:22:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 683,
                                  "name": "HALVING_WEI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 120,
                                  "src": "5331:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5306:36:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 685,
                              "nodeType": "ExpressionStatement",
                              "src": "5306:36:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 688,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 686,
                                  "name": "newRewardEra",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 606,
                                  "src": "5360:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 687,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5376:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "5360:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 689,
                              "nodeType": "ExpressionStatement",
                              "src": "5360:17:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 636,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 621,
                      "src": "4974:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 637,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4983:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4974:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 693,
                  "nodeType": "WhileStatement",
                  "src": "4967:435:3"
                }
              ]
            },
            "documentation": null,
            "id": 695,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_weiToBoosts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 601,
                  "name": "_weiAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "4591:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 600,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4591:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4590:20:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 609,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 604,
                  "name": "boosts",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "4633:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 603,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4633:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 606,
                  "name": "newRewardEra",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "4649:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 605,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4649:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 608,
                  "name": "newWeiUntilNextHalving",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "4671:30:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 607,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4671:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4632:70:3"
            },
            "scope": 713,
            "src": "4569:839:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 711,
              "nodeType": "Block",
              "src": "5483:41:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 706,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 704,
                        "name": "_a",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 697,
                        "src": "5500:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 705,
                        "name": "_b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 699,
                        "src": "5505:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5500:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "id": 708,
                      "name": "_b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 699,
                      "src": "5515:2:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 709,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "5500:17:3",
                    "trueExpression": {
                      "argumentTypes": null,
                      "id": 707,
                      "name": "_a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 697,
                      "src": "5510:2:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 703,
                  "id": 710,
                  "nodeType": "Return",
                  "src": "5493:24:3"
                }
              ]
            },
            "documentation": null,
            "id": 712,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_min",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 697,
                  "name": "_a",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "5428:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 696,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5428:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 699,
                  "name": "_b",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "5440:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 698,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5440:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5427:24:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 703,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 702,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "5474:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 701,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5474:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5473:9:3"
            },
            "scope": 713,
            "src": "5414:110:3",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 714,
        "src": "305:5221:3"
      }
    ],
    "src": "0:5527:3"
  },
  "legacyAST": {
    "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/Raiser.sol",
    "exportedSymbols": {
      "Raiser": [
        713
      ]
    },
    "id": 714,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 91,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:3"
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/token/ERC721/ERC721Token.sol",
        "file": "zeppelin-solidity/contracts/token/ERC721/ERC721Token.sol",
        "id": 92,
        "nodeType": "ImportDirective",
        "scope": 714,
        "sourceUnit": 6559,
        "src": "26:66:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/token/ERC20/ERC20.sol",
        "file": "zeppelin-solidity/contracts/token/ERC20/ERC20.sol",
        "id": 93,
        "nodeType": "ImportDirective",
        "scope": 714,
        "sourceUnit": 5058,
        "src": "93:59:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/ownership/Ownable.sol",
        "file": "zeppelin-solidity/contracts/ownership/Ownable.sol",
        "id": 94,
        "nodeType": "ImportDirective",
        "scope": 714,
        "sourceUnit": 4885,
        "src": "153:59:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/Boost.sol",
        "file": "./Boost.sol",
        "id": 95,
        "nodeType": "ImportDirective",
        "scope": 714,
        "sourceUnit": 46,
        "src": "213:21:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/sale/Sale.sol",
        "file": "./sale/Sale.sol",
        "id": 96,
        "nodeType": "ImportDirective",
        "scope": 714,
        "sourceUnit": 1353,
        "src": "235:25:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity/contracts/template/sale/SaleTemplate.sol",
        "file": "./template/sale/SaleTemplate.sol",
        "id": 97,
        "nodeType": "ImportDirective",
        "scope": 714,
        "sourceUnit": 1740,
        "src": "261:42:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": [
              {
                "argumentTypes": null,
                "hexValue": "526169736572",
                "id": 99,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "string",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "336:8:3",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_stringliteral_46ae19143603f05591b93e45011d8e48b3ac3cead0c5382c5e6440d3dad87d21",
                  "typeString": "literal_string \"Raiser\""
                },
                "value": "Raiser"
              },
              {
                "argumentTypes": null,
                "hexValue": "524149",
                "id": 100,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "string",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "346:5:3",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_stringliteral_c8ec019e548841114c7185bbedf896d71ab0e7123130f4e29856964b35f51eef",
                  "typeString": "literal_string \"RAI\""
                },
                "value": "RAI"
              }
            ],
            "baseName": {
              "contractScope": null,
              "id": 98,
              "name": "ERC721Token",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6558,
              "src": "324:11:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC721Token_$6558",
                "typeString": "contract ERC721Token"
              }
            },
            "id": 101,
            "nodeType": "InheritanceSpecifier",
            "src": "324:28:3"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 102,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4884,
              "src": "354:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$4884",
                "typeString": "contract Ownable"
              }
            },
            "id": 103,
            "nodeType": "InheritanceSpecifier",
            "src": "354:7:3"
          }
        ],
        "contractDependencies": [
          4653,
          4704,
          4884,
          5469,
          5489,
          5496,
          5618,
          6166,
          6558
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 713,
        "linearizedBaseContracts": [
          713,
          4884,
          6558,
          5496,
          5489,
          5469,
          6166,
          5618,
          4704,
          4653
        ],
        "name": "Raiser",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 106,
            "libraryName": {
              "contractScope": null,
              "id": 104,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4798,
              "src": "374:8:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$4798",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "368:27:3",
            "typeName": {
              "id": 105,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "387:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 112,
            "name": "Mint",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 111,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 108,
                  "indexed": true,
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 112,
                  "src": "412:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 107,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "412:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 110,
                  "indexed": false,
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 112,
                  "src": "432:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 109,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "432:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "411:37:3"
            },
            "src": "401:48:3"
          },
          {
            "constant": true,
            "id": 120,
            "name": "HALVING_WEI",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "455:59:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 113,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "455:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_rational_21000000000000000000000000_by_1",
                "typeString": "int_const 21000000000000000000000000"
              },
              "id": 119,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "hexValue": "3231303030303030",
                "id": 114,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "493:8:3",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_21000000_by_1",
                  "typeString": "int_const 21000000"
                },
                "value": "21000000"
              },
              "nodeType": "BinaryOperation",
              "operator": "*",
              "rightExpression": {
                "argumentTypes": null,
                "components": [
                  {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "id": 117,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "hexValue": "3130",
                      "id": 115,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "505:2:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3138",
                      "id": 116,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "511:2:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_18_by_1",
                        "typeString": "int_const 18"
                      },
                      "value": "18"
                    },
                    "src": "505:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    }
                  }
                ],
                "id": 118,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "504:10:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1000000000000000000_by_1",
                  "typeString": "int_const 1000000000000000000"
                }
              },
              "src": "493:21:3",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_21000000000000000000000000_by_1",
                "typeString": "int_const 21000000000000000000000000"
              }
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 123,
            "name": "MAX_HALVING_ERA",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "520:44:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 121,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "520:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3230",
              "id": 122,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "562:2:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_20_by_1",
                "typeString": "int_const 20"
              },
              "value": "20"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 125,
            "name": "boost",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "571:18:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Boost_$45",
              "typeString": "contract Boost"
            },
            "typeName": {
              "contractScope": null,
              "id": 124,
              "name": "Boost",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 45,
              "src": "571:5:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Boost_$45",
                "typeString": "contract Boost"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 128,
            "name": "rewardEra",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "595:28:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 126,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "595:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30",
              "id": 127,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "622:1:3",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 131,
            "name": "weiUntilNextHalving",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "630:41:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 129,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "630:7:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "id": 130,
              "name": "HALVING_WEI",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 120,
              "src": "660:11:3",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 135,
            "name": "saleOfTokenId",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "677:38:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_Sale_$1352_$",
              "typeString": "mapping(uint256 => contract Sale)"
            },
            "typeName": {
              "id": 134,
              "keyType": {
                "id": 132,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "685:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "677:24:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_Sale_$1352_$",
                "typeString": "mapping(uint256 => contract Sale)"
              },
              "valueType": {
                "contractScope": null,
                "id": 133,
                "name": "Sale",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 1352,
                "src": "696:4:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_contract$_Sale_$1352",
                  "typeString": "contract Sale"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 139,
            "name": "slugOfTokenId",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "721:40:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
              "typeString": "mapping(uint256 => string)"
            },
            "typeName": {
              "id": 138,
              "keyType": {
                "id": 136,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "729:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "721:26:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                "typeString": "mapping(uint256 => string)"
              },
              "valueType": {
                "id": 137,
                "name": "string",
                "nodeType": "ElementaryTypeName",
                "src": "740:6:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 145,
            "name": "rewardedBoostsOfSomeoneOfTokenId",
            "nodeType": "VariableDeclaration",
            "scope": 713,
            "src": "767:80:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
              "typeString": "mapping(uint256 => mapping(address => uint256))"
            },
            "typeName": {
              "id": 144,
              "keyType": {
                "id": 140,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "775:7:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "767:47:3",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                "typeString": "mapping(uint256 => mapping(address => uint256))"
              },
              "valueType": {
                "id": 143,
                "keyType": {
                  "id": 141,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "794:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "786:27:3",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "valueType": {
                  "id": 142,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "805:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 154,
              "nodeType": "Block",
              "src": "887:31:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 150,
                      "name": "boost",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 125,
                      "src": "897:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Boost_$45",
                        "typeString": "contract Boost"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 151,
                      "name": "_boost",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 147,
                      "src": "905:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Boost_$45",
                        "typeString": "contract Boost"
                      }
                    },
                    "src": "897:14:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Boost_$45",
                      "typeString": "contract Boost"
                    }
                  },
                  "id": 153,
                  "nodeType": "ExpressionStatement",
                  "src": "897:14:3"
                }
              ]
            },
            "documentation": null,
            "id": 155,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 148,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 147,
                  "name": "_boost",
                  "nodeType": "VariableDeclaration",
                  "scope": 155,
                  "src": "866:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Boost_$45",
                    "typeString": "contract Boost"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 146,
                    "name": "Boost",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 45,
                    "src": "866:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Boost_$45",
                      "typeString": "contract Boost"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "865:14:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 149,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "887:0:3"
            },
            "scope": 713,
            "src": "854:64:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 236,
              "nodeType": "Block",
              "src": "1021:535:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30783031666663396137",
                            "id": 169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1097:10:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_33540519_by_1",
                              "typeString": "int_const 33540519"
                            },
                            "value": "0x01ffc9a7"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_33540519_by_1",
                              "typeString": "int_const 33540519"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 167,
                            "name": "_template",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 159,
                            "src": "1069:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SaleTemplate_$1739",
                              "typeString": "contract SaleTemplate"
                            }
                          },
                          "id": 168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "supportsInterface",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4685,
                          "src": "1069:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes4_$returns$_t_bool_$",
                            "typeString": "function (bytes4) view external returns (bool)"
                          }
                        },
                        "id": 170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1069:39:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 166,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6576,
                        6577
                      ],
                      "referencedDeclaration": 6576,
                      "src": "1061:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 171,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1061:48:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 172,
                  "nodeType": "ExpressionStatement",
                  "src": "1061:48:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30786434383434356666",
                            "id": 176,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1187:10:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3565438463_by_1",
                              "typeString": "int_const 3565438463"
                            },
                            "value": "0xd48445ff"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_3565438463_by_1",
                              "typeString": "int_const 3565438463"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 174,
                            "name": "_template",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 159,
                            "src": "1159:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SaleTemplate_$1739",
                              "typeString": "contract SaleTemplate"
                            }
                          },
                          "id": 175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "supportsInterface",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4685,
                          "src": "1159:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes4_$returns$_t_bool_$",
                            "typeString": "function (bytes4) view external returns (bool)"
                          }
                        },
                        "id": 177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1159:39:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 173,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6576,
                        6577
                      ],
                      "referencedDeclaration": 6576,
                      "src": "1151:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1151:48:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 179,
                  "nodeType": "ExpressionStatement",
                  "src": "1151:48:3"
                },
                {
                  "assignments": [
                    181
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 181,
                      "name": "tokenId",
                      "nodeType": "VariableDeclaration",
                      "scope": 237,
                      "src": "1210:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 180,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1210:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 185,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 183,
                        "name": "_slug",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 157,
                        "src": "1238:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 182,
                      "name": "toTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 299,
                      "src": "1228:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (string memory) pure returns (uint256)"
                      }
                    },
                    "id": 184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1228:16:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1210:34:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 195,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 188,
                                "name": "saleOfTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 135,
                                "src": "1270:13:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_Sale_$1352_$",
                                  "typeString": "mapping(uint256 => contract Sale)"
                                }
                              },
                              "id": 190,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 189,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 181,
                                "src": "1284:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1270:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Sale_$1352",
                                "typeString": "contract Sale"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Sale_$1352",
                                "typeString": "contract Sale"
                              }
                            ],
                            "id": 187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1262:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1262:31:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1305:1:3",
                              "subdenomination": null,
                              "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": 192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1297:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1297:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1262:45:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 186,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6576,
                        6577
                      ],
                      "referencedDeclaration": 6576,
                      "src": "1254:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1254:54:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 197,
                  "nodeType": "ExpressionStatement",
                  "src": "1254:54:3"
                },
                {
                  "assignments": [
                    199
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 199,
                      "name": "sale",
                      "nodeType": "VariableDeclaration",
                      "scope": 237,
                      "src": "1319:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Sale_$1352",
                        "typeString": "contract Sale"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 198,
                        "name": "Sale",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1352,
                        "src": "1319:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Sale_$1352",
                          "typeString": "contract Sale"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 211,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 207,
                            "name": "_bytecode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 161,
                            "src": "1375:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 208,
                            "name": "_args",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 163,
                            "src": "1386:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 204,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6573,
                                "src": "1364:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1364:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 201,
                                "name": "_template",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 159,
                                "src": "1336:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_SaleTemplate_$1739",
                                  "typeString": "contract SaleTemplate"
                                }
                              },
                              "id": 202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "instantiate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1738,
                              "src": "1336:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_address_$",
                                "typeString": "function (bytes memory,bytes memory) payable external returns (address)"
                              }
                            },
                            "id": 203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1336:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_setvalue_nonpayable$_t_uint256_$returns$_t_function_external_payable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_address_$value_$",
                              "typeString": "function (uint256) returns (function (bytes memory,bytes memory) payable external returns (address))"
                            }
                          },
                          "id": 206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1336:38:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_address_$value",
                            "typeString": "function (bytes memory,bytes memory) payable external returns (address)"
                          }
                        },
                        "id": 209,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1336:56:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 200,
                      "name": "Sale",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1352,
                      "src": "1331:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Sale_$1352_$",
                        "typeString": "type(contract Sale)"
                      }
                    },
                    "id": 210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1331:62:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Sale_$1352",
                      "typeString": "contract Sale"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1319:74:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 212,
                        "name": "saleOfTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 135,
                        "src": "1403:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_Sale_$1352_$",
                          "typeString": "mapping(uint256 => contract Sale)"
                        }
                      },
                      "id": 214,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 213,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 181,
                        "src": "1417:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1403:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Sale_$1352",
                        "typeString": "contract Sale"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 215,
                      "name": "sale",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 199,
                      "src": "1428:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Sale_$1352",
                        "typeString": "contract Sale"
                      }
                    },
                    "src": "1403:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Sale_$1352",
                      "typeString": "contract Sale"
                    }
                  },
                  "id": 217,
                  "nodeType": "ExpressionStatement",
                  "src": "1403:29:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 218,
                        "name": "slugOfTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 139,
                        "src": "1442:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                          "typeString": "mapping(uint256 => string storage ref)"
                        }
                      },
                      "id": 220,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 219,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 181,
                        "src": "1456:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1442:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 221,
                      "name": "_slug",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 157,
                      "src": "1467:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1442:30:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 223,
                  "nodeType": "ExpressionStatement",
                  "src": "1442:30:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 225,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6573,
                          "src": "1489:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1489:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 227,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 181,
                        "src": "1501:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 224,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6478
                      ],
                      "referencedDeclaration": 6478,
                      "src": "1483:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 228,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1483:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 229,
                  "nodeType": "ExpressionStatement",
                  "src": "1483:26:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 231,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6573,
                          "src": "1529:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 232,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1529:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 233,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 181,
                        "src": "1541:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 230,
                      "name": "Mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 112,
                      "src": "1524:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 234,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1524:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 235,
                  "nodeType": "EmitStatement",
                  "src": "1519:30:3"
                }
              ]
            },
            "documentation": null,
            "id": 237,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 164,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 157,
                  "name": "_slug",
                  "nodeType": "VariableDeclaration",
                  "scope": 237,
                  "src": "938:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 156,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "938:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 159,
                  "name": "_template",
                  "nodeType": "VariableDeclaration",
                  "scope": 237,
                  "src": "952:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SaleTemplate_$1739",
                    "typeString": "contract SaleTemplate"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 158,
                    "name": "SaleTemplate",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1739,
                    "src": "952:12:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SaleTemplate_$1739",
                      "typeString": "contract SaleTemplate"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 161,
                  "name": "_bytecode",
                  "nodeType": "VariableDeclaration",
                  "scope": 237,
                  "src": "976:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 160,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "976:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 163,
                  "name": "_args",
                  "nodeType": "VariableDeclaration",
                  "scope": 237,
                  "src": "993:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 162,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "993:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "937:68:3"
            },
            "payable": true,
            "returnParameters": {
              "id": 165,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1021:0:3"
            },
            "scope": 713,
            "src": "924:632:3",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 298,
              "nodeType": "Block",
              "src": "1633:404:3",
              "statements": [
                {
                  "assignments": [
                    245
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 245,
                      "name": "chars",
                      "nodeType": "VariableDeclaration",
                      "scope": 299,
                      "src": "1643:18:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 244,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1643:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 249,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 247,
                        "name": "_slug",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 239,
                        "src": "1670:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 246,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1664:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                        "typeString": "type(bytes storage pointer)"
                      },
                      "typeName": "bytes"
                    },
                    "id": 248,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1664:12:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1643:33:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 251,
                            "name": "chars",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 245,
                            "src": "1694:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1694:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1709:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1694:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "537472696e6720697320656d7074792e",
                        "id": 255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1712:18:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_aeb6d643af0369a6363fb8576af2305f659b71987766fc28e085f59ce3be38a7",
                          "typeString": "literal_string \"String is empty.\""
                        },
                        "value": "String is empty."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_aeb6d643af0369a6363fb8576af2305f659b71987766fc28e085f59ce3be38a7",
                          "typeString": "literal_string \"String is empty.\""
                        }
                      ],
                      "id": 250,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6576,
                        6577
                      ],
                      "referencedDeclaration": 6577,
                      "src": "1686:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1686:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 257,
                  "nodeType": "ExpressionStatement",
                  "src": "1686:45:3"
                },
                {
                  "body": {
                    "id": 295,
                    "nodeType": "Block",
                    "src": "1791:166:3",
                    "statements": [
                      {
                        "assignments": [
                          273
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 273,
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 299,
                            "src": "1805:6:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 272,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "1805:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 279,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 275,
                                "name": "chars",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 245,
                                "src": "1819:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 277,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 276,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 259,
                                "src": "1825:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1819:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            ],
                            "id": 274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1814:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1814:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1805:23:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 283,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30783631",
                                    "id": 281,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1850:4:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_97_by_1",
                                      "typeString": "int_const 97"
                                    },
                                    "value": "0x61"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 282,
                                    "name": "c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 273,
                                    "src": "1858:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1850:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 286,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 284,
                                    "name": "c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 273,
                                    "src": "1863:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30783761",
                                    "id": 285,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1868:4:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_122_by_1",
                                      "typeString": "int_const 122"
                                    },
                                    "value": "0x7a"
                                  },
                                  "src": "1863:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "1850:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 288,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 273,
                                  "src": "1876:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30783264",
                                  "id": 289,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1881:4:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_45_by_1",
                                    "typeString": "int_const 45"
                                  },
                                  "value": "0x2d"
                                },
                                "src": "1876:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1850:35:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "537472696e67206d75737420636f6e7461696e206f6e6c79206c6f7765726361736520616c70686162657473206f722068797068656e732e",
                              "id": 292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1887:58:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_610502c3a542a8916cca2b81cfe7acb625955df896a89a47d9eb28013858d3a6",
                                "typeString": "literal_string \"String must contain only lowercase alphabets or hyphens.\""
                              },
                              "value": "String must contain only lowercase alphabets or hyphens."
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_610502c3a542a8916cca2b81cfe7acb625955df896a89a47d9eb28013858d3a6",
                                "typeString": "literal_string \"String must contain only lowercase alphabets or hyphens.\""
                              }
                            ],
                            "id": 280,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              6576,
                              6577
                            ],
                            "referencedDeclaration": 6577,
                            "src": "1842:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1842:104:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 294,
                        "nodeType": "ExpressionStatement",
                        "src": "1842:104:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 262,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 259,
                      "src": "1758:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 264,
                            "name": "chars",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 245,
                            "src": "1767:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1767:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "3332",
                          "id": 266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1781:2:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          },
                          "value": "32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          }
                        ],
                        "id": 263,
                        "name": "_min",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 712,
                        "src": "1762:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1762:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1758:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 296,
                  "initializationExpression": {
                    "assignments": [
                      259
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 259,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 299,
                        "src": "1746:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 258,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "1746:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 261,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 260,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1755:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1746:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 270,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "1786:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 269,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 259,
                        "src": "1786:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 271,
                    "nodeType": "ExpressionStatement",
                    "src": "1786:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "1741:216:3"
                },
                {
                  "externalReferences": [
                    {
                      "tokenId": {
                        "declaration": 242,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "1989:7:3",
                        "valueSize": 1
                      }
                    },
                    {
                      "chars": {
                        "declaration": 245,
                        "isOffset": false,
                        "isSlot": false,
                        "src": "2010:5:3",
                        "valueSize": 1
                      }
                    }
                  ],
                  "id": 297,
                  "nodeType": "InlineAssembly",
                  "operations": "{\n    tokenId := mload(add(chars, 32))\n}",
                  "src": "1966:71:3"
                }
              ]
            },
            "documentation": null,
            "id": 299,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "toTokenId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 240,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 239,
                  "name": "_slug",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "1581:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 238,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1581:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1580:14:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 243,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 242,
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 299,
                  "src": "1616:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 241,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1616:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1615:17:3"
            },
            "scope": 713,
            "src": "1562:475:3",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 310,
              "nodeType": "Block",
              "src": "2111:47:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 306,
                      "name": "slugOfTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 139,
                      "src": "2128:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$",
                        "typeString": "mapping(uint256 => string storage ref)"
                      }
                    },
                    "id": 308,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 307,
                      "name": "_tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 301,
                      "src": "2142:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2128:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 305,
                  "id": 309,
                  "nodeType": "Return",
                  "src": "2121:30:3"
                }
              ]
            },
            "documentation": null,
            "id": 311,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "slugOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 302,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 301,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 311,
                  "src": "2059:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 300,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2059:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2058:18:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 304,
                  "name": "slug",
                  "nodeType": "VariableDeclaration",
                  "scope": 311,
                  "src": "2098:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 303,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2098:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2097:13:3"
            },
            "scope": 713,
            "src": "2043:115:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 322,
              "nodeType": "Block",
              "src": "2230:47:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 318,
                      "name": "saleOfTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 135,
                      "src": "2247:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_Sale_$1352_$",
                        "typeString": "mapping(uint256 => contract Sale)"
                      }
                    },
                    "id": 320,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 319,
                      "name": "_tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 313,
                      "src": "2261:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2247:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Sale_$1352",
                      "typeString": "contract Sale"
                    }
                  },
                  "functionReturnParameters": 317,
                  "id": 321,
                  "nodeType": "Return",
                  "src": "2240:30:3"
                }
              ]
            },
            "documentation": null,
            "id": 323,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "saleOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 313,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 323,
                  "src": "2180:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 312,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2180:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2179:18:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 317,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 316,
                  "name": "sale",
                  "nodeType": "VariableDeclaration",
                  "scope": 323,
                  "src": "2219:9:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Sale_$1352",
                    "typeString": "contract Sale"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 315,
                    "name": "Sale",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1352,
                    "src": "2219:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Sale_$1352",
                      "typeString": "contract Sale"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2218:11:3"
            },
            "scope": 713,
            "src": "2164:113:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 400,
              "nodeType": "Block",
              "src": "2419:479:3",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 341,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 334,
                          "name": "rewardedBoostsOfSomeoneOfTokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 145,
                          "src": "2433:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 336,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 335,
                          "name": "_tokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 325,
                          "src": "2466:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2433:42:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 339,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 337,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6573,
                          "src": "2476:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2476:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2433:54:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 340,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2490:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2433:58:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 348,
                  "nodeType": "IfStatement",
                  "src": "2429:131:3",
                  "trueBody": {
                    "id": 347,
                    "nodeType": "Block",
                    "src": "2493:67:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2515:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 343,
                              "name": "rewardEra",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 128,
                              "src": "2518:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 344,
                              "name": "weiUntilNextHalving",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 131,
                              "src": "2529:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 345,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2514:35:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(int_const 0,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 333,
                        "id": 346,
                        "nodeType": "Return",
                        "src": "2507:42:3"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    350
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 350,
                      "name": "sale",
                      "nodeType": "VariableDeclaration",
                      "scope": 401,
                      "src": "2570:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Sale_$1352",
                        "typeString": "contract Sale"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 349,
                        "name": "Sale",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1352,
                        "src": "2570:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Sale_$1352",
                          "typeString": "contract Sale"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 354,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 351,
                      "name": "saleOfTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 135,
                      "src": "2582:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_contract$_Sale_$1352_$",
                        "typeString": "mapping(uint256 => contract Sale)"
                      }
                    },
                    "id": 353,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 352,
                      "name": "_tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 325,
                      "src": "2596:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2582:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Sale_$1352",
                      "typeString": "contract Sale"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2570:35:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 362,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 357,
                              "name": "sale",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 350,
                              "src": "2631:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Sale_$1352",
                                "typeString": "contract Sale"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Sale_$1352",
                                "typeString": "contract Sale"
                              }
                            ],
                            "id": 356,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2623:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 358,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2623:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 360,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2648:1:3",
                              "subdenomination": null,
                              "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": 359,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2640:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2640:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2623:27:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 355,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6576,
                        6577
                      ],
                      "referencedDeclaration": 6576,
                      "src": "2615:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2615:36:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 364,
                  "nodeType": "ExpressionStatement",
                  "src": "2615:36:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 366,
                            "name": "sale",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 350,
                            "src": "2669:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Sale_$1352",
                              "typeString": "contract Sale"
                            }
                          },
                          "id": 367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "finished",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1163,
                          "src": "2669:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                            "typeString": "function () view external returns (bool)"
                          }
                        },
                        "id": 368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2669:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 365,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6576,
                        6577
                      ],
                      "referencedDeclaration": 6576,
                      "src": "2661:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2661:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 370,
                  "nodeType": "ExpressionStatement",
                  "src": "2661:24:3"
                },
                {
                  "assignments": [
                    372
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 372,
                      "name": "weiAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 401,
                      "src": "2696:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 371,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2696:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 378,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 375,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6573,
                          "src": "2731:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2731:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 373,
                        "name": "sale",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 350,
                        "src": "2716:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Sale_$1352",
                          "typeString": "contract Sale"
                        }
                      },
                      "id": 374,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paymentOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1242,
                      "src": "2716:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2716:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2696:46:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 379,
                          "name": "sale",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 350,
                          "src": "2756:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Sale_$1352",
                            "typeString": "contract Sale"
                          }
                        },
                        "id": 380,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4802,
                        "src": "2756:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                          "typeString": "function () view external returns (address)"
                        }
                      },
                      "id": 381,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2756:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 382,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6573,
                        "src": "2772:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 383,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2772:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2756:26:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 395,
                  "nodeType": "IfStatement",
                  "src": "2752:100:3",
                  "trueBody": {
                    "id": 394,
                    "nodeType": "Block",
                    "src": "2784:68:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 385,
                            "name": "weiAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 372,
                            "src": "2798:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 388,
                                    "name": "sale",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 350,
                                    "src": "2824:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Sale_$1352",
                                      "typeString": "contract Sale"
                                    }
                                  },
                                  "id": 389,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "weiRaised",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 750,
                                  "src": "2824:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view external returns (uint256)"
                                  }
                                },
                                "id": 390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2824:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 386,
                                "name": "weiAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 372,
                                "src": "2810:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4797,
                              "src": "2810:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2810:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2798:43:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 393,
                        "nodeType": "ExpressionStatement",
                        "src": "2798:43:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 397,
                        "name": "weiAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 372,
                        "src": "2881:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 396,
                      "name": "_weiToBoosts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 695,
                      "src": "2868:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256,uint256,uint256)"
                      }
                    },
                    "id": 398,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2868:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 333,
                  "id": 399,
                  "nodeType": "Return",
                  "src": "2861:30:3"
                }
              ]
            },
            "documentation": null,
            "id": 401,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "claimableBoostsOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 326,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 325,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 401,
                  "src": "2310:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 324,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2310:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2309:18:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 333,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 328,
                  "name": "boosts",
                  "nodeType": "VariableDeclaration",
                  "scope": 401,
                  "src": "2349:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 327,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2349:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 330,
                  "name": "newRewardEra",
                  "nodeType": "VariableDeclaration",
                  "scope": 401,
                  "src": "2365:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 329,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2365:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 332,
                  "name": "newWeiUntilNextHalving",
                  "nodeType": "VariableDeclaration",
                  "scope": 401,
                  "src": "2387:30:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 331,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2387:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2348:70:3"
            },
            "scope": 713,
            "src": "2283:615:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 450,
              "nodeType": "Block",
              "src": "2967:379:3",
              "statements": [
                {
                  "assignments": [
                    409,
                    411,
                    413
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 409,
                      "name": "boosts",
                      "nodeType": "VariableDeclaration",
                      "scope": 451,
                      "src": "2978:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 408,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2978:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 411,
                      "name": "newRewardEra",
                      "nodeType": "VariableDeclaration",
                      "scope": 451,
                      "src": "2994:20:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 410,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2994:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 413,
                      "name": "newWeiUntilNextHalving",
                      "nodeType": "VariableDeclaration",
                      "scope": 451,
                      "src": "3016:30:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 412,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3016:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 417,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 415,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 403,
                        "src": "3068:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 414,
                      "name": "claimableBoostsOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 401,
                      "src": "3050:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256,uint256,uint256)"
                      }
                    },
                    "id": 416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3050:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2977:100:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 420,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 418,
                      "name": "rewardEra",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 128,
                      "src": "3087:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 419,
                      "name": "newRewardEra",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 411,
                      "src": "3099:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3087:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 421,
                  "nodeType": "ExpressionStatement",
                  "src": "3087:24:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 422,
                      "name": "weiUntilNextHalving",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 131,
                      "src": "3121:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 423,
                      "name": "newWeiUntilNextHalving",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 413,
                      "src": "3143:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3121:44:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 425,
                  "nodeType": "ExpressionStatement",
                  "src": "3121:44:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 426,
                      "name": "boosts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 409,
                      "src": "3179:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 427,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3188:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3179:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 438,
                  "nodeType": "IfStatement",
                  "src": "3175:71:3",
                  "trueBody": {
                    "id": 437,
                    "nodeType": "Block",
                    "src": "3191:55:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 432,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6573,
                                "src": "3216:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3216:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 434,
                              "name": "boosts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 409,
                              "src": "3228:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 429,
                              "name": "boost",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 125,
                              "src": "3205:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Boost_$45",
                                "typeString": "contract Boost"
                              }
                            },
                            "id": 431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5175,
                            "src": "3205:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3205:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 436,
                        "nodeType": "ExpressionStatement",
                        "src": "3205:30:3"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 439,
                          "name": "rewardedBoostsOfSomeoneOfTokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 145,
                          "src": "3255:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 443,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 440,
                          "name": "_tokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 403,
                          "src": "3288:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3255:42:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 444,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 441,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6573,
                          "src": "3298:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3298:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3255:54:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 445,
                      "name": "boosts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 409,
                      "src": "3312:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3255:63:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 447,
                  "nodeType": "ExpressionStatement",
                  "src": "3255:63:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3335:4:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 407,
                  "id": 449,
                  "nodeType": "Return",
                  "src": "3328:11:3"
                }
              ]
            },
            "documentation": null,
            "id": 451,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "claimBoostsOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 404,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 403,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 451,
                  "src": "2927:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 402,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2927:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2926:18:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 407,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 406,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 451,
                  "src": "2961:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 405,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2961:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2960:6:3"
            },
            "scope": 713,
            "src": "2904:442:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 465,
              "nodeType": "Block",
              "src": "3433:78:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 458,
                        "name": "rewardedBoostsOfSomeoneOfTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 145,
                        "src": "3450:32:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                          "typeString": "mapping(uint256 => mapping(address => uint256))"
                        }
                      },
                      "id": 460,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 459,
                        "name": "_tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 453,
                        "src": "3483:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3450:42:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 463,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 461,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6573,
                        "src": "3493:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 462,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3493:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3450:54:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 457,
                  "id": 464,
                  "nodeType": "Return",
                  "src": "3443:61:3"
                }
              ]
            },
            "documentation": null,
            "id": 466,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rewardedBoostsOf",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 454,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 453,
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 466,
                  "src": "3378:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 452,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3378:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3377:18:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 457,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 456,
                  "name": "boosts",
                  "nodeType": "VariableDeclaration",
                  "scope": 466,
                  "src": "3417:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 455,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3417:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3416:16:3"
            },
            "scope": 713,
            "src": "3352:159:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 519,
              "nodeType": "Block",
              "src": "3635:297:3",
              "statements": [
                {
                  "body": {
                    "id": 517,
                    "nodeType": "Block",
                    "src": "3686:240:3",
                    "statements": [
                      {
                        "assignments": [
                          487
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 487,
                            "name": "tokenId",
                            "nodeType": "VariableDeclaration",
                            "scope": 520,
                            "src": "3700:15:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 486,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3700:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 491,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 489,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 476,
                              "src": "3731:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 488,
                            "name": "tokenByIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              6330
                            ],
                            "referencedDeclaration": 6330,
                            "src": "3718:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3718:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3700:33:3"
                      },
                      {
                        "assignments": [
                          493,
                          495,
                          497
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 493,
                            "name": "b",
                            "nodeType": "VariableDeclaration",
                            "scope": 520,
                            "src": "3748:9:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 492,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3748:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 495,
                            "name": "r",
                            "nodeType": "VariableDeclaration",
                            "scope": 520,
                            "src": "3759:9:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 494,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3759:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 497,
                            "name": "w",
                            "nodeType": "VariableDeclaration",
                            "scope": 520,
                            "src": "3770:9:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 496,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3770:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 501,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 499,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 487,
                              "src": "3801:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 498,
                            "name": "claimableBoostsOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 401,
                            "src": "3783:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256,uint256,uint256)"
                            }
                          },
                          "id": 500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3783:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3747:62:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 502,
                            "name": "boosts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 469,
                            "src": "3823:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 505,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 493,
                                "src": "3843:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 503,
                                "name": "boosts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 469,
                                "src": "3832:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4797,
                              "src": "3832:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 506,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3832:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3823:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 508,
                        "nodeType": "ExpressionStatement",
                        "src": "3823:22:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 509,
                            "name": "newRewardEra",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 471,
                            "src": "3859:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 510,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 495,
                            "src": "3874:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3859:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 512,
                        "nodeType": "ExpressionStatement",
                        "src": "3859:16:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 513,
                            "name": "newWeiUntilNextHalving",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 473,
                            "src": "3889:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 514,
                            "name": "w",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 497,
                            "src": "3914:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3889:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 516,
                        "nodeType": "ExpressionStatement",
                        "src": "3889:26:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 479,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 476,
                      "src": "3662:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 480,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          6311
                        ],
                        "referencedDeclaration": 6311,
                        "src": "3666:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 481,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3666:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3662:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 518,
                  "initializationExpression": {
                    "assignments": [
                      476
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 476,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 520,
                        "src": "3650:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 475,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3650:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 478,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 477,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3659:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3650:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 484,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "3681:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 483,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 476,
                        "src": "3681:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 485,
                    "nodeType": "ExpressionStatement",
                    "src": "3681:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "3645:281:3"
                }
              ]
            },
            "documentation": null,
            "id": 520,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "claimableBoosts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 467,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3541:2:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 474,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 469,
                  "name": "boosts",
                  "nodeType": "VariableDeclaration",
                  "scope": 520,
                  "src": "3565:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 468,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3565:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 471,
                  "name": "newRewardEra",
                  "nodeType": "VariableDeclaration",
                  "scope": 520,
                  "src": "3581:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 470,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3581:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 473,
                  "name": "newWeiUntilNextHalving",
                  "nodeType": "VariableDeclaration",
                  "scope": 520,
                  "src": "3603:30:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 472,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3603:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3564:70:3"
            },
            "scope": 713,
            "src": "3517:415:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 550,
              "nodeType": "Block",
              "src": "3983:172:3",
              "statements": [
                {
                  "body": {
                    "id": 546,
                    "nodeType": "Block",
                    "src": "4034:94:3",
                    "statements": [
                      {
                        "assignments": [
                          537
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 537,
                            "name": "tokenId",
                            "nodeType": "VariableDeclaration",
                            "scope": 551,
                            "src": "4048:15:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 536,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4048:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 541,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 539,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 526,
                              "src": "4079:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 538,
                            "name": "tokenByIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              6330
                            ],
                            "referencedDeclaration": 6330,
                            "src": "4066:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 540,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4066:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4048:33:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 543,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 537,
                              "src": "4109:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 542,
                            "name": "claimBoostsOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 451,
                            "src": "4095:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256) returns (bool)"
                            }
                          },
                          "id": 544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4095:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 545,
                        "nodeType": "ExpressionStatement",
                        "src": "4095:22:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 529,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 526,
                      "src": "4010:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 530,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          6311
                        ],
                        "referencedDeclaration": 6311,
                        "src": "4014:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 531,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4014:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4010:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 547,
                  "initializationExpression": {
                    "assignments": [
                      526
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 526,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 551,
                        "src": "3998:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 525,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3998:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 528,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 527,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4007:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3998:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 534,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4029:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 533,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 526,
                        "src": "4029:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 535,
                    "nodeType": "ExpressionStatement",
                    "src": "4029:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "3993:135:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 548,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4144:4:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 524,
                  "id": 549,
                  "nodeType": "Return",
                  "src": "4137:11:3"
                }
              ]
            },
            "documentation": null,
            "id": 551,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "claimBoosts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 521,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3958:2:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 524,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 523,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 551,
                  "src": "3977:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 522,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3977:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3976:6:3"
            },
            "scope": 713,
            "src": "3938:217:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 584,
              "nodeType": "Block",
              "src": "4224:175:3",
              "statements": [
                {
                  "body": {
                    "id": 582,
                    "nodeType": "Block",
                    "src": "4275:118:3",
                    "statements": [
                      {
                        "assignments": [
                          568
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 568,
                            "name": "tokenId",
                            "nodeType": "VariableDeclaration",
                            "scope": 585,
                            "src": "4289:15:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 567,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4289:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 572,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 570,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 557,
                              "src": "4320:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 569,
                            "name": "tokenByIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              6330
                            ],
                            "referencedDeclaration": 6330,
                            "src": "4307:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4307:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4289:33:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 573,
                            "name": "boosts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 554,
                            "src": "4336:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 577,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 568,
                                    "src": "4373:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 576,
                                  "name": "rewardedBoostsOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 466,
                                  "src": "4356:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) view returns (uint256)"
                                  }
                                },
                                "id": 578,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4356:25:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 574,
                                "name": "boosts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 554,
                                "src": "4345:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4797,
                              "src": "4345:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 579,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4345:37:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4336:46:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 581,
                        "nodeType": "ExpressionStatement",
                        "src": "4336:46:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 563,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 560,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 557,
                      "src": "4251:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 561,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          6311
                        ],
                        "referencedDeclaration": 6311,
                        "src": "4255:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 562,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4255:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4251:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 583,
                  "initializationExpression": {
                    "assignments": [
                      557
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 557,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 585,
                        "src": "4239:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 556,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4239:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 559,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 558,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4248:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4239:10:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 565,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4270:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 564,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 557,
                        "src": "4270:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 566,
                    "nodeType": "ExpressionStatement",
                    "src": "4270:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "4234:159:3"
                }
              ]
            },
            "documentation": null,
            "id": 585,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "rewardedBoosts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 552,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4184:2:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 554,
                  "name": "boosts",
                  "nodeType": "VariableDeclaration",
                  "scope": 585,
                  "src": "4208:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4208:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4207:16:3"
            },
            "scope": 713,
            "src": "4161:238:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 598,
              "nodeType": "Block",
              "src": "4469:94:3",
              "statements": [
                {
                  "assignments": [
                    591,
                    null,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 591,
                      "name": "boosts",
                      "nodeType": "VariableDeclaration",
                      "scope": 599,
                      "src": "4480:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 590,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4480:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null,
                    null
                  ],
                  "id": 595,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 593,
                        "name": "weiUntilNextHalving",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 131,
                        "src": "4513:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 592,
                      "name": "_weiToBoosts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 695,
                      "src": "4500:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (uint256) view returns (uint256,uint256,uint256)"
                      }
                    },
                    "id": 594,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4500:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4479:54:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 596,
                    "name": "boosts",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 591,
                    "src": "4550:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 589,
                  "id": 597,
                  "nodeType": "Return",
                  "src": "4543:13:3"
                }
              ]
            },
            "documentation": null,
            "id": 599,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "boostsUntilNextHalving",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 586,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4436:2:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 589,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 588,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 599,
                  "src": "4460:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 587,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4460:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4459:9:3"
            },
            "scope": 713,
            "src": "4405:158:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 694,
              "nodeType": "Block",
              "src": "4703:705:3",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 612,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 610,
                      "name": "rewardEra",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 128,
                      "src": "4717:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 611,
                      "name": "MAX_HALVING_ERA",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 123,
                      "src": "4729:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4717:27:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 619,
                  "nodeType": "IfStatement",
                  "src": "4713:100:3",
                  "trueBody": {
                    "id": 618,
                    "nodeType": "Block",
                    "src": "4746:67:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4768:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 614,
                              "name": "rewardEra",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 128,
                              "src": "4771:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 615,
                              "name": "weiUntilNextHalving",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 131,
                              "src": "4782:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 616,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4767:35:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(int_const 0,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 609,
                        "id": 617,
                        "nodeType": "Return",
                        "src": "4760:42:3"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    621
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 621,
                      "name": "amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 695,
                      "src": "4822:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 620,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4822:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 623,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 622,
                    "name": "_weiAmount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 601,
                    "src": "4839:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4822:27:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 626,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 624,
                      "name": "boosts",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 604,
                      "src": "4859:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 625,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4868:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4859:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 627,
                  "nodeType": "ExpressionStatement",
                  "src": "4859:10:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 628,
                      "name": "newRewardEra",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 606,
                      "src": "4879:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 629,
                      "name": "rewardEra",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 128,
                      "src": "4894:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4879:24:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 631,
                  "nodeType": "ExpressionStatement",
                  "src": "4879:24:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 632,
                      "name": "newWeiUntilNextHalving",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 608,
                      "src": "4913:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 633,
                      "name": "weiUntilNextHalving",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 131,
                      "src": "4938:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4913:44:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 635,
                  "nodeType": "ExpressionStatement",
                  "src": "4913:44:3"
                },
                {
                  "body": {
                    "id": 692,
                    "nodeType": "Block",
                    "src": "4986:416:3",
                    "statements": [
                      {
                        "assignments": [
                          640
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 640,
                            "name": "a",
                            "nodeType": "VariableDeclaration",
                            "scope": 695,
                            "src": "5000:9:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 639,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5000:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 645,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 642,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 621,
                              "src": "5017:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 643,
                              "name": "weiUntilNextHalving",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 131,
                              "src": "5025:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 641,
                            "name": "_min",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 712,
                            "src": "5012:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5012:33:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5000:45:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 646,
                            "name": "boosts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 604,
                            "src": "5059:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 660,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 651,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5085:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "**",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "31303030",
                                          "id": 658,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5130:4:3",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000_by_1",
                                            "typeString": "int_const 1000"
                                          },
                                          "value": "1000"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_1000_by_1",
                                            "typeString": "int_const 1000"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "components": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 654,
                                                  "name": "newRewardEra",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 606,
                                                  "src": "5111:12:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 652,
                                                  "name": "MAX_HALVING_ERA",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 123,
                                                  "src": "5091:15:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 653,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4773,
                                                "src": "5091:19:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 655,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "5091:33:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 656,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5090:35:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 657,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "div",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4753,
                                        "src": "5090:39:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 659,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5090:45:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5085:50:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 649,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 640,
                                    "src": "5079:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 650,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mul",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4739,
                                  "src": "5079:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 661,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5079:57:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 647,
                                "name": "boosts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 604,
                                "src": "5068:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4797,
                              "src": "5068:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5068:69:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5059:78:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 664,
                        "nodeType": "ExpressionStatement",
                        "src": "5059:78:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 665,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 621,
                            "src": "5151:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 668,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 640,
                                "src": "5171:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 666,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 621,
                                "src": "5160:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4773,
                              "src": "5160:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5160:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5151:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 671,
                        "nodeType": "ExpressionStatement",
                        "src": "5151:22:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 672,
                            "name": "newWeiUntilNextHalving",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 608,
                            "src": "5187:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 675,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 640,
                                "src": "5239:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 673,
                                "name": "newWeiUntilNextHalving",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 608,
                                "src": "5212:22:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4773,
                              "src": "5212:26:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5212:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5187:54:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 678,
                        "nodeType": "ExpressionStatement",
                        "src": "5187:54:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 679,
                            "name": "newWeiUntilNextHalving",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 608,
                            "src": "5259:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 680,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5285:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5259:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 691,
                        "nodeType": "IfStatement",
                        "src": "5255:137:3",
                        "trueBody": {
                          "id": 690,
                          "nodeType": "Block",
                          "src": "5288:104:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 684,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 682,
                                  "name": "newWeiUntilNextHalving",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 608,
                                  "src": "5306:22:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 683,
                                  "name": "HALVING_WEI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 120,
                                  "src": "5331:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5306:36:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 685,
                              "nodeType": "ExpressionStatement",
                              "src": "5306:36:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 688,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 686,
                                  "name": "newRewardEra",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 606,
                                  "src": "5360:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 687,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5376:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "5360:17:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 689,
                              "nodeType": "ExpressionStatement",
                              "src": "5360:17:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 636,
                      "name": "amount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 621,
                      "src": "4974:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 637,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4983:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4974:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 693,
                  "nodeType": "WhileStatement",
                  "src": "4967:435:3"
                }
              ]
            },
            "documentation": null,
            "id": 695,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_weiToBoosts",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 601,
                  "name": "_weiAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "4591:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 600,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4591:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4590:20:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 609,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 604,
                  "name": "boosts",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "4633:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 603,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4633:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 606,
                  "name": "newRewardEra",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "4649:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 605,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4649:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 608,
                  "name": "newWeiUntilNextHalving",
                  "nodeType": "VariableDeclaration",
                  "scope": 695,
                  "src": "4671:30:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 607,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4671:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4632:70:3"
            },
            "scope": 713,
            "src": "4569:839:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 711,
              "nodeType": "Block",
              "src": "5483:41:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 706,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 704,
                        "name": "_a",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 697,
                        "src": "5500:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 705,
                        "name": "_b",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 699,
                        "src": "5505:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5500:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "id": 708,
                      "name": "_b",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 699,
                      "src": "5515:2:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 709,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "5500:17:3",
                    "trueExpression": {
                      "argumentTypes": null,
                      "id": 707,
                      "name": "_a",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 697,
                      "src": "5510:2:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 703,
                  "id": 710,
                  "nodeType": "Return",
                  "src": "5493:24:3"
                }
              ]
            },
            "documentation": null,
            "id": 712,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "_min",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 697,
                  "name": "_a",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "5428:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 696,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5428:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 699,
                  "name": "_b",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "5440:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 698,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5440:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5427:24:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 703,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 702,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 712,
                  "src": "5474:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 701,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5474:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5473:9:3"
            },
            "scope": 713,
            "src": "5414:110:3",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 714,
        "src": "305:5221:3"
      }
    ],
    "src": "0:5527:3"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {
    "1": {
      "events": {},
      "links": {},
      "address": "0x16093acd98380bcf3621977ec0f06575ecadc32a",
      "transactionHash": "0x95daf06972f8c87f1d6ad6919612397afd682a44aec2d0f650f5ed499ff07f72"
    },
    "3": {
      "events": {},
      "links": {},
      "address": "0xfdc90195b8b125f72e5789805f6b9da8bd03c1fb",
      "transactionHash": "0x4cd392cd14a0235ea121e0072a0dbff00952d18023c1341a480e0f1fc5bfa9f0"
    }
  },
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-10-31T09:02:05.428Z"
}