remix-lib/src/execution/txFormat.js
function (contractName, contract, contracts, params, funAbi, callback, callbackStep, callbackDeployLibrary) {
    this.encodeParams(params, funAbi, (error, encodedParam) => {
      if (error) return callback(error)
      var dataHex = ''
      var contractBytecode = contract.evm.bytecode.object
      var bytecodeToDeploy = contract.evm.bytecode.object
      if (bytecodeToDeploy.indexOf('_') >= 0) {
        this.linkBytecode(contract, contracts, (err, bytecode) => {
          if (err) {
            callback('Error deploying required libraries: ' + err)
          } else {
            bytecodeToDeploy = bytecode + dataHex
            return callback(null, {dataHex: bytecodeToDeploy, funAbi, funArgs: encodedParam.funArgs, contractBytecode, contractName: contractName})
          }
        }, callbackStep, callbackDeployLibrary)
        return
      } else {
        dataHex = bytecodeToDeploy + encodedParam.dataHex
      }
      callback(null, {dataHex: bytecodeToDeploy, funAbi, funArgs: encodedParam.funArgs, contractBytecode, contractName: contractName})
    })
  }
function (contractName, contract, contracts, params, funAbi, callback, callbackStep, callbackDeployLibrary) {
    this.encodeParams(params, funAbi, (error, encodedParam) => {
      if (error) return callback(error)
      var dataHex = ''
      var contractBytecode = contract.evm.bytecode.object
      var bytecodeToDeploy = contract.evm.bytecode.object
      if (bytecodeToDeploy.indexOf('_') >= 0) {
        this.linkBytecode(contract, contracts, (err, bytecode) => {
          if (err) {
            callback('Error deploying required libraries: ' + err)
          } else {
            bytecodeToDeploy = bytecode + dataHex
            return callback(null, {dataHex: bytecodeToDeploy, funAbi, funArgs: encodedParam.funArgs, contractBytecode, contractName: contractName})
          }
        }, callbackStep, callbackDeployLibrary)
        return
      } else {
        dataHex = bytecodeToDeploy + encodedParam.dataHex
      }
      callback(null, {dataHex: bytecodeToDeploy, funAbi, funArgs: encodedParam.funArgs, contractBytecode, contractName: contractName})
    })
  }
function ( contractName , contract , contracts , params , funAbi , callback , callbackStep , callbackDeployLibrary ) { this . encodeParams ( params , funAbi , ( error , encodedParam ) => { if ( error ) return callback ( error ) var dataHex = '' var contractBytecode = contract . evm . bytecode . object var bytecodeToDeploy = contract . evm . bytecode . object if ( bytecodeToDeploy . indexOf ( '_' ) >= 0 ) { this . linkBytecode ( contract , contracts , ( err , bytecode ) => { if ( err ) { callback ( 'Error deploying required libraries: ' + err ) } else { bytecodeToDeploy = bytecode + dataHex return callback ( null , { dataHex : bytecodeToDeploy , funAbi , funArgs : encodedParam . funArgs , contractBytecode , contractName : contractName } ) } } , callbackStep , callbackDeployLibrary ) return } else { dataHex = bytecodeToDeploy + encodedParam . dataHex } callback ( null , { dataHex : bytecodeToDeploy , funAbi , funArgs : encodedParam . funArgs , contractBytecode , contractName : contractName } ) } ) }
encode constructor creation and deploy librairies if needed

@param {String} contractName    - current contract name
@param {Object} contract    - input paramater of the function to call
@param {Object} contracts    - map of all compiled contracts.
@param {Object} params    - input paramater of the function to call
@param {Object} funAbi    - abi definition of the function to call. null if building data for the ctor.
@param {Function} callback    - callback
@param {Function} callbackStep  - callbackStep
@param {Function} callbackDeployLibrary  - callbackDeployLibrary
@param {Function} callback    - callback
encode constructor creation and deploy librairies if needed