{
  "contractName": "PreSaleSTO",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "endTime",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "tokensSold",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "PRE_SALE_ADMIN",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "takeFee",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "investors",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "polyToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "startTime",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_tokenContract",
          "type": "address"
        }
      ],
      "name": "reclaimERC20",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "name": "_fundsAmount",
          "type": "uint256"
        }
      ],
      "name": "verifyInvestment",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "pausedTime",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "securityToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "polyRaised",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "etherRaised",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "FEE_ADMIN",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "investorCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "name": "fundRaiseType",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_securityToken",
          "type": "address"
        },
        {
          "name": "_polyAddress",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_investor",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "TokensAllocated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_timestammp",
          "type": "uint256"
        }
      ],
      "name": "Pause",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Unpause",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_endTime",
          "type": "uint256"
        }
      ],
      "name": "configure",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitFunction",
      "outputs": [
        {
          "name": "",
          "type": "bytes4"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRaisedEther",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRaisedPOLY",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getNumberInvestors",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getTokensSold",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getPermissions",
      "outputs": [
        {
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_investor",
          "type": "address"
        },
        {
          "name": "_amount",
          "type": "uint256"
        },
        {
          "name": "_etherContributed",
          "type": "uint256"
        },
        {
          "name": "_polyContributed",
          "type": "uint256"
        }
      ],
      "name": "allocateTokens",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_investors",
          "type": "address[]"
        },
        {
          "name": "_amounts",
          "type": "uint256[]"
        },
        {
          "name": "_etherContributed",
          "type": "uint256[]"
        },
        {
          "name": "_polyContributed",
          "type": "uint256[]"
        }
      ],
      "name": "allocateTokensMulti",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526002805460a060020a60ff021916905534801561002057600080fd5b50604051604080611a4783398101604052805160209091015160018054600160a060020a03938416600160a060020a03199182161790915560008054821633179055600280549390921692169190911790556119c6806100816000396000f30060806040526004361061015b5763ffffffff60e060020a6000350416631613ec9d81146101605780631903fe4f146101aa5780631eb25e0a146102ac5780633197cbb6146102c457806335ff3a51146102eb57806338c59de9146103005780633f4ba83a14610315578063518ab2a81461032a57806351eea7751461033f5780635c975abb146103545780635f7619a41461037d5780636f7bc9be146103955780636faa22a5146103b657806378e97925146103e75780638456cb59146103fc5780638905fd4f146104115780639a903ca714610432578063a3fb8f151461045c578063a412f87c14610471578063b2cca39d14610495578063b84dfbd2146104aa578063be16338c146104bf578063c3a07df6146104d4578063c45a015514610539578063cd72ab691461054e578063d70afa9614610563578063d7e64c0014610578578063eda524bc1461058d578063ee7c0db0146105a8575b600080fd5b34801561016c57600080fd5b506101756105bd565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b3480156101b657600080fd5b50604080516020600480358082013583810280860185019096528085526102aa95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506105f29650505050505050565b005b3480156102b857600080fd5b506102aa6004356109aa565b3480156102d057600080fd5b506102d9610a68565b60408051918252519081900360200190f35b3480156102f757600080fd5b506102d9610a6e565b34801561030c57600080fd5b506102d9610a74565b34801561032157600080fd5b506102aa610a7a565b34801561033657600080fd5b506102d9610b62565b34801561034b57600080fd5b506102d9610b68565b34801561036057600080fd5b50610369610b7a565b604080519115158252519081900360200190f35b34801561038957600080fd5b50610369600435610b9b565b3480156103a157600080fd5b506102d9600160a060020a0360043516610eda565b3480156103c257600080fd5b506103cb610eec565b60408051600160a060020a039092168252519081900360200190f35b3480156103f357600080fd5b506102d9610efb565b34801561040857600080fd5b506102aa610f01565b34801561041d57600080fd5b506102aa600160a060020a0360043516610ff5565b34801561043e57600080fd5b506102aa600160a060020a0360043516602435604435606435611223565b34801561046857600080fd5b506102d9611652565b34801561047d57600080fd5b50610369600160a060020a0360043516602435611658565b3480156104a157600080fd5b506102d96116fc565b3480156104b657600080fd5b506103cb611702565b3480156104cb57600080fd5b506102d9611711565b3480156104e057600080fd5b506104e9611717565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561052557818101518382015260200161050d565b505050509050019250505060405180910390f35b34801561054557600080fd5b506103cb611769565b34801561055a57600080fd5b506102d9611778565b34801561056f57600080fd5b506102d961177e565b34801561058457600080fd5b506102d96117a2565b34801561059957600080fd5b5061036960ff600435166117a8565b3480156105b457600080fd5b506102d96117bd565b604080517f636f6e6669677572652875696e743235362900000000000000000000000000008152905190819003601201902090565b600060008051602061197b833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561065957600080fd5b505af115801561066d573d6000803e3d6000fd5b505050506040513d602081101561068357600080fd5b505160005433600160a060020a0392831681149450911614905081806106a65750805b8061074c5750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561071f57600080fd5b505af1158015610733573d6000803e3d6000fd5b505050506040513d602081101561074957600080fd5b50515b15156107a2576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b8651885114610821576040805160e560020a62461bcd02815260206004820152602560248201527f4d69732d6d6174636820696e20746865206c656e677468206f6620746865206160448201527f7272617973000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b84518651146108a0576040805160e560020a62461bcd02815260206004820152602560248201527f4d69732d6d6174636820696e20746865206c656e677468206f6620746865206160448201527f7272617973000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b875186511461091f576040805160e560020a62461bcd02815260206004820152602560248201527f4d69732d6d6174636820696e20746865206c656e677468206f6620746865206160448201527f7272617973000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600093505b87518410156109a057610995888581518110151561093e57fe5b90602001906020020151888681518110151561095657fe5b90602001906020020151888781518110151561096e57fe5b90602001906020020151888881518110151561098657fe5b90602001906020020151611223565b600190930192610924565b5050505050505050565b600054600160a060020a03163314610a0c576040805160e560020a62461bcd02815260206004820152601560248201527f53656e646572206973206e6f7420666163746f72790000000000000000000000604482015290519081900360640190fd5b801515610a63576040805160e560020a62461bcd02815260206004820152601760248201527f656e6454696d652073686f756c64206e6f742062652030000000000000000000604482015290519081900360640190fd5b600555565b60055481565b60095490565b60085490565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610acd57600080fd5b505af1158015610ae1573d6000803e3d6000fd5b505050506040513d6020811015610af757600080fd5b5051600160a060020a03163314610b58576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b610b606117c3565b565b600b5481565b60008051602061197b83398151915281565b60025474010000000000000000000000000000000000000000900460ff1681565b60007f4645455f41444d494e0000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610c1457600080fd5b505af1158015610c28573d6000803e3d6000fd5b505050506040513d6020811015610c3e57600080fd5b505160005433600160a060020a039283168114945091161490508180610c615750805b80610d075750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015610cda57600080fd5b505af1158015610cee573d6000803e3d6000fd5b505050506040513d6020811015610d0457600080fd5b50515b1515610d5d576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b60025460008054604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600160a060020a03948516946323b872dd94309490911692638da5cb5b9260048083019360209383900390910190829087803b158015610dcc57600080fd5b505af1158015610de0573d6000803e3d6000fd5b505050506040513d6020811015610df657600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152604482018990525160648083019260209291908290030181600087803b158015610e4d57600080fd5b505af1158015610e61573d6000803e3d6000fd5b505050506040513d6020811015610e7757600080fd5b50511515610ecf576040805160e560020a62461bcd02815260206004820152601260248201527f556e61626c6520746f2074616b65206665650000000000000000000000000000604482015290519081900360640190fd5b506001949350505050565b60076020526000908152604090205481565b600254600160a060020a031681565b60045481565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b505050506040513d6020811015610f7e57600080fd5b5051600160a060020a03163314610fdf576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b6005544210610fed57600080fd5b610b6061188a565b600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561104b57600080fd5b505af115801561105f573d6000803e3d6000fd5b505050506040513d602081101561107557600080fd5b5051600160a060020a031633146110d6576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831615156110eb57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561114f57600080fd5b505af1158015611163573d6000803e3d6000fd5b505050506040513d602081101561117957600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051919250600160a060020a0384169163a9059cbb916044808201926020929091908290030181600087803b1580156111e757600080fd5b505af11580156111fb573d6000803e3d6000fd5b505050506040513d602081101561121157600080fd5b5051151561121e57600080fd5b505050565b60008051602061197b833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561128857600080fd5b505af115801561129c573d6000803e3d6000fd5b505050506040513d60208110156112b257600080fd5b505160005433600160a060020a0392831681149450911614905081806112d55750805b8061137b5750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561134e57600080fd5b505af1158015611362573d6000803e3d6000fd5b505050506040513d602081101561137857600080fd5b50515b15156113d1576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b600554421115611451576040805160e560020a62461bcd02815260206004820152602960248201527f43757272656e742074696d652073686f756c64206c657373207468616e20746860448201527f6520656e6454696d650000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600086116114cf576040805160e560020a62461bcd02815260206004820152603160248201527f4e6f2e206f6620746f6b656e732070726f76696465642073686f756c6420626560448201527f206772656174657220746865207a65726f000000000000000000000000000000606482015290519081900360840190fd5b600154604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a9052915191909216916340c10f199160448083019260209291908290030181600087803b15801561153e57600080fd5b505af1158015611552573d6000803e3d6000fd5b505050506040513d602081101561156857600080fd5b5050600160a060020a038716600090815260076020526040902054611593908763ffffffff61196716565b600160a060020a0388166000908152600760205260409020556008546115c090600163ffffffff61196716565b6008556009546115d6908663ffffffff61196716565b600955600a546115ec908563ffffffff61196716565b600a55600b54611602908763ffffffff61196716565b600b5560408051600160a060020a03891681526020810188905281517f3b87361b8a201c697d51aaa7a509f6dfb3870db9e5c5501d22d3e9fae858f725929181900390910190a150505050505050565b600a5490565b600254604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015230602483015291516000938593169163dd62ed3e91604480830192602092919082900301818887803b1580156116c757600080fd5b505af11580156116db573d6000803e3d6000fd5b505050506040513d60208110156116f157600080fd5b505110159392505050565b60065481565b600154600160a060020a031681565b600a5481565b6040805160018082528183019092526060918291906020808301908038833901905050905060008051602061197b83398151915281600081518110151561175a57fe5b60209081029091010152905090565b600054600160a060020a031681565b60095481565b7f4645455f41444d494e000000000000000000000000000000000000000000000081565b60085481565b60036020526000908152604090205460ff1681565b600b5490565b60025474010000000000000000000000000000000000000000900460ff161515611837576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e7472616374206973206e6f742070617573656400000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191690556040805142815290517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b60025474010000000000000000000000000000000000000000900460ff16156118fd576040805160e560020a62461bcd02815260206004820152601260248201527f436f6e7472616374206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b6002805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790556040805142815290517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a1565b8181018281101561197457fe5b9291505056005052455f53414c455f41444d494e000000000000000000000000000000000000a165627a7a72305820a275328811e3bbb8ddf3ae79ff7b19a84f3680cd6441bd95c82d46ae76a6e7f70029",
  "deployedBytecode": "0x60806040526004361061015b5763ffffffff60e060020a6000350416631613ec9d81146101605780631903fe4f146101aa5780631eb25e0a146102ac5780633197cbb6146102c457806335ff3a51146102eb57806338c59de9146103005780633f4ba83a14610315578063518ab2a81461032a57806351eea7751461033f5780635c975abb146103545780635f7619a41461037d5780636f7bc9be146103955780636faa22a5146103b657806378e97925146103e75780638456cb59146103fc5780638905fd4f146104115780639a903ca714610432578063a3fb8f151461045c578063a412f87c14610471578063b2cca39d14610495578063b84dfbd2146104aa578063be16338c146104bf578063c3a07df6146104d4578063c45a015514610539578063cd72ab691461054e578063d70afa9614610563578063d7e64c0014610578578063eda524bc1461058d578063ee7c0db0146105a8575b600080fd5b34801561016c57600080fd5b506101756105bd565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b3480156101b657600080fd5b50604080516020600480358082013583810280860185019096528085526102aa95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506105f29650505050505050565b005b3480156102b857600080fd5b506102aa6004356109aa565b3480156102d057600080fd5b506102d9610a68565b60408051918252519081900360200190f35b3480156102f757600080fd5b506102d9610a6e565b34801561030c57600080fd5b506102d9610a74565b34801561032157600080fd5b506102aa610a7a565b34801561033657600080fd5b506102d9610b62565b34801561034b57600080fd5b506102d9610b68565b34801561036057600080fd5b50610369610b7a565b604080519115158252519081900360200190f35b34801561038957600080fd5b50610369600435610b9b565b3480156103a157600080fd5b506102d9600160a060020a0360043516610eda565b3480156103c257600080fd5b506103cb610eec565b60408051600160a060020a039092168252519081900360200190f35b3480156103f357600080fd5b506102d9610efb565b34801561040857600080fd5b506102aa610f01565b34801561041d57600080fd5b506102aa600160a060020a0360043516610ff5565b34801561043e57600080fd5b506102aa600160a060020a0360043516602435604435606435611223565b34801561046857600080fd5b506102d9611652565b34801561047d57600080fd5b50610369600160a060020a0360043516602435611658565b3480156104a157600080fd5b506102d96116fc565b3480156104b657600080fd5b506103cb611702565b3480156104cb57600080fd5b506102d9611711565b3480156104e057600080fd5b506104e9611717565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561052557818101518382015260200161050d565b505050509050019250505060405180910390f35b34801561054557600080fd5b506103cb611769565b34801561055a57600080fd5b506102d9611778565b34801561056f57600080fd5b506102d961177e565b34801561058457600080fd5b506102d96117a2565b34801561059957600080fd5b5061036960ff600435166117a8565b3480156105b457600080fd5b506102d96117bd565b604080517f636f6e6669677572652875696e743235362900000000000000000000000000008152905190819003601201902090565b600060008051602061197b833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561065957600080fd5b505af115801561066d573d6000803e3d6000fd5b505050506040513d602081101561068357600080fd5b505160005433600160a060020a0392831681149450911614905081806106a65750805b8061074c5750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561071f57600080fd5b505af1158015610733573d6000803e3d6000fd5b505050506040513d602081101561074957600080fd5b50515b15156107a2576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b8651885114610821576040805160e560020a62461bcd02815260206004820152602560248201527f4d69732d6d6174636820696e20746865206c656e677468206f6620746865206160448201527f7272617973000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b84518651146108a0576040805160e560020a62461bcd02815260206004820152602560248201527f4d69732d6d6174636820696e20746865206c656e677468206f6620746865206160448201527f7272617973000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b875186511461091f576040805160e560020a62461bcd02815260206004820152602560248201527f4d69732d6d6174636820696e20746865206c656e677468206f6620746865206160448201527f7272617973000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600093505b87518410156109a057610995888581518110151561093e57fe5b90602001906020020151888681518110151561095657fe5b90602001906020020151888781518110151561096e57fe5b90602001906020020151888881518110151561098657fe5b90602001906020020151611223565b600190930192610924565b5050505050505050565b600054600160a060020a03163314610a0c576040805160e560020a62461bcd02815260206004820152601560248201527f53656e646572206973206e6f7420666163746f72790000000000000000000000604482015290519081900360640190fd5b801515610a63576040805160e560020a62461bcd02815260206004820152601760248201527f656e6454696d652073686f756c64206e6f742062652030000000000000000000604482015290519081900360640190fd5b600555565b60055481565b60095490565b60085490565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610acd57600080fd5b505af1158015610ae1573d6000803e3d6000fd5b505050506040513d6020811015610af757600080fd5b5051600160a060020a03163314610b58576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b610b606117c3565b565b600b5481565b60008051602061197b83398151915281565b60025474010000000000000000000000000000000000000000900460ff1681565b60007f4645455f41444d494e0000000000000000000000000000000000000000000000600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610c1457600080fd5b505af1158015610c28573d6000803e3d6000fd5b505050506040513d6020811015610c3e57600080fd5b505160005433600160a060020a039283168114945091161490508180610c615750805b80610d075750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b158015610cda57600080fd5b505af1158015610cee573d6000803e3d6000fd5b505050506040513d6020811015610d0457600080fd5b50515b1515610d5d576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b60025460008054604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051600160a060020a03948516946323b872dd94309490911692638da5cb5b9260048083019360209383900390910190829087803b158015610dcc57600080fd5b505af1158015610de0573d6000803e3d6000fd5b505050506040513d6020811015610df657600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152604482018990525160648083019260209291908290030181600087803b158015610e4d57600080fd5b505af1158015610e61573d6000803e3d6000fd5b505050506040513d6020811015610e7757600080fd5b50511515610ecf576040805160e560020a62461bcd02815260206004820152601260248201527f556e61626c6520746f2074616b65206665650000000000000000000000000000604482015290519081900360640190fd5b506001949350505050565b60076020526000908152604090205481565b600254600160a060020a031681565b60045481565b600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b505050506040513d6020811015610f7e57600080fd5b5051600160a060020a03163314610fdf576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b6005544210610fed57600080fd5b610b6061188a565b600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561104b57600080fd5b505af115801561105f573d6000803e3d6000fd5b505050506040513d602081101561107557600080fd5b5051600160a060020a031633146110d6576040805160e560020a62461bcd02815260206004820152601360248201527f53656e646572206973206e6f74206f776e657200000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831615156110eb57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561114f57600080fd5b505af1158015611163573d6000803e3d6000fd5b505050506040513d602081101561117957600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051919250600160a060020a0384169163a9059cbb916044808201926020929091908290030181600087803b1580156111e757600080fd5b505af11580156111fb573d6000803e3d6000fd5b505050506040513d602081101561121157600080fd5b5051151561121e57600080fd5b505050565b60008051602061197b833981519152600080600160009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561128857600080fd5b505af115801561129c573d6000803e3d6000fd5b505050506040513d60208110156112b257600080fd5b505160005433600160a060020a0392831681149450911614905081806112d55750805b8061137b5750600154604080517f8658b8b9000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690529051600160a060020a0390921691638658b8b9916064808201926020929091908290030181600087803b15801561134e57600080fd5b505af1158015611362573d6000803e3d6000fd5b505050506040513d602081101561137857600080fd5b50515b15156113d1576040805160e560020a62461bcd02815260206004820152601760248201527f5065726d697373696f6e20636865636b206661696c6564000000000000000000604482015290519081900360640190fd5b600554421115611451576040805160e560020a62461bcd02815260206004820152602960248201527f43757272656e742074696d652073686f756c64206c657373207468616e20746860448201527f6520656e6454696d650000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600086116114cf576040805160e560020a62461bcd02815260206004820152603160248201527f4e6f2e206f6620746f6b656e732070726f76696465642073686f756c6420626560448201527f206772656174657220746865207a65726f000000000000000000000000000000606482015290519081900360840190fd5b600154604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a9052915191909216916340c10f199160448083019260209291908290030181600087803b15801561153e57600080fd5b505af1158015611552573d6000803e3d6000fd5b505050506040513d602081101561156857600080fd5b5050600160a060020a038716600090815260076020526040902054611593908763ffffffff61196716565b600160a060020a0388166000908152600760205260409020556008546115c090600163ffffffff61196716565b6008556009546115d6908663ffffffff61196716565b600955600a546115ec908563ffffffff61196716565b600a55600b54611602908763ffffffff61196716565b600b5560408051600160a060020a03891681526020810188905281517f3b87361b8a201c697d51aaa7a509f6dfb3870db9e5c5501d22d3e9fae858f725929181900390910190a150505050505050565b600a5490565b600254604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015230602483015291516000938593169163dd62ed3e91604480830192602092919082900301818887803b1580156116c757600080fd5b505af11580156116db573d6000803e3d6000fd5b505050506040513d60208110156116f157600080fd5b505110159392505050565b60065481565b600154600160a060020a031681565b600a5481565b6040805160018082528183019092526060918291906020808301908038833901905050905060008051602061197b83398151915281600081518110151561175a57fe5b60209081029091010152905090565b600054600160a060020a031681565b60095481565b7f4645455f41444d494e000000000000000000000000000000000000000000000081565b60085481565b60036020526000908152604090205460ff1681565b600b5490565b60025474010000000000000000000000000000000000000000900460ff161515611837576040805160e560020a62461bcd02815260206004820152601660248201527f436f6e7472616374206973206e6f742070617573656400000000000000000000604482015290519081900360640190fd5b6002805474ff0000000000000000000000000000000000000000191690556040805142815290517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b60025474010000000000000000000000000000000000000000900460ff16156118fd576040805160e560020a62461bcd02815260206004820152601260248201527f436f6e7472616374206973207061757365640000000000000000000000000000604482015290519081900360640190fd5b6002805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790556040805142815290517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a1565b8181018281101561197457fe5b9291505056005052455f53414c455f41444d494e000000000000000000000000000000000000a165627a7a72305820a275328811e3bbb8ddf3ae79ff7b19a84f3680cd6441bd95c82d46ae76a6e7f70029",
  "sourceMap": "195:4203:42:-;;;216:26:2;;;-1:-1:-1;;;;;;216:26:2;;;727:121:42;5:2:-1;;;;30:1;27;20:12;5:2;727:121:42;;;;;;;;;;;;;;;;;;;624:13:13;:30;;-1:-1:-1;;;;;624:30:13;;;-1:-1:-1;;;;;;624:30:13;;;;;;;:13;664:20;;;;674:10;664:20;;;694:9;:31;;;;;;;;;;;;;;195:4203:42;;;;;;",
  "deployedSourceMap": "195:4203:42:-;;;;;;;;-1:-1:-1;195:4203:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1247:119:42;;;;;;;;;;;;;;;;;;;;;;;3746:650;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3746:650:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3746:650:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3746:650:42;;;;-1:-1:-1;3746:650:42;-1:-1:-1;3746:650:42;;-1:-1:-1;3746:650:42;;;;;;;;;-1:-1:-1;;3746:650:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3746:650:42;;;;-1:-1:-1;3746:650:42;-1:-1:-1;3746:650:42;;-1:-1:-1;3746:650:42;;;;;;;;;-1:-1:-1;;3746:650:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3746:650:42;;;;-1:-1:-1;3746:650:42;-1:-1:-1;3746:650:42;;-1:-1:-1;3746:650:42;;;;;;;;;-1:-1:-1;3746:650:42;;-1:-1:-1;3746:650:42;;-1:-1:-1;;;;;;;3746:650:42;;;1002:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1002:150:42;;;;;532:22:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;532:22:41;;;;;;;;;;;;;;;;;;;;1432:91:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1432:91:42;;;;1750:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1750:97:42;;;;1811:69:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1811:69:41;;;;541:25:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;541:25:42;;;;262:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:57:42;;;;216:26:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;216:26:2;;;;;;;;;;;;;;;;;;;;;;1890:223:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1890:223:13;;;;;390:45:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;390:45:42;;;-1:-1:-1;;;;;390:45:42;;;365:22:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;365:22:13;;;;;;;;-1:-1:-1;;;;;365:22:13;;;;;;;;;;;;;;475:24:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;475:24:41;;;;1647:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1647:97:41;;;;2014:286;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2014:286:41;;;-1:-1:-1;;;;;2014:286:41;;;2649:693:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2649:693:42;;;-1:-1:-1;;;;;2649:693:42;;;;;;;;;1590:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1590:89:42;;;;895:184:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;895:184:41;;;-1:-1:-1;;;;;895:184:41;;;;;587:25;;8:9:-1;5:2;;;30:1;27;20:12;5:2;587:25:41;;;;276:28:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;276:28:13;;;;509:25:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;509:25:42;;;;2103:199;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2103:199:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2103:199:42;;;;;;;;;;;;;;;;;247:22:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;247:22:13;;;;477:26:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;477:26:42;;;;311:47:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;311:47:13;;;;442:28:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;442:28:42;;;;395:44:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;395:44:41;;;;;;;1920:89:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1920:89:42;;;;1247:119;1327:31;;;;;;;;;;;;;;;;1247:119;:::o;3746:650::-;4237:9;-1:-1:-1;;;;;;;;;;;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;-1:-1:-1;1029:13:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;;;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;1137:45;;:79;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;3949:15:42;;3928:17;;:36;3920:86;;;;;-1:-1:-1;;;;;3920:86:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4052:23;;4024:24;;:51;4016:101;;;;;-1:-1:-1;;;;;4016:101:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4163:17;;4135:24;;:45;4127:95;;;;;-1:-1:-1;;;;;4127:95:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4249:1;4237:13;;4232:158;4256:10;:17;4252:1;:21;4232:158;;;4294:85;4309:10;4320:1;4309:13;;;;;;;;;;;;;;;;;;4324:8;4333:1;4324:11;;;;;;;;;;;;;;;;;;4337:17;4355:1;4337:20;;;;;;;;;;;;;;;;;;4359:16;4376:1;4359:19;;;;;;;;;;;;;;;;;;4294:14;:85::i;:::-;4275:3;;;;;4232:158;;;3746:650;;;;;;;;:::o;1002:150::-;1457:7:13;;-1:-1:-1;;;;;1457:7:13;1443:10;:21;1435:55;;;;;-1:-1:-1;;;;;1435:55:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1076:13:42;;;1068:49;;;;;-1:-1:-1;;;;;1068:49:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;1127:7;:18;1002:150::o;532:22:41:-;;;;:::o;1432:91:42:-;1505:11;;1432:91;:::o;1750:97::-;1827:13;;1750:97;:::o;1811:69:41:-;1334:13:13;;1319:37;;;-1:-1:-1;;;;;1319:37:13;;;;-1:-1:-1;;;;;1334:13:13;;;;1319:35;;:37;;;;;;;;;;;;;;;1334:13;;1319:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1319:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1319:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1319:37:13;-1:-1:-1;;;;;1305:51:13;:10;:51;1297:83;;;;;-1:-1:-1;;;;;1297:83:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1857:16:41;:14;:16::i;:::-;1811:69::o;541:25:42:-;;;;:::o;262:57::-;-1:-1:-1;;;;;;;;;;;262:57:42;:::o;216:26:2:-;;;;;;;;;:::o;1890:223:13:-;1029:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;1959:4;;1940:9;;1959:4;;;;-1:-1:-1;;;;;1029:13:13;;1014:35;;:37;;;;;;;;;;;;;;1959:4;1029:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;;;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;1137:45;;:79;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1983:9;;;2036:7;;2021:31;;;-1:-1:-1;;;;;2021:31:13;;;;-1:-1:-1;;;;;1983:9:13;;;;:22;;2014:4;;2036:7;;;;;2021:29;;:31;;;;;;;;;;;;;;;;2036:7;2021:31;;;5:2:-1;;;;30:1;27;20:12;5:2;2021:31:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2021:31:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2021:31:13;1983:79;;;;;;-1:-1:-1;1983:79:13;;;-1:-1:-1;;;;;1983:79:13;;;;;;;;;;;;;;;;;;;;;;;;;;;2021:31;;1983:79;;;;;;;-1:-1:-1;1983:79:13;;;;5:2:-1;;;;30:1;27;20:12;5:2;1983:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1983:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1983:79:13;1975:110;;;;;;;-1:-1:-1;;;;;1975:110:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2102:4:13;;1890:223;-1:-1:-1;;;;1890:223:13:o;390:45:42:-;;;;;;;;;;;;;:::o;365:22:13:-;;;-1:-1:-1;;;;;365:22:13;;:::o;475:24:41:-;;;;:::o;1647:97::-;1334:13:13;;1319:37;;;-1:-1:-1;;;;;1319:37:13;;;;-1:-1:-1;;;;;1334:13:13;;;;1319:35;;:37;;;;;;;;;;;;;;;1334:13;;1319:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1319:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1319:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1319:37:13;-1:-1:-1;;;;;1305:51:13;:10;:51;1297:83;;;;;-1:-1:-1;;;;;1297:83:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;1705:7:41;;1699:3;:13;1691:22;;;;;;1723:14;:12;:14::i;2014:286::-;1334:13:13;;1319:37;;;-1:-1:-1;;;;;1319:37:13;;;;2136:16:41;;;;-1:-1:-1;;;;;1334:13:13;;;;1319:35;;:37;;;;;;;;;;;;;;;2136:16:41;1334:13:13;1319:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1319:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1319:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1319:37:13;-1:-1:-1;;;;;1305:51:13;:10;:51;1297:83;;;;;-1:-1:-1;;;;;1297:83:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2097:28:41;;;;2089:37;;;;;;2209:30;;;;;;2233:4;2209:30;;;;;;2166:14;;-1:-1:-1;;;;;;2209:15:41;;;;;:30;;;;;;;;;;;;;;-1:-1:-1;2209:15:41;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;2209:30:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2209:30:41;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2209:30:41;2257:35;;;;;;2272:10;2257:35;;;;;;;;;;;;2209:30;;-1:-1:-1;;;;;;2257:14:41;;;;;:35;;;;;2209:30;;2257:35;;;;;;;;-1:-1:-1;2257:14:41;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;2257:35:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2257:35:41;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2257:35:41;2249:44;;;;;;;;2014:286;;;:::o;2649:693:42:-;-1:-1:-1;;;;;;;;;;;1029:13:13;;1014:37;;;-1:-1:-1;;;;;1014:37:13;;;;-1:-1:-1;;;;;;;;;1029:13:13;;;;1014:35;;:37;;;;;;;;;;;;;;;-1:-1:-1;1029:13:13;1014:37;;;5:2:-1;;;;30:1;27;20:12;5:2;1014:37:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1014:37:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1014:37:13;1092:7;;1000:10;-1:-1:-1;;;;;1000:51:13;;;;;;-1:-1:-1;1092:7:13;;1078:21;;-1:-1:-1;1000:51:13;;1117:18;;;1126:9;1117:18;:99;;;-1:-1:-1;1152:13:13;;1137:79;;;;;;1183:10;1137:79;;;;1203:4;1137:79;;;;;;;;;;;;-1:-1:-1;;;;;1152:13:13;;;;1137:45;;:79;;;;;;;;;;;;;;;-1:-1:-1;1152:13:13;1137:79;;;5:2:-1;;;;30:1;27;20:12;5:2;1137:79:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1137:79:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1137:79:13;1117:99;1109:135;;;;;;;-1:-1:-1;;;;;1109:135:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;2823:7:42;;2816:3;:14;;2808:68;;;;;-1:-1:-1;;;;;2808:68:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2904:1;2894:11;;2886:73;;;;;-1:-1:-1;;;;;2886:73:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2975:13;;2969:45;;;;;;-1:-1:-1;;;;;2969:45:42;;;;;;;;;;;;;;;2975:13;;;;;2969:25;;:45;;;;;;;;;;;;;;-1:-1:-1;2975:13:42;2969:45;;;5:2:-1;;;;30:1;27;20:12;5:2;2969:45:42;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2969:45:42;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;3047:20:42;;;;;;:9;2969:45;3047:20;;;;;:33;;3072:7;3047:24;:33::i;:::-;-1:-1:-1;;;;;3024:20:42;;;;;;:9;:20;;;;;:56;3106:13;;:20;;-1:-1:-1;3106:17:42;:20::i;:::-;3090:13;:36;3150:11;;:34;;3166:17;3150:34;:15;:34;:::i;:::-;3136:11;:48;3207:10;;:32;;3222:16;3207:32;:14;:32;:::i;:::-;3194:10;:45;3262:10;;:23;;3277:7;3262:23;:14;:23;:::i;:::-;3249:10;:36;3300:35;;;-1:-1:-1;;;;;3300:35:42;;;;;;;;;;;;;;;;;;;;;;;2649:693;;;;;;;:::o;1590:89::-;1662:10;;1590:89;:::o;895:184:41:-;1008:9;;:48;;;;;;-1:-1:-1;;;;;1008:48:41;;;;;;;1050:4;1008:48;;;;;;-1:-1:-1;;1060:12:41;;1008:9;;:19;;:48;;;;;;;;;;;;;;-1:-1:-1;1008:9:41;:48;;;5:2:-1;;;;30:1;27;20:12;5:2;1008:48:41;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1008:48:41;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1008:48:41;:64;;;895:184;-1:-1:-1;;;895:184:41:o;587:25::-;;;;:::o;276:28:13:-;;;-1:-1:-1;;;;;276:28:13;;:::o;509:25:42:-;;;;:::o;2103:199::-;2204:16;;;2218:1;2204:16;;;;;;;;;2149:9;;;;2204:16;;;;;;;105:10:-1;2204:16:42;88:34:-1;136:17;;-1:-1;2204:16:42;2170:50;;-1:-1:-1;;;;;;;;;;;2230:14:42;2245:1;2230:17;;;;;;;;;;;;;;;;;;:34;2281:14;-1:-1:-1;2103:199:42;:::o;247:22:13:-;;;-1:-1:-1;;;;;247:22:13;;:::o;477:26:42:-;;;;:::o;311:47:13:-;;;:::o;442:28:42:-;;;;:::o;395:44:41:-;;;;;;;;;;;;;;;:::o;1920:89:42:-;1992:10;;1920:89;:::o;915:98:2:-;590:6;;;;;;;582:41;;;;;;;-1:-1:-1;;;;;582:41:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:6;:14;;-1:-1:-1;;965:14:2;;;994:12;;;1002:3;994:12;;;;;;;;;;;;;915:98::o;728:96::-;397:6;;;;;;;396:7;388:38;;;;;-1:-1:-1;;;;;388:38:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:6;:13;;-1:-1:-1;;779:13:2;;;;;807:10;;;813:3;807:10;;;;;;;;;;;;;728:96::o;1214:123:63:-;1293:5;;;1311:6;;;;1304:14;;;;1214:123;;;;:::o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./ISTO.sol\";\nimport \"../../interfaces/IST20.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\n\n/**\n * @title STO module for private presales\n */\ncontract PreSaleSTO is ISTO {\n    using SafeMath for uint256;\n\n    bytes32 public constant PRE_SALE_ADMIN = \"PRE_SALE_ADMIN\";\n\n    event TokensAllocated(address _investor, uint256 _amount);\n\n    mapping (address => uint256) public investors;\n\n    uint256 public investorCount;\n\n    uint256 public etherRaised;\n    uint256 public polyRaised;\n\n    uint256 public tokensSold;\n\n    /**\n     * @notice Constructor\n     * @param _securityToken Address of the security token\n     * @param _polyAddress Address of the polytoken\n     */\n    constructor (address _securityToken, address _polyAddress) public\n      IModule(_securityToken, _polyAddress)\n    {\n    }\n\n    /**\n     * @notice Function used to intialize the differnet variables\n     * @param _endTime Unix timestamp at which offering get ended\n     */\n    function configure(uint256 _endTime) public onlyFactory {\n        require(_endTime != 0, \"endTime should not be 0\");\n        endTime = _endTime;\n    }\n\n    /**\n     * @notice This function returns the signature of configure function\n     */\n    function getInitFunction() public pure returns (bytes4) {\n        return bytes4(keccak256(\"configure(uint256)\"));\n    }\n\n    /**\n     * @notice Return ETH raised by the STO\n     */\n    function getRaisedEther() public view returns (uint256) {\n        return etherRaised;\n    }\n\n    /**\n     * @notice Return POLY raised by the STO\n     */\n    function getRaisedPOLY() public view returns (uint256) {\n        return polyRaised;\n    }\n\n    /**\n     * @notice Return the total no. of investors\n     */\n    function getNumberInvestors() public view returns (uint256) {\n        return investorCount;\n    }\n\n    /**\n     * @notice Return the total no. of tokens sold\n     */\n    function getTokensSold() public view returns (uint256) {\n        return tokensSold;\n    }\n\n    /**\n     * @notice Return the permissions flag that are associated with STO\n     */\n    function getPermissions() public view returns(bytes32[]) {\n        bytes32[] memory allPermissions = new bytes32[](1);\n        allPermissions[0] = PRE_SALE_ADMIN;\n        return allPermissions;\n    }\n\n    /**\n     * @notice Function used to allocate tokens to the investor\n     * @param _investor Address of the investor\n     * @param _amount No. of tokens need to transfered to the investor\n     * @param _etherContributed How much amount of ETH get contributed\n     * @param _polyContributed How much amount of POLY get contributed\n     */\n    function allocateTokens(address _investor, uint256 _amount, uint256 _etherContributed, uint256 _polyContributed) public withPerm(PRE_SALE_ADMIN)\n    {\n        require(now <= endTime, \"Current time should less than the endTime\");\n        require(_amount > 0, \"No. of tokens provided should be greater the zero\");\n        IST20(securityToken).mint(_investor, _amount);\n        investors[_investor] = investors[_investor].add(_amount);\n        investorCount = investorCount.add(1);\n        etherRaised = etherRaised.add(_etherContributed);\n        polyRaised = polyRaised.add(_polyContributed);\n        tokensSold = tokensSold.add(_amount);\n        emit TokensAllocated(_investor, _amount);\n    }\n\n    /**\n     * @notice Function used to allocate tokens to the multiple investor\n     * @param _investors Array of address of the investors\n     * @param _amounts Array of no. of tokens need to transfered to the investors\n     * @param _etherContributed Array of amount of ETH contributed by each investor\n     * @param _polyContributed Array of amount of POLY contributed by each investor\n     */\n    function allocateTokensMulti(address[] _investors, uint256[] _amounts, uint256[] _etherContributed, uint256[] _polyContributed) public withPerm(PRE_SALE_ADMIN)\n    {\n        require(_investors.length == _amounts.length, \"Mis-match in the length of the arrays\");\n        require(_etherContributed.length == _polyContributed.length, \"Mis-match in the length of the arrays\");\n        require(_etherContributed.length == _investors.length, \"Mis-match in the length of the arrays\");\n        for (uint256 i = 0; i < _investors.length; i++) {\n            allocateTokens(_investors[i], _amounts[i], _etherContributed[i], _polyContributed[i]);\n        }\n    }\n}\n",
  "sourcePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/STO/PreSaleSTO.sol",
  "ast": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/STO/PreSaleSTO.sol",
    "exportedSymbols": {
      "PreSaleSTO": [
        14910
      ]
    },
    "id": 14911,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 14625,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:42"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/STO/ISTO.sol",
        "file": "./ISTO.sol",
        "id": 14626,
        "nodeType": "ImportDirective",
        "scope": 14911,
        "sourceUnit": 14624,
        "src": "26:20:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/IST20.sol",
        "file": "../../interfaces/IST20.sol",
        "id": 14627,
        "nodeType": "ImportDirective",
        "scope": 14911,
        "sourceUnit": 10049,
        "src": "47:36:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 14628,
        "nodeType": "ImportDirective",
        "scope": 14911,
        "sourceUnit": 22579,
        "src": "84:59:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 14629,
              "name": "ISTO",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 14623,
              "src": "218:4:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ISTO_$14623",
                "typeString": "contract ISTO"
              }
            },
            "id": 14630,
            "nodeType": "InheritanceSpecifier",
            "src": "218:4:42"
          }
        ],
        "contractDependencies": [
          471,
          9717,
          14623
        ],
        "contractKind": "contract",
        "documentation": "@title STO module for private presales",
        "fullyImplemented": true,
        "id": 14910,
        "linearizedBaseContracts": [
          14910,
          14623,
          471,
          9717
        ],
        "name": "PreSaleSTO",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 14633,
            "libraryName": {
              "contractScope": null,
              "id": 14631,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22578,
              "src": "235:8:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$22578",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "229:27:42",
            "typeName": {
              "id": 14632,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "248:7:42",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 14636,
            "name": "PRE_SALE_ADMIN",
            "nodeType": "VariableDeclaration",
            "scope": 14910,
            "src": "262:57:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 14634,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "262:7:42",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5052455f53414c455f41444d494e",
              "id": 14635,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "303:16:42",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7aa91efa4ed6b4e1a71eb9423504c88107f0a103c2080086b163b88f04564a4f",
                "typeString": "literal_string \"PRE_SALE_ADMIN\""
              },
              "value": "PRE_SALE_ADMIN"
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 14642,
            "name": "TokensAllocated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 14641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14638,
                  "indexed": false,
                  "name": "_investor",
                  "nodeType": "VariableDeclaration",
                  "scope": 14642,
                  "src": "348:17:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14637,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "348:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14640,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 14642,
                  "src": "367:15:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14639,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "367:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "347:36:42"
            },
            "src": "326:58:42"
          },
          {
            "constant": false,
            "id": 14646,
            "name": "investors",
            "nodeType": "VariableDeclaration",
            "scope": 14910,
            "src": "390:45:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 14645,
              "keyType": {
                "id": 14643,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "399:7:42",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "390:28:42",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 14644,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "410:7:42",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 14648,
            "name": "investorCount",
            "nodeType": "VariableDeclaration",
            "scope": 14910,
            "src": "442:28:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 14647,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "442:7:42",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 14650,
            "name": "etherRaised",
            "nodeType": "VariableDeclaration",
            "scope": 14910,
            "src": "477:26:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 14649,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "477:7:42",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 14652,
            "name": "polyRaised",
            "nodeType": "VariableDeclaration",
            "scope": 14910,
            "src": "509:25:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 14651,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "509:7:42",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 14654,
            "name": "tokensSold",
            "nodeType": "VariableDeclaration",
            "scope": 14910,
            "src": "541:25:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 14653,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "541:7:42",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14665,
              "nodeType": "Block",
              "src": "841:7:42",
              "statements": []
            },
            "documentation": "@notice Constructor\n@param _securityToken Address of the security token\n@param _polyAddress Address of the polytoken",
            "id": 14666,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 14661,
                    "name": "_securityToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14656,
                    "src": "807:14:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 14662,
                    "name": "_polyAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14658,
                    "src": "823:12:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 14663,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14660,
                  "name": "IModule",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9717,
                  "src": "799:7:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_IModule_$9717_$",
                    "typeString": "type(contract IModule)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "799:37:42"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14656,
                  "name": "_securityToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 14666,
                  "src": "740:22:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14655,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "740:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14658,
                  "name": "_polyAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 14666,
                  "src": "764:20:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14657,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "764:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "739:46:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14664,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "841:0:42"
            },
            "scope": 14910,
            "src": "727:121:42",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14684,
              "nodeType": "Block",
              "src": "1058:94:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14674,
                          "name": "_endTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14668,
                          "src": "1076:8:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 14675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1088:1:42",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1076:13:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "656e6454696d652073686f756c64206e6f742062652030",
                        "id": 14677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1091:25:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9723fceb2b09f309ea544daec5bb5caf8076792a15785d10b82c82353671ece9",
                          "typeString": "literal_string \"endTime should not be 0\""
                        },
                        "value": "endTime should not be 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9723fceb2b09f309ea544daec5bb5caf8076792a15785d10b82c82353671ece9",
                          "typeString": "literal_string \"endTime should not be 0\""
                        }
                      ],
                      "id": 14673,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "1068:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1068:49:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14679,
                  "nodeType": "ExpressionStatement",
                  "src": "1068:49:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14682,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14680,
                      "name": "endTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14512,
                      "src": "1127:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 14681,
                      "name": "_endTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14668,
                      "src": "1137:8:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1127:18:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14683,
                  "nodeType": "ExpressionStatement",
                  "src": "1127:18:42"
                }
              ]
            },
            "documentation": "@notice Function used to intialize the differnet variables\n@param _endTime Unix timestamp at which offering get ended",
            "id": 14685,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 14671,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14670,
                  "name": "onlyFactory",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9665,
                  "src": "1046:11:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1046:11:42"
              }
            ],
            "name": "configure",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14669,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14668,
                  "name": "_endTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 14685,
                  "src": "1021:16:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14667,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1021:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1020:18:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14672,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1058:0:42"
            },
            "scope": 14910,
            "src": "1002:150:42",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14696,
              "nodeType": "Block",
              "src": "1303:63:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "636f6e6669677572652875696e7432353629",
                            "id": 14692,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1337:20:42",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1eb25e0a63a500d4f80783bf36f077d8e1f94a3c2db4f426b56eca35184ba63a",
                              "typeString": "literal_string \"configure(uint256)\""
                            },
                            "value": "configure(uint256)"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1eb25e0a63a500d4f80783bf36f077d8e1f94a3c2db4f426b56eca35184ba63a",
                              "typeString": "literal_string \"configure(uint256)\""
                            }
                          ],
                          "id": 14691,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23125,
                          "src": "1327:9:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 14693,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1327:31:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14690,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1320:6:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": "bytes4"
                    },
                    "id": 14694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1320:39:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 14689,
                  "id": 14695,
                  "nodeType": "Return",
                  "src": "1313:46:42"
                }
              ]
            },
            "documentation": "@notice This function returns the signature of configure function",
            "id": 14697,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getInitFunction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14686,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1271:2:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14689,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14688,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14697,
                  "src": "1295:6:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 14687,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1295:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1294:8:42"
            },
            "scope": 14910,
            "src": "1247:119:42",
            "stateMutability": "pure",
            "superFunction": 9594,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14704,
              "nodeType": "Block",
              "src": "1488:35:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14702,
                    "name": "etherRaised",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14650,
                    "src": "1505:11:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14701,
                  "id": 14703,
                  "nodeType": "Return",
                  "src": "1498:18:42"
                }
              ]
            },
            "documentation": "@notice Return ETH raised by the STO",
            "id": 14705,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getRaisedEther",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14698,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1455:2:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14701,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14700,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14705,
                  "src": "1479:7:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14699,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1479:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1478:9:42"
            },
            "scope": 14910,
            "src": "1432:91:42",
            "stateMutability": "view",
            "superFunction": 14539,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14712,
              "nodeType": "Block",
              "src": "1645:34:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14710,
                    "name": "polyRaised",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14652,
                    "src": "1662:10:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14709,
                  "id": 14711,
                  "nodeType": "Return",
                  "src": "1655:17:42"
                }
              ]
            },
            "documentation": "@notice Return POLY raised by the STO",
            "id": 14713,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getRaisedPOLY",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14706,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1612:2:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14708,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14713,
                  "src": "1636:7:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14707,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1636:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1635:9:42"
            },
            "scope": 14910,
            "src": "1590:89:42",
            "stateMutability": "view",
            "superFunction": 14544,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14720,
              "nodeType": "Block",
              "src": "1810:37:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14718,
                    "name": "investorCount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14648,
                    "src": "1827:13:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14717,
                  "id": 14719,
                  "nodeType": "Return",
                  "src": "1820:20:42"
                }
              ]
            },
            "documentation": "@notice Return the total no. of investors",
            "id": 14721,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getNumberInvestors",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14714,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1777:2:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14717,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14716,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14721,
                  "src": "1801:7:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14715,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1801:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1800:9:42"
            },
            "scope": 14910,
            "src": "1750:97:42",
            "stateMutability": "view",
            "superFunction": 14549,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14728,
              "nodeType": "Block",
              "src": "1975:34:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14726,
                    "name": "tokensSold",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14654,
                    "src": "1992:10:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14725,
                  "id": 14727,
                  "nodeType": "Return",
                  "src": "1985:17:42"
                }
              ]
            },
            "documentation": "@notice Return the total no. of tokens sold",
            "id": 14729,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTokensSold",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14722,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1942:2:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14725,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14724,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14729,
                  "src": "1966:7:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14723,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1966:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1965:9:42"
            },
            "scope": 14910,
            "src": "1920:89:42",
            "stateMutability": "view",
            "superFunction": 14554,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14753,
              "nodeType": "Block",
              "src": "2160:142:42",
              "statements": [
                {
                  "assignments": [
                    14738
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14738,
                      "name": "allPermissions",
                      "nodeType": "VariableDeclaration",
                      "scope": 14754,
                      "src": "2170:31:42",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 14736,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2170:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 14737,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2170:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14744,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 14742,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2218:1:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 14741,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2204:13:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 14739,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2208:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 14740,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2208:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 14743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2204:16:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2170:50:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14749,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 14745,
                        "name": "allPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14738,
                        "src": "2230:14:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 14747,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 14746,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2245:1:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2230:17:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 14748,
                      "name": "PRE_SALE_ADMIN",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14636,
                      "src": "2250:14:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2230:34:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 14750,
                  "nodeType": "ExpressionStatement",
                  "src": "2230:34:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14751,
                    "name": "allPermissions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14738,
                    "src": "2281:14:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 14734,
                  "id": 14752,
                  "nodeType": "Return",
                  "src": "2274:21:42"
                }
              ]
            },
            "documentation": "@notice Return the permissions flag that are associated with STO",
            "id": 14754,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getPermissions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14730,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2126:2:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14733,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14754,
                  "src": "2149:9:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14731,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "2149:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 14732,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2149:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2148:11:42"
            },
            "scope": 14910,
            "src": "2103:199:42",
            "stateMutability": "view",
            "superFunction": 9687,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14834,
              "nodeType": "Block",
              "src": "2798:544:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14769,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "2816:3:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 14770,
                          "name": "endTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14512,
                          "src": "2823:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2816:14:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43757272656e742074696d652073686f756c64206c657373207468616e2074686520656e6454696d65",
                        "id": 14772,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2832:43:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b7b608b8b3edeaf0edb3e674b023dcbf1a21c6768468fbebd2880fd292f1e391",
                          "typeString": "literal_string \"Current time should less than the endTime\""
                        },
                        "value": "Current time should less than the endTime"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b7b608b8b3edeaf0edb3e674b023dcbf1a21c6768468fbebd2880fd292f1e391",
                          "typeString": "literal_string \"Current time should less than the endTime\""
                        }
                      ],
                      "id": 14768,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "2808:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2808:68:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14774,
                  "nodeType": "ExpressionStatement",
                  "src": "2808:68:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14778,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14776,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14758,
                          "src": "2894:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 14777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2904:1:42",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2894:11:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e6f2e206f6620746f6b656e732070726f76696465642073686f756c64206265206772656174657220746865207a65726f",
                        "id": 14779,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2907:51:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b77169dac43e98c87d655af8fc74f65a881dd01631c37d879ac72df0392bf543",
                          "typeString": "literal_string \"No. of tokens provided should be greater the zero\""
                        },
                        "value": "No. of tokens provided should be greater the zero"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b77169dac43e98c87d655af8fc74f65a881dd01631c37d879ac72df0392bf543",
                          "typeString": "literal_string \"No. of tokens provided should be greater the zero\""
                        }
                      ],
                      "id": 14775,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "2886:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14780,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2886:73:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14781,
                  "nodeType": "ExpressionStatement",
                  "src": "2886:73:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14786,
                        "name": "_investor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14756,
                        "src": "2995:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14787,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14758,
                        "src": "3006:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14783,
                            "name": "securityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9561,
                            "src": "2975:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 14782,
                          "name": "IST20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10048,
                          "src": "2969:5:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IST20_$10048_$",
                            "typeString": "type(contract IST20)"
                          }
                        },
                        "id": 14784,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2969:20:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IST20_$10048",
                          "typeString": "contract IST20"
                        }
                      },
                      "id": 14785,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10030,
                      "src": "2969:25:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 14788,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2969:45:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 14789,
                  "nodeType": "ExpressionStatement",
                  "src": "2969:45:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14799,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 14790,
                        "name": "investors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14646,
                        "src": "3024:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 14792,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 14791,
                        "name": "_investor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14756,
                        "src": "3034:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3024:20:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14797,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14758,
                          "src": "3072:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 14793,
                            "name": "investors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14646,
                            "src": "3047:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 14795,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 14794,
                            "name": "_investor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14756,
                            "src": "3057:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3047:20:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14796,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22577,
                        "src": "3047:24:42",
                        "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": 14798,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3047:33:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3024:56:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14800,
                  "nodeType": "ExpressionStatement",
                  "src": "3024:56:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14801,
                      "name": "investorCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14648,
                      "src": "3090:13:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 14804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3124:1:42",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 14802,
                          "name": "investorCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14648,
                          "src": "3106:13:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14803,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22577,
                        "src": "3106:17:42",
                        "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": 14805,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3106:20:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3090:36:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14807,
                  "nodeType": "ExpressionStatement",
                  "src": "3090:36:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14808,
                      "name": "etherRaised",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14650,
                      "src": "3136:11:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14811,
                          "name": "_etherContributed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14760,
                          "src": "3166:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 14809,
                          "name": "etherRaised",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14650,
                          "src": "3150:11:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22577,
                        "src": "3150:15:42",
                        "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": 14812,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3150:34:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3136:48:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14814,
                  "nodeType": "ExpressionStatement",
                  "src": "3136:48:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14820,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14815,
                      "name": "polyRaised",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14652,
                      "src": "3194:10:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14818,
                          "name": "_polyContributed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14762,
                          "src": "3222:16:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 14816,
                          "name": "polyRaised",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14652,
                          "src": "3207:10:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22577,
                        "src": "3207:14:42",
                        "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": 14819,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3207:32:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3194:45:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14821,
                  "nodeType": "ExpressionStatement",
                  "src": "3194:45:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14827,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14822,
                      "name": "tokensSold",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14654,
                      "src": "3249:10:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14825,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14758,
                          "src": "3277:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 14823,
                          "name": "tokensSold",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14654,
                          "src": "3262:10:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14824,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22577,
                        "src": "3262:14:42",
                        "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": 14826,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3262:23:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3249:36:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14828,
                  "nodeType": "ExpressionStatement",
                  "src": "3249:36:42"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14830,
                        "name": "_investor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14756,
                        "src": "3316:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14831,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14758,
                        "src": "3327:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 14829,
                      "name": "TokensAllocated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14642,
                      "src": "3300:15:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 14832,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3300:35:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14833,
                  "nodeType": "EmitStatement",
                  "src": "3295:40:42"
                }
              ]
            },
            "documentation": "@notice Function used to allocate tokens to the investor\n@param _investor Address of the investor\n@param _amount No. of tokens need to transfered to the investor\n@param _etherContributed How much amount of ETH get contributed\n@param _polyContributed How much amount of POLY get contributed",
            "id": 14835,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 14765,
                    "name": "PRE_SALE_ADMIN",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14636,
                    "src": "2778:14:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 14766,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14764,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "2769:8:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2769:24:42"
              }
            ],
            "name": "allocateTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14763,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14756,
                  "name": "_investor",
                  "nodeType": "VariableDeclaration",
                  "scope": 14835,
                  "src": "2673:17:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14755,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2673:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14758,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 14835,
                  "src": "2692:15:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14757,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2692:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14760,
                  "name": "_etherContributed",
                  "nodeType": "VariableDeclaration",
                  "scope": 14835,
                  "src": "2709:25:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14759,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2709:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14762,
                  "name": "_polyContributed",
                  "nodeType": "VariableDeclaration",
                  "scope": 14835,
                  "src": "2736:24:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14761,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2736:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2672:89:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14767,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2798:0:42"
            },
            "scope": 14910,
            "src": "2649:693:42",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14908,
              "nodeType": "Block",
              "src": "3910:486:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14858,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14854,
                            "name": "_investors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14838,
                            "src": "3928:10:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 14855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3928:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14856,
                            "name": "_amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14841,
                            "src": "3949:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 14857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3949:15:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3928:36:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d69732d6d6174636820696e20746865206c656e677468206f662074686520617272617973",
                        "id": 14859,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3966:39:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e6e9985f4f54b573f3a5eba669f45bb98ec50cd60909ea443be6588371310a0e",
                          "typeString": "literal_string \"Mis-match in the length of the arrays\""
                        },
                        "value": "Mis-match in the length of the arrays"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e6e9985f4f54b573f3a5eba669f45bb98ec50cd60909ea443be6588371310a0e",
                          "typeString": "literal_string \"Mis-match in the length of the arrays\""
                        }
                      ],
                      "id": 14853,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "3920:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14860,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3920:86:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14861,
                  "nodeType": "ExpressionStatement",
                  "src": "3920:86:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14867,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14863,
                            "name": "_etherContributed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14844,
                            "src": "4024:17:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 14864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4024:24:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14865,
                            "name": "_polyContributed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14847,
                            "src": "4052:16:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 14866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4052:23:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4024:51:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d69732d6d6174636820696e20746865206c656e677468206f662074686520617272617973",
                        "id": 14868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4077:39:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e6e9985f4f54b573f3a5eba669f45bb98ec50cd60909ea443be6588371310a0e",
                          "typeString": "literal_string \"Mis-match in the length of the arrays\""
                        },
                        "value": "Mis-match in the length of the arrays"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e6e9985f4f54b573f3a5eba669f45bb98ec50cd60909ea443be6588371310a0e",
                          "typeString": "literal_string \"Mis-match in the length of the arrays\""
                        }
                      ],
                      "id": 14862,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "4016:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14869,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4016:101:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14870,
                  "nodeType": "ExpressionStatement",
                  "src": "4016:101:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14876,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14872,
                            "name": "_etherContributed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14844,
                            "src": "4135:17:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 14873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4135:24:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14874,
                            "name": "_investors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14838,
                            "src": "4163:10:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 14875,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4163:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4135:45:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d69732d6d6174636820696e20746865206c656e677468206f662074686520617272617973",
                        "id": 14877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4182:39:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e6e9985f4f54b573f3a5eba669f45bb98ec50cd60909ea443be6588371310a0e",
                          "typeString": "literal_string \"Mis-match in the length of the arrays\""
                        },
                        "value": "Mis-match in the length of the arrays"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e6e9985f4f54b573f3a5eba669f45bb98ec50cd60909ea443be6588371310a0e",
                          "typeString": "literal_string \"Mis-match in the length of the arrays\""
                        }
                      ],
                      "id": 14871,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "4127:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4127:95:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14879,
                  "nodeType": "ExpressionStatement",
                  "src": "4127:95:42"
                },
                {
                  "body": {
                    "id": 14906,
                    "nodeType": "Block",
                    "src": "4280:110:42",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 14892,
                                "name": "_investors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14838,
                                "src": "4309:10:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 14894,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 14893,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14881,
                                "src": "4320:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4309:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 14895,
                                "name": "_amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14841,
                                "src": "4324:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 14897,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 14896,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14881,
                                "src": "4333:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4324:11:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 14898,
                                "name": "_etherContributed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14844,
                                "src": "4337:17:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 14900,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 14899,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14881,
                                "src": "4355:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4337:20:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 14901,
                                "name": "_polyContributed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14847,
                                "src": "4359:16:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 14903,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 14902,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14881,
                                "src": "4376:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4359:19:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14891,
                            "name": "allocateTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14835,
                            "src": "4294:14:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 14904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4294:85:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14905,
                        "nodeType": "ExpressionStatement",
                        "src": "4294:85:42"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14887,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 14884,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14881,
                      "src": "4252:1:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14885,
                        "name": "_investors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14838,
                        "src": "4256:10:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 14886,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4256:17:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4252:21:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 14907,
                  "initializationExpression": {
                    "assignments": [
                      14881
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 14881,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 14909,
                        "src": "4237:9:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14880,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4237:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 14883,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 14882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4249:1:42",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4237:13:42"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 14889,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4275:3:42",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 14888,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14881,
                        "src": "4275:1:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 14890,
                    "nodeType": "ExpressionStatement",
                    "src": "4275:3:42"
                  },
                  "nodeType": "ForStatement",
                  "src": "4232:158:42"
                }
              ]
            },
            "documentation": "@notice Function used to allocate tokens to the multiple investor\n@param _investors Array of address of the investors\n@param _amounts Array of no. of tokens need to transfered to the investors\n@param _etherContributed Array of amount of ETH contributed by each investor\n@param _polyContributed Array of amount of POLY contributed by each investor",
            "id": 14909,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 14850,
                    "name": "PRE_SALE_ADMIN",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14636,
                    "src": "3890:14:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 14851,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14849,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "3881:8:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3881:24:42"
              }
            ],
            "name": "allocateTokensMulti",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14848,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14838,
                  "name": "_investors",
                  "nodeType": "VariableDeclaration",
                  "scope": 14909,
                  "src": "3775:20:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14836,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3775:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 14837,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3775:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14841,
                  "name": "_amounts",
                  "nodeType": "VariableDeclaration",
                  "scope": 14909,
                  "src": "3797:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14839,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3797:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 14840,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3797:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14844,
                  "name": "_etherContributed",
                  "nodeType": "VariableDeclaration",
                  "scope": 14909,
                  "src": "3817:27:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14842,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3817:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 14843,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3817:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14847,
                  "name": "_polyContributed",
                  "nodeType": "VariableDeclaration",
                  "scope": 14909,
                  "src": "3846:26:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14845,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3846:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 14846,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3846:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3774:99:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14852,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3910:0:42"
            },
            "scope": 14910,
            "src": "3746:650:42",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 14911,
        "src": "195:4203:42"
      }
    ],
    "src": "0:4399:42"
  },
  "legacyAST": {
    "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/STO/PreSaleSTO.sol",
    "exportedSymbols": {
      "PreSaleSTO": [
        14910
      ]
    },
    "id": 14911,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 14625,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:42"
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/modules/STO/ISTO.sol",
        "file": "./ISTO.sol",
        "id": 14626,
        "nodeType": "ImportDirective",
        "scope": 14911,
        "sourceUnit": 14624,
        "src": "26:20:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/satyamagrawal/Repositories/testing-package/polymath-core/contracts/interfaces/IST20.sol",
        "file": "../../interfaces/IST20.sol",
        "id": 14627,
        "nodeType": "ImportDirective",
        "scope": 14911,
        "sourceUnit": 10049,
        "src": "47:36:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 14628,
        "nodeType": "ImportDirective",
        "scope": 14911,
        "sourceUnit": 22579,
        "src": "84:59:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 14629,
              "name": "ISTO",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 14623,
              "src": "218:4:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ISTO_$14623",
                "typeString": "contract ISTO"
              }
            },
            "id": 14630,
            "nodeType": "InheritanceSpecifier",
            "src": "218:4:42"
          }
        ],
        "contractDependencies": [
          471,
          9717,
          14623
        ],
        "contractKind": "contract",
        "documentation": "@title STO module for private presales",
        "fullyImplemented": true,
        "id": 14910,
        "linearizedBaseContracts": [
          14910,
          14623,
          471,
          9717
        ],
        "name": "PreSaleSTO",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 14633,
            "libraryName": {
              "contractScope": null,
              "id": 14631,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 22578,
              "src": "235:8:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$22578",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "229:27:42",
            "typeName": {
              "id": 14632,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "248:7:42",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 14636,
            "name": "PRE_SALE_ADMIN",
            "nodeType": "VariableDeclaration",
            "scope": 14910,
            "src": "262:57:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 14634,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "262:7:42",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "5052455f53414c455f41444d494e",
              "id": 14635,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "303:16:42",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_7aa91efa4ed6b4e1a71eb9423504c88107f0a103c2080086b163b88f04564a4f",
                "typeString": "literal_string \"PRE_SALE_ADMIN\""
              },
              "value": "PRE_SALE_ADMIN"
            },
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 14642,
            "name": "TokensAllocated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 14641,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14638,
                  "indexed": false,
                  "name": "_investor",
                  "nodeType": "VariableDeclaration",
                  "scope": 14642,
                  "src": "348:17:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14637,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "348:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14640,
                  "indexed": false,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 14642,
                  "src": "367:15:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14639,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "367:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "347:36:42"
            },
            "src": "326:58:42"
          },
          {
            "constant": false,
            "id": 14646,
            "name": "investors",
            "nodeType": "VariableDeclaration",
            "scope": 14910,
            "src": "390:45:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 14645,
              "keyType": {
                "id": 14643,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "399:7:42",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "390:28:42",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 14644,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "410:7:42",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 14648,
            "name": "investorCount",
            "nodeType": "VariableDeclaration",
            "scope": 14910,
            "src": "442:28:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 14647,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "442:7:42",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 14650,
            "name": "etherRaised",
            "nodeType": "VariableDeclaration",
            "scope": 14910,
            "src": "477:26:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 14649,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "477:7:42",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 14652,
            "name": "polyRaised",
            "nodeType": "VariableDeclaration",
            "scope": 14910,
            "src": "509:25:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 14651,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "509:7:42",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 14654,
            "name": "tokensSold",
            "nodeType": "VariableDeclaration",
            "scope": 14910,
            "src": "541:25:42",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 14653,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "541:7:42",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14665,
              "nodeType": "Block",
              "src": "841:7:42",
              "statements": []
            },
            "documentation": "@notice Constructor\n@param _securityToken Address of the security token\n@param _polyAddress Address of the polytoken",
            "id": 14666,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 14661,
                    "name": "_securityToken",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14656,
                    "src": "807:14:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 14662,
                    "name": "_polyAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14658,
                    "src": "823:12:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 14663,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14660,
                  "name": "IModule",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9717,
                  "src": "799:7:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_IModule_$9717_$",
                    "typeString": "type(contract IModule)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "799:37:42"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14659,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14656,
                  "name": "_securityToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 14666,
                  "src": "740:22:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14655,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "740:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14658,
                  "name": "_polyAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 14666,
                  "src": "764:20:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14657,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "764:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "739:46:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14664,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "841:0:42"
            },
            "scope": 14910,
            "src": "727:121:42",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14684,
              "nodeType": "Block",
              "src": "1058:94:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14676,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14674,
                          "name": "_endTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14668,
                          "src": "1076:8:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 14675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1088:1:42",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1076:13:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "656e6454696d652073686f756c64206e6f742062652030",
                        "id": 14677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1091:25:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9723fceb2b09f309ea544daec5bb5caf8076792a15785d10b82c82353671ece9",
                          "typeString": "literal_string \"endTime should not be 0\""
                        },
                        "value": "endTime should not be 0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9723fceb2b09f309ea544daec5bb5caf8076792a15785d10b82c82353671ece9",
                          "typeString": "literal_string \"endTime should not be 0\""
                        }
                      ],
                      "id": 14673,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "1068:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1068:49:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14679,
                  "nodeType": "ExpressionStatement",
                  "src": "1068:49:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14682,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14680,
                      "name": "endTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14512,
                      "src": "1127:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 14681,
                      "name": "_endTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14668,
                      "src": "1137:8:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1127:18:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14683,
                  "nodeType": "ExpressionStatement",
                  "src": "1127:18:42"
                }
              ]
            },
            "documentation": "@notice Function used to intialize the differnet variables\n@param _endTime Unix timestamp at which offering get ended",
            "id": 14685,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 14671,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14670,
                  "name": "onlyFactory",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9665,
                  "src": "1046:11:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1046:11:42"
              }
            ],
            "name": "configure",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14669,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14668,
                  "name": "_endTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 14685,
                  "src": "1021:16:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14667,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1021:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1020:18:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14672,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1058:0:42"
            },
            "scope": 14910,
            "src": "1002:150:42",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14696,
              "nodeType": "Block",
              "src": "1303:63:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "636f6e6669677572652875696e7432353629",
                            "id": 14692,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1337:20:42",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1eb25e0a63a500d4f80783bf36f077d8e1f94a3c2db4f426b56eca35184ba63a",
                              "typeString": "literal_string \"configure(uint256)\""
                            },
                            "value": "configure(uint256)"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1eb25e0a63a500d4f80783bf36f077d8e1f94a3c2db4f426b56eca35184ba63a",
                              "typeString": "literal_string \"configure(uint256)\""
                            }
                          ],
                          "id": 14691,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23125,
                          "src": "1327:9:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                            "typeString": "function () pure returns (bytes32)"
                          }
                        },
                        "id": 14693,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1327:31:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14690,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1320:6:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": "bytes4"
                    },
                    "id": 14694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1320:39:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "functionReturnParameters": 14689,
                  "id": 14695,
                  "nodeType": "Return",
                  "src": "1313:46:42"
                }
              ]
            },
            "documentation": "@notice This function returns the signature of configure function",
            "id": 14697,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getInitFunction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14686,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1271:2:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14689,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14688,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14697,
                  "src": "1295:6:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 14687,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1295:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1294:8:42"
            },
            "scope": 14910,
            "src": "1247:119:42",
            "stateMutability": "pure",
            "superFunction": 9594,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14704,
              "nodeType": "Block",
              "src": "1488:35:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14702,
                    "name": "etherRaised",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14650,
                    "src": "1505:11:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14701,
                  "id": 14703,
                  "nodeType": "Return",
                  "src": "1498:18:42"
                }
              ]
            },
            "documentation": "@notice Return ETH raised by the STO",
            "id": 14705,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getRaisedEther",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14698,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1455:2:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14701,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14700,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14705,
                  "src": "1479:7:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14699,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1479:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1478:9:42"
            },
            "scope": 14910,
            "src": "1432:91:42",
            "stateMutability": "view",
            "superFunction": 14539,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14712,
              "nodeType": "Block",
              "src": "1645:34:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14710,
                    "name": "polyRaised",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14652,
                    "src": "1662:10:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14709,
                  "id": 14711,
                  "nodeType": "Return",
                  "src": "1655:17:42"
                }
              ]
            },
            "documentation": "@notice Return POLY raised by the STO",
            "id": 14713,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getRaisedPOLY",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14706,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1612:2:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14708,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14713,
                  "src": "1636:7:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14707,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1636:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1635:9:42"
            },
            "scope": 14910,
            "src": "1590:89:42",
            "stateMutability": "view",
            "superFunction": 14544,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14720,
              "nodeType": "Block",
              "src": "1810:37:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14718,
                    "name": "investorCount",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14648,
                    "src": "1827:13:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14717,
                  "id": 14719,
                  "nodeType": "Return",
                  "src": "1820:20:42"
                }
              ]
            },
            "documentation": "@notice Return the total no. of investors",
            "id": 14721,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getNumberInvestors",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14714,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1777:2:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14717,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14716,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14721,
                  "src": "1801:7:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14715,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1801:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1800:9:42"
            },
            "scope": 14910,
            "src": "1750:97:42",
            "stateMutability": "view",
            "superFunction": 14549,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14728,
              "nodeType": "Block",
              "src": "1975:34:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14726,
                    "name": "tokensSold",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14654,
                    "src": "1992:10:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14725,
                  "id": 14727,
                  "nodeType": "Return",
                  "src": "1985:17:42"
                }
              ]
            },
            "documentation": "@notice Return the total no. of tokens sold",
            "id": 14729,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTokensSold",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14722,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1942:2:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14725,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14724,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14729,
                  "src": "1966:7:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14723,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1966:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1965:9:42"
            },
            "scope": 14910,
            "src": "1920:89:42",
            "stateMutability": "view",
            "superFunction": 14554,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14753,
              "nodeType": "Block",
              "src": "2160:142:42",
              "statements": [
                {
                  "assignments": [
                    14738
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14738,
                      "name": "allPermissions",
                      "nodeType": "VariableDeclaration",
                      "scope": 14754,
                      "src": "2170:31:42",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 14736,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2170:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 14737,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2170:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14744,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 14742,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2218:1:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 14741,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "2204:13:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 14739,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2208:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 14740,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2208:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 14743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2204:16:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2170:50:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14749,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 14745,
                        "name": "allPermissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14738,
                        "src": "2230:14:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 14747,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 14746,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2245:1:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2230:17:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 14748,
                      "name": "PRE_SALE_ADMIN",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14636,
                      "src": "2250:14:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2230:34:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 14750,
                  "nodeType": "ExpressionStatement",
                  "src": "2230:34:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14751,
                    "name": "allPermissions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14738,
                    "src": "2281:14:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 14734,
                  "id": 14752,
                  "nodeType": "Return",
                  "src": "2274:21:42"
                }
              ]
            },
            "documentation": "@notice Return the permissions flag that are associated with STO",
            "id": 14754,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getPermissions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14730,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2126:2:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14733,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 14754,
                  "src": "2149:9:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14731,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "2149:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 14732,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2149:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2148:11:42"
            },
            "scope": 14910,
            "src": "2103:199:42",
            "stateMutability": "view",
            "superFunction": 9687,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14834,
              "nodeType": "Block",
              "src": "2798:544:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14769,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23133,
                          "src": "2816:3:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 14770,
                          "name": "endTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14512,
                          "src": "2823:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2816:14:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43757272656e742074696d652073686f756c64206c657373207468616e2074686520656e6454696d65",
                        "id": 14772,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2832:43:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b7b608b8b3edeaf0edb3e674b023dcbf1a21c6768468fbebd2880fd292f1e391",
                          "typeString": "literal_string \"Current time should less than the endTime\""
                        },
                        "value": "Current time should less than the endTime"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b7b608b8b3edeaf0edb3e674b023dcbf1a21c6768468fbebd2880fd292f1e391",
                          "typeString": "literal_string \"Current time should less than the endTime\""
                        }
                      ],
                      "id": 14768,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "2808:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2808:68:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14774,
                  "nodeType": "ExpressionStatement",
                  "src": "2808:68:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14778,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 14776,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14758,
                          "src": "2894:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 14777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2904:1:42",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2894:11:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e6f2e206f6620746f6b656e732070726f76696465642073686f756c64206265206772656174657220746865207a65726f",
                        "id": 14779,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2907:51:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b77169dac43e98c87d655af8fc74f65a881dd01631c37d879ac72df0392bf543",
                          "typeString": "literal_string \"No. of tokens provided should be greater the zero\""
                        },
                        "value": "No. of tokens provided should be greater the zero"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b77169dac43e98c87d655af8fc74f65a881dd01631c37d879ac72df0392bf543",
                          "typeString": "literal_string \"No. of tokens provided should be greater the zero\""
                        }
                      ],
                      "id": 14775,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "2886:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14780,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2886:73:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14781,
                  "nodeType": "ExpressionStatement",
                  "src": "2886:73:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14786,
                        "name": "_investor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14756,
                        "src": "2995:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14787,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14758,
                        "src": "3006:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14783,
                            "name": "securityToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9561,
                            "src": "2975:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 14782,
                          "name": "IST20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10048,
                          "src": "2969:5:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IST20_$10048_$",
                            "typeString": "type(contract IST20)"
                          }
                        },
                        "id": 14784,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2969:20:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IST20_$10048",
                          "typeString": "contract IST20"
                        }
                      },
                      "id": 14785,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10030,
                      "src": "2969:25:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 14788,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2969:45:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 14789,
                  "nodeType": "ExpressionStatement",
                  "src": "2969:45:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14799,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 14790,
                        "name": "investors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14646,
                        "src": "3024:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 14792,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 14791,
                        "name": "_investor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14756,
                        "src": "3034:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3024:20:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14797,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14758,
                          "src": "3072:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 14793,
                            "name": "investors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14646,
                            "src": "3047:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 14795,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 14794,
                            "name": "_investor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14756,
                            "src": "3057:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3047:20:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14796,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22577,
                        "src": "3047:24:42",
                        "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": 14798,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3047:33:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3024:56:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14800,
                  "nodeType": "ExpressionStatement",
                  "src": "3024:56:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14801,
                      "name": "investorCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14648,
                      "src": "3090:13:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 14804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3124:1:42",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 14802,
                          "name": "investorCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14648,
                          "src": "3106:13:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14803,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22577,
                        "src": "3106:17:42",
                        "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": 14805,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3106:20:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3090:36:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14807,
                  "nodeType": "ExpressionStatement",
                  "src": "3090:36:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14808,
                      "name": "etherRaised",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14650,
                      "src": "3136:11:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14811,
                          "name": "_etherContributed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14760,
                          "src": "3166:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 14809,
                          "name": "etherRaised",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14650,
                          "src": "3150:11:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22577,
                        "src": "3150:15:42",
                        "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": 14812,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3150:34:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3136:48:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14814,
                  "nodeType": "ExpressionStatement",
                  "src": "3136:48:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14820,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14815,
                      "name": "polyRaised",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14652,
                      "src": "3194:10:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14818,
                          "name": "_polyContributed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14762,
                          "src": "3222:16:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 14816,
                          "name": "polyRaised",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14652,
                          "src": "3207:10:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22577,
                        "src": "3207:14:42",
                        "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": 14819,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3207:32:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3194:45:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14821,
                  "nodeType": "ExpressionStatement",
                  "src": "3194:45:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14827,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14822,
                      "name": "tokensSold",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14654,
                      "src": "3249:10:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14825,
                          "name": "_amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14758,
                          "src": "3277:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 14823,
                          "name": "tokensSold",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14654,
                          "src": "3262:10:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14824,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22577,
                        "src": "3262:14:42",
                        "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": 14826,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3262:23:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3249:36:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 14828,
                  "nodeType": "ExpressionStatement",
                  "src": "3249:36:42"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14830,
                        "name": "_investor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14756,
                        "src": "3316:9:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14831,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14758,
                        "src": "3327:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 14829,
                      "name": "TokensAllocated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14642,
                      "src": "3300:15:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 14832,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3300:35:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14833,
                  "nodeType": "EmitStatement",
                  "src": "3295:40:42"
                }
              ]
            },
            "documentation": "@notice Function used to allocate tokens to the investor\n@param _investor Address of the investor\n@param _amount No. of tokens need to transfered to the investor\n@param _etherContributed How much amount of ETH get contributed\n@param _polyContributed How much amount of POLY get contributed",
            "id": 14835,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 14765,
                    "name": "PRE_SALE_ADMIN",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14636,
                    "src": "2778:14:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 14766,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14764,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "2769:8:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2769:24:42"
              }
            ],
            "name": "allocateTokens",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14763,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14756,
                  "name": "_investor",
                  "nodeType": "VariableDeclaration",
                  "scope": 14835,
                  "src": "2673:17:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14755,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2673:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14758,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 14835,
                  "src": "2692:15:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14757,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2692:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14760,
                  "name": "_etherContributed",
                  "nodeType": "VariableDeclaration",
                  "scope": 14835,
                  "src": "2709:25:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14759,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2709:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14762,
                  "name": "_polyContributed",
                  "nodeType": "VariableDeclaration",
                  "scope": 14835,
                  "src": "2736:24:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14761,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2736:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2672:89:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14767,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2798:0:42"
            },
            "scope": 14910,
            "src": "2649:693:42",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14908,
              "nodeType": "Block",
              "src": "3910:486:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14858,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14854,
                            "name": "_investors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14838,
                            "src": "3928:10:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 14855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3928:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14856,
                            "name": "_amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14841,
                            "src": "3949:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 14857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3949:15:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3928:36:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d69732d6d6174636820696e20746865206c656e677468206f662074686520617272617973",
                        "id": 14859,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3966:39:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e6e9985f4f54b573f3a5eba669f45bb98ec50cd60909ea443be6588371310a0e",
                          "typeString": "literal_string \"Mis-match in the length of the arrays\""
                        },
                        "value": "Mis-match in the length of the arrays"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e6e9985f4f54b573f3a5eba669f45bb98ec50cd60909ea443be6588371310a0e",
                          "typeString": "literal_string \"Mis-match in the length of the arrays\""
                        }
                      ],
                      "id": 14853,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "3920:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14860,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3920:86:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14861,
                  "nodeType": "ExpressionStatement",
                  "src": "3920:86:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14867,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14863,
                            "name": "_etherContributed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14844,
                            "src": "4024:17:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 14864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4024:24:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14865,
                            "name": "_polyContributed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14847,
                            "src": "4052:16:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 14866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4052:23:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4024:51:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d69732d6d6174636820696e20746865206c656e677468206f662074686520617272617973",
                        "id": 14868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4077:39:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e6e9985f4f54b573f3a5eba669f45bb98ec50cd60909ea443be6588371310a0e",
                          "typeString": "literal_string \"Mis-match in the length of the arrays\""
                        },
                        "value": "Mis-match in the length of the arrays"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e6e9985f4f54b573f3a5eba669f45bb98ec50cd60909ea443be6588371310a0e",
                          "typeString": "literal_string \"Mis-match in the length of the arrays\""
                        }
                      ],
                      "id": 14862,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "4016:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14869,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4016:101:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14870,
                  "nodeType": "ExpressionStatement",
                  "src": "4016:101:42"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 14876,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14872,
                            "name": "_etherContributed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14844,
                            "src": "4135:17:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 14873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4135:24:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 14874,
                            "name": "_investors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14838,
                            "src": "4163:10:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 14875,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4163:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4135:45:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d69732d6d6174636820696e20746865206c656e677468206f662074686520617272617973",
                        "id": 14877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4182:39:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e6e9985f4f54b573f3a5eba669f45bb98ec50cd60909ea443be6588371310a0e",
                          "typeString": "literal_string \"Mis-match in the length of the arrays\""
                        },
                        "value": "Mis-match in the length of the arrays"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e6e9985f4f54b573f3a5eba669f45bb98ec50cd60909ea443be6588371310a0e",
                          "typeString": "literal_string \"Mis-match in the length of the arrays\""
                        }
                      ],
                      "id": 14871,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        23134,
                        23135
                      ],
                      "referencedDeclaration": 23135,
                      "src": "4127:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4127:95:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14879,
                  "nodeType": "ExpressionStatement",
                  "src": "4127:95:42"
                },
                {
                  "body": {
                    "id": 14906,
                    "nodeType": "Block",
                    "src": "4280:110:42",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 14892,
                                "name": "_investors",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14838,
                                "src": "4309:10:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 14894,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 14893,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14881,
                                "src": "4320:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4309:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 14895,
                                "name": "_amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14841,
                                "src": "4324:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 14897,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 14896,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14881,
                                "src": "4333:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4324:11:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 14898,
                                "name": "_etherContributed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14844,
                                "src": "4337:17:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 14900,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 14899,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14881,
                                "src": "4355:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4337:20:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 14901,
                                "name": "_polyContributed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14847,
                                "src": "4359:16:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 14903,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 14902,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14881,
                                "src": "4376:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4359:19:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14891,
                            "name": "allocateTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14835,
                            "src": "4294:14:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,uint256)"
                            }
                          },
                          "id": 14904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4294:85:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14905,
                        "nodeType": "ExpressionStatement",
                        "src": "4294:85:42"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 14887,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 14884,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14881,
                      "src": "4252:1:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 14885,
                        "name": "_investors",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14838,
                        "src": "4256:10:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 14886,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4256:17:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4252:21:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 14907,
                  "initializationExpression": {
                    "assignments": [
                      14881
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 14881,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 14909,
                        "src": "4237:9:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14880,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4237:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 14883,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 14882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4249:1:42",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4237:13:42"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 14889,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4275:3:42",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 14888,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14881,
                        "src": "4275:1:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 14890,
                    "nodeType": "ExpressionStatement",
                    "src": "4275:3:42"
                  },
                  "nodeType": "ForStatement",
                  "src": "4232:158:42"
                }
              ]
            },
            "documentation": "@notice Function used to allocate tokens to the multiple investor\n@param _investors Array of address of the investors\n@param _amounts Array of no. of tokens need to transfered to the investors\n@param _etherContributed Array of amount of ETH contributed by each investor\n@param _polyContributed Array of amount of POLY contributed by each investor",
            "id": 14909,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 14850,
                    "name": "PRE_SALE_ADMIN",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14636,
                    "src": "3890:14:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 14851,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14849,
                  "name": "withPerm",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9637,
                  "src": "3881:8:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3881:24:42"
              }
            ],
            "name": "allocateTokensMulti",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14848,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14838,
                  "name": "_investors",
                  "nodeType": "VariableDeclaration",
                  "scope": 14909,
                  "src": "3775:20:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14836,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3775:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 14837,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3775:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14841,
                  "name": "_amounts",
                  "nodeType": "VariableDeclaration",
                  "scope": 14909,
                  "src": "3797:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14839,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3797:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 14840,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3797:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14844,
                  "name": "_etherContributed",
                  "nodeType": "VariableDeclaration",
                  "scope": 14909,
                  "src": "3817:27:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14842,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3817:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 14843,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3817:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14847,
                  "name": "_polyContributed",
                  "nodeType": "VariableDeclaration",
                  "scope": 14909,
                  "src": "3846:26:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14845,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3846:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 14846,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3846:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3774:99:42"
            },
            "payable": false,
            "returnParameters": {
              "id": 14852,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3910:0:42"
            },
            "scope": 14910,
            "src": "3746:650:42",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 14911,
        "src": "195:4203:42"
      }
    ],
    "src": "0:4399:42"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-08-21T09:48:12.565Z"
}