{
    "contractName": "Distribution",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_business",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_royalty",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_investor",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_operator",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "previousOwner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "OwnershipTransferred",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "Paused",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "shareholderType",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "shareholder",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "timestamp",
                    "type": "uint256"
                }
            ],
            "name": "RevenueShare",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "Unpaused",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "owner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "paused",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "renounceOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getRevenueShares",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_viaFactory",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_founder",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_treasury",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_liquidity",
                    "type": "address"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_type",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "_shareholder",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_currency",
                    "type": "address"
                }
            ],
            "name": "addRevenueShareholder",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_type",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "_currency",
                    "type": "address"
                }
            ],
            "name": "getRevenueShareholders",
            "outputs": [
                {
                    "internalType": "address[]",
                    "name": "shareholders",
                    "type": "address[]"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_currency",
                    "type": "bytes32"
                }
            ],
            "name": "getPaymentFeeCollected",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "_currency",
                    "type": "bytes32"
                }
            ],
            "name": "getLoanFeeCollected",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_platform",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "getIssuingFeeCollected",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_platform",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "getTradingFeeCollected",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "shareCollection",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "shareFee",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_business\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_royalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_investor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_operator\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"shareholderType\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"shareholder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"RevenueShare\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_type\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_shareholder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_currency\",\"type\":\"address\"}],\"name\":\"addRevenueShareholder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_platform\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getIssuingFeeCollected\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_currency\",\"type\":\"bytes32\"}],\"name\":\"getLoanFeeCollected\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_currency\",\"type\":\"bytes32\"}],\"name\":\"getPaymentFeeCollected\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_type\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_currency\",\"type\":\"address\"}],\"name\":\"getRevenueShareholders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"shareholders\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRevenueShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_platform\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getTradingFeeCollected\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_viaFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_founder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_treasury\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_liquidity\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shareCollection\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"shareFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Distribution.sol\":\"Distribution\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"@openzeppelin/contracts/security/Pausable.sol\":{\"keccak256\":\"0xa35b1f2a670cd2a701a52c398032c9fed72df1909fe394d77ceacbf074e8937b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72b957861691ebdaa78c52834465c4f8296480fe4f1a12ba72dc6c0c8ac076dd\",\"dweb:/ipfs/QmVz1sHCwgEivHPRDswdt9tdvky7EnWqFmbuk1wFE55VMG\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb03df8481a954604ad0c9125680893b2e3f7ff770fe470e38b89ac61b84e8072\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b34655953d18ba3a45b762fb6bdbb6549af69a27435e10ece178742bf70baf45\",\"dweb:/ipfs/QmcqjUoFLLMyx7dbwSHUnDBH6aphkVHXWQvQRRev5EAWEh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4c3df1a7ca104b633a7d81c6c6f5192367d150cd5a32cba81f7f27012729013\",\"dweb:/ipfs/QmSim72e3ZVsfgZt8UceCvbiSuMRHR6WDsiamqNzZahGSY\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"project:/contracts/Distribution.sol\":{\"keccak256\":\"0x2594cc6a6cc1ad0b35f5e631f6d50050da7d93fe254b07470d4c9062c5126877\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://75524732e3c512a4550934b26420f468f0eef4efeaa80458b1abba0357f8f8e1\",\"dweb:/ipfs/QmZQpyXP2dm9hXvNKmUjt7xUDqGPyw8BKXhrEt6JFAG4Zg\"]},\"project:/contracts/interfaces/ILiquidity.sol\":{\"keccak256\":\"0x600dce5f75b7b4e65be2a4d5215b5c59f6a891f9ca5a595de6362bced9f3b9bf\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d9b46824f3f5976211c204f9e592ff9ced4924efde9d29ba02824cf29c193047\",\"dweb:/ipfs/QmdrsV2iKSANHFknKEnhTPHgpiHxoBLYkf5mt4pvgfsmZB\"]},\"project:/contracts/interfaces/IMarketMaker.sol\":{\"keccak256\":\"0x904dc9c759b2227d522e503af84c9be723790fc4adbf90eedd109f4c8f4cda1d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c047bc9574d3094ccc32279b1fa6576327a7a9a14e72ff34a2205c5eeb0fac9\",\"dweb:/ipfs/QmYfwtHMgWveskQP2ZzRARsos9XK7i7Vohyph9enrqt4ny\"]},\"project:/contracts/interfaces/IOrder.sol\":{\"keccak256\":\"0x15a1549bee9f77513c026f63d7a75e268b2697183f360cc3ddc567ba2362e12c\",\"license\":\"BUSL1.1\",\"urls\":[\"bzz-raw://82233b74ac0999feeba2a4a1f689fcbf8d7169323508c0eca2659ae4295e8e50\",\"dweb:/ipfs/QmUEiaBpRiNkrvN1Ng76zdT48FRqvDvdLC6upFGVhuUFjX\"]},\"project:/contracts/interfaces/ISettlor.sol\":{\"keccak256\":\"0x7569fcea85e7121278e1cdd353b1df6108bc23ffead42aec92b9a66b958cf0cd\",\"license\":\"BUSL1.1\",\"urls\":[\"bzz-raw://5bea80a23df8b39ca743f7c6308e4ed0f468265d7f286fd16b679c7cef07fc25\",\"dweb:/ipfs/QmRbcVW2W1sYHz5qqd5yuiafcPDWDcDYpNg3KTqeG6LufJ\"]},\"project:/contracts/interfaces/ITrade.sol\":{\"keccak256\":\"0x70c2314a9de36d027fe96a7923e384b6de6fd6962baa5d4a54deccdf5e02340a\",\"license\":\"BUSL1.1\",\"urls\":[\"bzz-raw://9f23b36fb97582e602a0ad7e500aa995a3f871d9162ae043e8803390f2fd1247\",\"dweb:/ipfs/QmR4eV5b3xWG9eV31QnFUTtfXxaJuoLviUJz1H5BkRLj8d\"]},\"project:/contracts/interfaces/ViaFactory.sol\":{\"keccak256\":\"0xfc5b9cd2fa746946d189c970666b1a30b4489830bf5eb7e9a8975afdf82c34b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7230d3a07119f9937bdba78bae6a39bae8d0ac3edd9a9f1b99a9a5525f4bc1fa\",\"dweb:/ipfs/QmaCSz5vgSUe67YGXzB9prp6huMdKw2VrBxsXdrvCGjPuR\"]},\"project:/contracts/math/BalancerErrors.sol\":{\"keccak256\":\"0x323bea2f11674b9268713f7297620af5a2ccf7de1d0c6a3f2ab60d4146097994\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://764b0c48b21e6d2fb54ada64e28253cde73e4dbce7aa8b68e5642f4038b5cac7\",\"dweb:/ipfs/QmNomHLxAk3PJ9LDxLscuziFW2hZRdy6YvrpNXE2zPYicp\"]},\"project:/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0xfeee385aff59fa8ccdd570da51dad7bea9568af3293224b7a91006f122418de5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://500a8e4acfcdf37b534af520c42d45bcdd8af085c94e0a30b2b1f16909f03c05\",\"dweb:/ipfs/QmXSdE2kdThLDghjMgBxJNvnNbjq71AZYSSjdCU14GmBPh\"]},\"project:/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0xe92008e018fcea6e38735bfa99877a9baadd50f8c735e896626c4f75deea37c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90cd376656246dd6e66fafad22936a0bca1a2bed07cf4f2740747b692f2eeeca\",\"dweb:/ipfs/Qmeui9mWac4fbGi38HPP9Uu4BvJP3kbwNXSiDqSvxx8Xbs\"]},\"project:/contracts/math/Math.sol\":{\"keccak256\":\"0xc98ceae3785da1fa180f96f6dc2d4a73c643dbd2076aef8e4c56ea087e1b87fb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://edc507569a43010e0d02990c05adb3c7c1060139a15f66075d566420ac60d0bb\",\"dweb:/ipfs/QmVxwu3xuTdMqkoCStr7H5JMMfzsAu8vrz8moRmZawHhWK\"]}},\"version\":1}",
    "bytecode": "0x6101006040523480156200001257600080fd5b50604051620024f1380380620024f18339810160408190526200003591620000c2565b62000049620000436200006e565b62000072565b6000805460ff60a01b1916905560809390935260a09190915260c05260e052620000f8565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060008060808587031215620000d8578384fd5b505082516020840151604085015160609095015191969095509092509050565b60805160a05160c05160e0516123a36200014e600039600081816107190152610fbc0152600081816106f801526110300152600081816106d70152610ff60152600081816106b60152610f7d01526123a36000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637d8e98311161008c578063e081d92f11610066578063e081d92f146101b8578063f2fde38b146101d8578063f8c8765e146101eb578063ff43df4e146101fe576100ea565b80637d8e9831146101835780638da5cb5b1461019b578063b069bbbb146101b0576100ea565b806350ed5a0b116100c857806350ed5a0b146101405780635c975abb14610153578063715018a6146101685780637507f8d014610170576100ea565b80630ab36de2146100ef5780633d66d8a8146101045780634fb0b3041461012d575b600080fd5b6101026100fd366004611e6d565b610206565b005b610117610112366004611e31565b610350565b6040516101249190612139565b60405180910390f35b61011761013b366004611e31565b6104b2565b61011761014e366004611c18565b610524565b61015b6105ec565b6040516101249190611f84565b6101026105fc565b61011761017e366004611c18565b610647565b61018b6106b4565b6040516101249493929190612142565b6101a361073e565b6040516101249190611f0a565b61010261074d565b6101cb6101c6366004611e49565b610a96565b6040516101249190611f37565b6101026101e6366004611bd9565b610be3565b6101026101f9366004611c50565b610c54565b610102610cf0565b61020e610f08565b6001600160a01b031661021f61073e565b6001600160a01b03161461024e5760405162461bcd60e51b8152600401610245906120a0565b60405180910390fd5b8267427573696e65737360c01b14156102cf576001600160a01b0382166000908152600460205260409020546102ca576001600160a01b03818116600090815260036020908152604080832080546001810182558185528385200180546001600160a01b03191695881695861790555493835260049091529020555b61034b565b826727b832b930ba37b960c11b141561034b576001600160a01b03821660009081526006602052604090205461034b576001600160a01b03818116600090815260056020908152604080832080546001810182558185528385200180546001600160a01b03191695881695861790555493835260069091529020555b505050565b600061035a610f08565b6001600160a01b031661036b61073e565b6001600160a01b0316146103915760405162461bcd60e51b8152600401610245906120a0565b600154604051632ea7791760e01b81526000916001600160a01b031690632ea77917906103c2908690600401611ff0565b60206040518083038186803b1580156103da57600080fd5b505afa1580156103ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104129190611bfc565b90506001600160a01b038116156104a7576040516370a0823160e01b81526001600160a01b038216906370a082319061044f903090600401611f0a565b60206040518083038186803b15801561046757600080fd5b505afa15801561047b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049f9190611ed1565b9150506104ad565b60009150505b919050565b60006104bc610f08565b6001600160a01b03166104cd61073e565b6001600160a01b0316146104f35760405162461bcd60e51b8152600401610245906120a0565b600154604051632ea7791760e01b81526000916001600160a01b031690632ea77917906103c2908690600401611fd5565b600061052e610f08565b6001600160a01b031661053f61073e565b6001600160a01b0316146105655760405162461bcd60e51b8152600401610245906120a0565b604051635bccd17760e01b81526001600160a01b03841690635bccd17790610591908590600401611f0a565b602060405180830381600087803b1580156105ab57600080fd5b505af11580156105bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e39190611ed1565b90505b92915050565b600054600160a01b900460ff1690565b610604610f08565b6001600160a01b031661061561073e565b6001600160a01b03161461063b5760405162461bcd60e51b8152600401610245906120a0565b6106456000610f0c565b565b6000610651610f08565b6001600160a01b031661066261073e565b6001600160a01b0316146106885760405162461bcd60e51b8152600401610245906120a0565b6040516316c8b3a360e11b81526001600160a01b03841690632d91674690610591908590600401611f0a565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000090919293565b6000546001600160a01b031690565b610755610f08565b6001600160a01b031661076661073e565b6001600160a01b03161461078c5760405162461bcd60e51b8152600401610245906120a0565b600154604080516378a8956760e01b815290516000926001600160a01b0316916378a89567916004808301926020929190829003018186803b1580156107d157600080fd5b505afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190611ed1565b905060005b81811015610a9257600154604051631c96a19760e31b81526000916001600160a01b03169063e4b50cb890610847908590600401612139565b60206040518083038186803b15801561085f57600080fd5b505afa158015610873573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108979190611bfc565b60015460405163668151a760e01b81529192506000916001600160a01b039091169063668151a7906108cd908590600401611f0a565b604080518083038186803b1580156108e457600080fd5b505afa1580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190611eae565b91505080660acd2c286c2e6d60cb1b14156109d0576040516370a0823160e01b81526000906001600160a01b038416906370a0823190610960903090600401611f0a565b60206040518083038186803b15801561097857600080fd5b505afa15801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b09190611ed1565b905080156109ca576109ca8184636665657360e01b610f5c565b50610a7d565b8066159a58509bdb9960ca1b1415610a7d576040516370a0823160e01b81526000906001600160a01b038416906370a0823190610a11903090600401611f0a565b60206040518083038186803b158015610a2957600080fd5b505afa158015610a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a619190611ed1565b90508015610a7b57610a7b8184636665657360e01b610f5c565b505b50508080610a8a906122f1565b91505061080e565b5050565b6060610aa0610f08565b6001600160a01b0316610ab161073e565b6001600160a01b031614610ad75760405162461bcd60e51b8152600401610245906120a0565b8267427573696e65737360c01b1415610b5e576001600160a01b03821660009081526003602090815260409182902080548351818402810184019094528084529091830182828015610b5257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610b34575b505050505090506105e6565b826727b832b930ba37b960c11b14156105e6576001600160a01b03821660009081526005602090815260409182902080548351818402810184019094528084529091830182828015610b52576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610b3457505050505090506105e6565b610beb610f08565b6001600160a01b0316610bfc61073e565b6001600160a01b031614610c225760405162461bcd60e51b8152600401610245906120a0565b6001600160a01b038116610c485760405162461bcd60e51b815260040161024590611f8f565b610c5181610f0c565b50565b610c5c610f08565b6001600160a01b0316610c6d61073e565b6001600160a01b031614610c935760405162461bcd60e51b8152600401610245906120a0565b600180546001600160a01b03199081166001600160a01b0396871617909155600780548216948616949094179093556008805484169285169290921790915560098054831691909316908117909255600280549091169091179055565b610cf8610f08565b6001600160a01b0316610d0961073e565b6001600160a01b031614610d2f5760405162461bcd60e51b8152600401610245906120a0565b6002546040805163d3c7c2c760e01b815290516000926001600160a01b03169163d3c7c2c79160048083019286929190829003018186803b158015610d7357600080fd5b505afa158015610d87573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610daf9190810190611cab565b905060005b8151811015610a92576000806001600160a01b0316838381518110610de957634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516001600160a01b031614610ef557828281518110610e2357634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610e5a9190611f0a565b60206040518083038186803b158015610e7257600080fd5b505afa158015610e86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaa9190611ed1565b90508015610ef557610ef581848481518110610ed657634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516931b7b63632b1ba34b7b760b11b610f5c565b5080610f00816122f1565b915050610db4565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610f7084610f6b856119dc565b611a89565b90506000610faf610fa1837f0000000000000000000000000000000000000000000000000000000000000000611a91565b610faa866119dc565b611ad1565b90506000610fe9610fe0847f0000000000000000000000000000000000000000000000000000000000000000611a91565b610faa876119dc565b9050600061102361101a857f0000000000000000000000000000000000000000000000000000000000000000611a91565b610faa886119dc565b9050600061105d611054867f0000000000000000000000000000000000000000000000000000000000000000611a91565b610faa896119dc565b9050856931b7b63632b1ba34b7b760b11b141561149b57831561113b5760095460405163a9059cbb60e01b81526001600160a01b038981169263a9059cbb926110ae92909116908890600401611f1e565b602060405180830381600087803b1580156110c857600080fd5b505af11580156110dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111009190611e11565b506009546040516001600160a01b039091169060008051602061234e83398151915290611132908a90889042906120d5565b60405180910390a25b60008211801561116257506001600160a01b03871660009081526003602052604090205415155b15611308576001600160a01b03871660009081526003602052604090205461118b908390611b33565b915060005b6001600160a01b038816600090815260036020526040902054811015611306576001600160a01b0388166000818152600360205260409020805463a9059cbb9190849081106111ef57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160e01b031960e084901b168152611227916001600160a01b0316908790600401611f1e565b602060405180830381600087803b15801561124157600080fd5b505af1158015611255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112799190611e11565b506001600160a01b03881660009081526003602052604090208054829081106112b257634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160a01b039091169060008051602061234e833981519152906112ec908b9087904290612107565b60405180910390a2806112fe816122f1565b915050611190565b505b80156113cf5760075460405163a9059cbb60e01b81526001600160a01b038981169263a9059cbb9261134292909116908590600401611f1e565b602060405180830381600087803b15801561135c57600080fd5b505af1158015611370573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113949190611e11565b506007546040516001600160a01b039091169060008051602061234e833981519152906113c6908a908590429061206f565b60405180910390a25b82156114965760085460405163a9059cbb60e01b81526001600160a01b038981169263a9059cbb9261140992909116908790600401611f1e565b602060405180830381600087803b15801561142357600080fd5b505af1158015611437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145b9190611e11565b506008546040516001600160a01b039091169060008051602061234e8339815191529061148d908a908790429061200b565b60405180910390a25b6119d2565b85636665657360e01b14156119d25781156115715760075460405163a9059cbb60e01b81526001600160a01b038981169263a9059cbb926114e492909116908690600401611f1e565b602060405180830381600087803b1580156114fe57600080fd5b505af1158015611512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115369190611e11565b506007546040516001600160a01b039091169060008051602061234e83398151915290611568908a908690429061206f565b60405180910390a25b80156116385760095460405163a9059cbb60e01b81526001600160a01b038981169263a9059cbb926115ab92909116908590600401611f1e565b602060405180830381600087803b1580156115c557600080fd5b505af11580156115d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fd9190611e11565b506009546040516001600160a01b039091169060008051602061234e8339815191529061162f908a90859042906120d5565b60405180910390a25b60008411801561165f57506001600160a01b03871660009081526003602052604090205415155b15611805576001600160a01b038716600090815260036020526040902054611688908590611ad1565b935060005b6001600160a01b038816600090815260036020526040902054811015611803576001600160a01b0388166000818152600360205260409020805463a9059cbb9190849081106116ec57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160e01b031960e084901b168152611724916001600160a01b0316908990600401611f1e565b602060405180830381600087803b15801561173e57600080fd5b505af1158015611752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117769190611e11565b506001600160a01b03881660009081526003602052604090208054829081106117af57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160a01b039091169060008051602061234e833981519152906117e9908b9089904290612107565b60405180910390a2806117fb816122f1565b91505061168d565b505b60008311801561182c57506001600160a01b03871660009081526005602052604090205415155b156119d2576001600160a01b038716600090815260056020526040902054611855908490611ad1565b925060005b6001600160a01b0388166000908152600560205260409020548110156119d0576001600160a01b0388166000818152600560205260409020805463a9059cbb9190849081106118b957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160e01b031960e084901b1681526118f1916001600160a01b0316908890600401611f1e565b602060405180830381600087803b15801561190b57600080fd5b505af115801561191f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119439190611e11565b506001600160a01b038816600090815260056020526040902080548290811061197c57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160a01b039091169060008051602061234e833981519152906119b6908b908890429061203d565b60405180910390a2806119c8816122f1565b91505061185a565b505b5050505050505050565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611a1857600080fd5b505afa158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a509190611ee9565b60ff1690506000611a62601283611b4c565b9050611a6f81600a6121ed565b611a8190670de0b6b3a76400006122bb565b949350505050565b60006105e383835b600080611a9e83856122bb565b9050611abf841580611ab8575083611ab68684612187565b145b6003611b68565b611a81670de0b6b3a764000082612187565b6000611ae08215156004611b68565b82611aed575060006105e6565b6000611b01670de0b6b3a7640000856122bb565b9050611b21670de0b6b3a7640000611b198684612187565b146005611b68565b611b2b8382612187565b9150506105e6565b6000611b428215156004611b68565b6105e38284612187565b6000611b5c838311156001611b68565b6000611a8183856122da565b81610a925762461bcd60e51b600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610a92918391610c51916210905360ea1b906242414c90606490fd5b80516104ad81612338565b600060208284031215611bea578081fd5b8135611bf581612338565b9392505050565b600060208284031215611c0d578081fd5b8151611bf581612338565b60008060408385031215611c2a578081fd5b8235611c3581612338565b91506020830135611c4581612338565b809150509250929050565b60008060008060808587031215611c65578182fd5b8435611c7081612338565b93506020850135611c8081612338565b92506040850135611c9081612338565b91506060850135611ca081612338565b939692955090935050565b60006020808385031215611cbd578182fd5b825167ffffffffffffffff80821115611cd4578384fd5b818501915085601f830112611ce7578384fd5b815181811115611cf957611cf9612322565b611d06848583020161215d565b81815284810190848601875b84811015611e025781518701601f196040828e0382011215611d32578a8bfd5b604051604081018181108a82111715611d4d57611d4d612322565b604052828b015189811115611d60578c8dfd5b8301603f81018f13611d70578c8dfd5b8b8101518a811115611d8457611d84612322565b611d948d85601f8401160161215d565b93508084528f6040828401011115611daa578d8efd5b8d5b81811015611dc857828101604001518582018f01528d01611dac565b81811115611dd8578e8e83870101525b505050818152611dea60408401611bce565b818c0152865250509287019290870190600101611d12565b50909998505050505050505050565b600060208284031215611e22578081fd5b81518015158114611bf5578182fd5b600060208284031215611e42578081fd5b5035919050565b60008060408385031215611e5b578182fd5b823591506020830135611c4581612338565b600080600060608486031215611e81578283fd5b833592506020840135611e9381612338565b91506040840135611ea381612338565b809150509250925092565b60008060408385031215611ec0578182fd5b505080516020909101519092909150565b600060208284031215611ee2578081fd5b5051919050565b600060208284031215611efa578081fd5b815160ff81168114611bf5578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015611f785783516001600160a01b031683529284019291840191600101611f53565b50909695505050505050565b901515815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b660acd2c286c2e6d60cb1b8152602081019190915260400190565b66159a58509bdb9960ca1b8152602081019190915260400190565b67547265617375727960c01b81526001600160a01b039390931660208401526040830191909152606082015260800190565b6727b832b930ba37b960c11b81526001600160a01b039390931660208401526040830191909152606082015260800190565b66526f79616c747960c81b81526001600160a01b039390931660208401526040830191909152606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6724b73b32b9ba37b960c11b81526001600160a01b039390931660208401526040830191909152606082015260800190565b67427573696e65737360c01b81526001600160a01b039390931660208401526040830191909152606082015260800190565b90815260200190565b93845260208401929092526040830152606082015260800190565b60405181810167ffffffffffffffff8111828210171561217f5761217f612322565b604052919050565b6000826121a257634e487b7160e01b81526012600452602481fd5b500490565b80825b60018086116121b957506121e4565b8187048211156121cb576121cb61230c565b808616156121d857918102915b9490941c9380026121aa565b94509492505050565b60006105e3600019848460008261220657506001611bf5565b8161221357506000611bf5565b8160018114612229576002811461223357612260565b6001915050611bf5565b60ff8411156122445761224461230c565b6001841b91508482111561225a5761225a61230c565b50611bf5565b5060208310610133831016604e8410600b8410161715612293575081810a8381111561228e5761228e61230c565b611bf5565b6122a084848460016121a7565b8086048211156122b2576122b261230c565b02949350505050565b60008160001904831182151516156122d5576122d561230c565b500290565b6000828210156122ec576122ec61230c565b500390565b60006000198214156123055761230561230c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610c5157600080fdfefd34476424b11728dd439a5eb333973b6c5938474e1f5b123928c97ca869414da2646970667358221220df9b63eb6b2d7d5a731f93f0ff8b0725737972b0926b632012e3b5d9242f01ad64736f6c63430008000033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80637d8e98311161008c578063e081d92f11610066578063e081d92f146101b8578063f2fde38b146101d8578063f8c8765e146101eb578063ff43df4e146101fe576100ea565b80637d8e9831146101835780638da5cb5b1461019b578063b069bbbb146101b0576100ea565b806350ed5a0b116100c857806350ed5a0b146101405780635c975abb14610153578063715018a6146101685780637507f8d014610170576100ea565b80630ab36de2146100ef5780633d66d8a8146101045780634fb0b3041461012d575b600080fd5b6101026100fd366004611e6d565b610206565b005b610117610112366004611e31565b610350565b6040516101249190612139565b60405180910390f35b61011761013b366004611e31565b6104b2565b61011761014e366004611c18565b610524565b61015b6105ec565b6040516101249190611f84565b6101026105fc565b61011761017e366004611c18565b610647565b61018b6106b4565b6040516101249493929190612142565b6101a361073e565b6040516101249190611f0a565b61010261074d565b6101cb6101c6366004611e49565b610a96565b6040516101249190611f37565b6101026101e6366004611bd9565b610be3565b6101026101f9366004611c50565b610c54565b610102610cf0565b61020e610f08565b6001600160a01b031661021f61073e565b6001600160a01b03161461024e5760405162461bcd60e51b8152600401610245906120a0565b60405180910390fd5b8267427573696e65737360c01b14156102cf576001600160a01b0382166000908152600460205260409020546102ca576001600160a01b03818116600090815260036020908152604080832080546001810182558185528385200180546001600160a01b03191695881695861790555493835260049091529020555b61034b565b826727b832b930ba37b960c11b141561034b576001600160a01b03821660009081526006602052604090205461034b576001600160a01b03818116600090815260056020908152604080832080546001810182558185528385200180546001600160a01b03191695881695861790555493835260069091529020555b505050565b600061035a610f08565b6001600160a01b031661036b61073e565b6001600160a01b0316146103915760405162461bcd60e51b8152600401610245906120a0565b600154604051632ea7791760e01b81526000916001600160a01b031690632ea77917906103c2908690600401611ff0565b60206040518083038186803b1580156103da57600080fd5b505afa1580156103ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104129190611bfc565b90506001600160a01b038116156104a7576040516370a0823160e01b81526001600160a01b038216906370a082319061044f903090600401611f0a565b60206040518083038186803b15801561046757600080fd5b505afa15801561047b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049f9190611ed1565b9150506104ad565b60009150505b919050565b60006104bc610f08565b6001600160a01b03166104cd61073e565b6001600160a01b0316146104f35760405162461bcd60e51b8152600401610245906120a0565b600154604051632ea7791760e01b81526000916001600160a01b031690632ea77917906103c2908690600401611fd5565b600061052e610f08565b6001600160a01b031661053f61073e565b6001600160a01b0316146105655760405162461bcd60e51b8152600401610245906120a0565b604051635bccd17760e01b81526001600160a01b03841690635bccd17790610591908590600401611f0a565b602060405180830381600087803b1580156105ab57600080fd5b505af11580156105bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e39190611ed1565b90505b92915050565b600054600160a01b900460ff1690565b610604610f08565b6001600160a01b031661061561073e565b6001600160a01b03161461063b5760405162461bcd60e51b8152600401610245906120a0565b6106456000610f0c565b565b6000610651610f08565b6001600160a01b031661066261073e565b6001600160a01b0316146106885760405162461bcd60e51b8152600401610245906120a0565b6040516316c8b3a360e11b81526001600160a01b03841690632d91674690610591908590600401611f0a565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000090919293565b6000546001600160a01b031690565b610755610f08565b6001600160a01b031661076661073e565b6001600160a01b03161461078c5760405162461bcd60e51b8152600401610245906120a0565b600154604080516378a8956760e01b815290516000926001600160a01b0316916378a89567916004808301926020929190829003018186803b1580156107d157600080fd5b505afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108099190611ed1565b905060005b81811015610a9257600154604051631c96a19760e31b81526000916001600160a01b03169063e4b50cb890610847908590600401612139565b60206040518083038186803b15801561085f57600080fd5b505afa158015610873573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108979190611bfc565b60015460405163668151a760e01b81529192506000916001600160a01b039091169063668151a7906108cd908590600401611f0a565b604080518083038186803b1580156108e457600080fd5b505afa1580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190611eae565b91505080660acd2c286c2e6d60cb1b14156109d0576040516370a0823160e01b81526000906001600160a01b038416906370a0823190610960903090600401611f0a565b60206040518083038186803b15801561097857600080fd5b505afa15801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b09190611ed1565b905080156109ca576109ca8184636665657360e01b610f5c565b50610a7d565b8066159a58509bdb9960ca1b1415610a7d576040516370a0823160e01b81526000906001600160a01b038416906370a0823190610a11903090600401611f0a565b60206040518083038186803b158015610a2957600080fd5b505afa158015610a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a619190611ed1565b90508015610a7b57610a7b8184636665657360e01b610f5c565b505b50508080610a8a906122f1565b91505061080e565b5050565b6060610aa0610f08565b6001600160a01b0316610ab161073e565b6001600160a01b031614610ad75760405162461bcd60e51b8152600401610245906120a0565b8267427573696e65737360c01b1415610b5e576001600160a01b03821660009081526003602090815260409182902080548351818402810184019094528084529091830182828015610b5257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610b34575b505050505090506105e6565b826727b832b930ba37b960c11b14156105e6576001600160a01b03821660009081526005602090815260409182902080548351818402810184019094528084529091830182828015610b52576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610b3457505050505090506105e6565b610beb610f08565b6001600160a01b0316610bfc61073e565b6001600160a01b031614610c225760405162461bcd60e51b8152600401610245906120a0565b6001600160a01b038116610c485760405162461bcd60e51b815260040161024590611f8f565b610c5181610f0c565b50565b610c5c610f08565b6001600160a01b0316610c6d61073e565b6001600160a01b031614610c935760405162461bcd60e51b8152600401610245906120a0565b600180546001600160a01b03199081166001600160a01b0396871617909155600780548216948616949094179093556008805484169285169290921790915560098054831691909316908117909255600280549091169091179055565b610cf8610f08565b6001600160a01b0316610d0961073e565b6001600160a01b031614610d2f5760405162461bcd60e51b8152600401610245906120a0565b6002546040805163d3c7c2c760e01b815290516000926001600160a01b03169163d3c7c2c79160048083019286929190829003018186803b158015610d7357600080fd5b505afa158015610d87573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610daf9190810190611cab565b905060005b8151811015610a92576000806001600160a01b0316838381518110610de957634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516001600160a01b031614610ef557828281518110610e2357634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610e5a9190611f0a565b60206040518083038186803b158015610e7257600080fd5b505afa158015610e86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaa9190611ed1565b90508015610ef557610ef581848481518110610ed657634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516931b7b63632b1ba34b7b760b11b610f5c565b5080610f00816122f1565b915050610db4565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610f7084610f6b856119dc565b611a89565b90506000610faf610fa1837f0000000000000000000000000000000000000000000000000000000000000000611a91565b610faa866119dc565b611ad1565b90506000610fe9610fe0847f0000000000000000000000000000000000000000000000000000000000000000611a91565b610faa876119dc565b9050600061102361101a857f0000000000000000000000000000000000000000000000000000000000000000611a91565b610faa886119dc565b9050600061105d611054867f0000000000000000000000000000000000000000000000000000000000000000611a91565b610faa896119dc565b9050856931b7b63632b1ba34b7b760b11b141561149b57831561113b5760095460405163a9059cbb60e01b81526001600160a01b038981169263a9059cbb926110ae92909116908890600401611f1e565b602060405180830381600087803b1580156110c857600080fd5b505af11580156110dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111009190611e11565b506009546040516001600160a01b039091169060008051602061234e83398151915290611132908a90889042906120d5565b60405180910390a25b60008211801561116257506001600160a01b03871660009081526003602052604090205415155b15611308576001600160a01b03871660009081526003602052604090205461118b908390611b33565b915060005b6001600160a01b038816600090815260036020526040902054811015611306576001600160a01b0388166000818152600360205260409020805463a9059cbb9190849081106111ef57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160e01b031960e084901b168152611227916001600160a01b0316908790600401611f1e565b602060405180830381600087803b15801561124157600080fd5b505af1158015611255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112799190611e11565b506001600160a01b03881660009081526003602052604090208054829081106112b257634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160a01b039091169060008051602061234e833981519152906112ec908b9087904290612107565b60405180910390a2806112fe816122f1565b915050611190565b505b80156113cf5760075460405163a9059cbb60e01b81526001600160a01b038981169263a9059cbb9261134292909116908590600401611f1e565b602060405180830381600087803b15801561135c57600080fd5b505af1158015611370573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113949190611e11565b506007546040516001600160a01b039091169060008051602061234e833981519152906113c6908a908590429061206f565b60405180910390a25b82156114965760085460405163a9059cbb60e01b81526001600160a01b038981169263a9059cbb9261140992909116908790600401611f1e565b602060405180830381600087803b15801561142357600080fd5b505af1158015611437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145b9190611e11565b506008546040516001600160a01b039091169060008051602061234e8339815191529061148d908a908790429061200b565b60405180910390a25b6119d2565b85636665657360e01b14156119d25781156115715760075460405163a9059cbb60e01b81526001600160a01b038981169263a9059cbb926114e492909116908690600401611f1e565b602060405180830381600087803b1580156114fe57600080fd5b505af1158015611512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115369190611e11565b506007546040516001600160a01b039091169060008051602061234e83398151915290611568908a908690429061206f565b60405180910390a25b80156116385760095460405163a9059cbb60e01b81526001600160a01b038981169263a9059cbb926115ab92909116908590600401611f1e565b602060405180830381600087803b1580156115c557600080fd5b505af11580156115d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fd9190611e11565b506009546040516001600160a01b039091169060008051602061234e8339815191529061162f908a90859042906120d5565b60405180910390a25b60008411801561165f57506001600160a01b03871660009081526003602052604090205415155b15611805576001600160a01b038716600090815260036020526040902054611688908590611ad1565b935060005b6001600160a01b038816600090815260036020526040902054811015611803576001600160a01b0388166000818152600360205260409020805463a9059cbb9190849081106116ec57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160e01b031960e084901b168152611724916001600160a01b0316908990600401611f1e565b602060405180830381600087803b15801561173e57600080fd5b505af1158015611752573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117769190611e11565b506001600160a01b03881660009081526003602052604090208054829081106117af57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160a01b039091169060008051602061234e833981519152906117e9908b9089904290612107565b60405180910390a2806117fb816122f1565b91505061168d565b505b60008311801561182c57506001600160a01b03871660009081526005602052604090205415155b156119d2576001600160a01b038716600090815260056020526040902054611855908490611ad1565b925060005b6001600160a01b0388166000908152600560205260409020548110156119d0576001600160a01b0388166000818152600560205260409020805463a9059cbb9190849081106118b957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160e01b031960e084901b1681526118f1916001600160a01b0316908890600401611f1e565b602060405180830381600087803b15801561190b57600080fd5b505af115801561191f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119439190611e11565b506001600160a01b038816600090815260056020526040902080548290811061197c57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160a01b039091169060008051602061234e833981519152906119b6908b908890429061203d565b60405180910390a2806119c8816122f1565b91505061185a565b505b5050505050505050565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611a1857600080fd5b505afa158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a509190611ee9565b60ff1690506000611a62601283611b4c565b9050611a6f81600a6121ed565b611a8190670de0b6b3a76400006122bb565b949350505050565b60006105e383835b600080611a9e83856122bb565b9050611abf841580611ab8575083611ab68684612187565b145b6003611b68565b611a81670de0b6b3a764000082612187565b6000611ae08215156004611b68565b82611aed575060006105e6565b6000611b01670de0b6b3a7640000856122bb565b9050611b21670de0b6b3a7640000611b198684612187565b146005611b68565b611b2b8382612187565b9150506105e6565b6000611b428215156004611b68565b6105e38284612187565b6000611b5c838311156001611b68565b6000611a8183856122da565b81610a925762461bcd60e51b600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610a92918391610c51916210905360ea1b906242414c90606490fd5b80516104ad81612338565b600060208284031215611bea578081fd5b8135611bf581612338565b9392505050565b600060208284031215611c0d578081fd5b8151611bf581612338565b60008060408385031215611c2a578081fd5b8235611c3581612338565b91506020830135611c4581612338565b809150509250929050565b60008060008060808587031215611c65578182fd5b8435611c7081612338565b93506020850135611c8081612338565b92506040850135611c9081612338565b91506060850135611ca081612338565b939692955090935050565b60006020808385031215611cbd578182fd5b825167ffffffffffffffff80821115611cd4578384fd5b818501915085601f830112611ce7578384fd5b815181811115611cf957611cf9612322565b611d06848583020161215d565b81815284810190848601875b84811015611e025781518701601f196040828e0382011215611d32578a8bfd5b604051604081018181108a82111715611d4d57611d4d612322565b604052828b015189811115611d60578c8dfd5b8301603f81018f13611d70578c8dfd5b8b8101518a811115611d8457611d84612322565b611d948d85601f8401160161215d565b93508084528f6040828401011115611daa578d8efd5b8d5b81811015611dc857828101604001518582018f01528d01611dac565b81811115611dd8578e8e83870101525b505050818152611dea60408401611bce565b818c0152865250509287019290870190600101611d12565b50909998505050505050505050565b600060208284031215611e22578081fd5b81518015158114611bf5578182fd5b600060208284031215611e42578081fd5b5035919050565b60008060408385031215611e5b578182fd5b823591506020830135611c4581612338565b600080600060608486031215611e81578283fd5b833592506020840135611e9381612338565b91506040840135611ea381612338565b809150509250925092565b60008060408385031215611ec0578182fd5b505080516020909101519092909150565b600060208284031215611ee2578081fd5b5051919050565b600060208284031215611efa578081fd5b815160ff81168114611bf5578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015611f785783516001600160a01b031683529284019291840191600101611f53565b50909695505050505050565b901515815260200190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b660acd2c286c2e6d60cb1b8152602081019190915260400190565b66159a58509bdb9960ca1b8152602081019190915260400190565b67547265617375727960c01b81526001600160a01b039390931660208401526040830191909152606082015260800190565b6727b832b930ba37b960c11b81526001600160a01b039390931660208401526040830191909152606082015260800190565b66526f79616c747960c81b81526001600160a01b039390931660208401526040830191909152606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6724b73b32b9ba37b960c11b81526001600160a01b039390931660208401526040830191909152606082015260800190565b67427573696e65737360c01b81526001600160a01b039390931660208401526040830191909152606082015260800190565b90815260200190565b93845260208401929092526040830152606082015260800190565b60405181810167ffffffffffffffff8111828210171561217f5761217f612322565b604052919050565b6000826121a257634e487b7160e01b81526012600452602481fd5b500490565b80825b60018086116121b957506121e4565b8187048211156121cb576121cb61230c565b808616156121d857918102915b9490941c9380026121aa565b94509492505050565b60006105e3600019848460008261220657506001611bf5565b8161221357506000611bf5565b8160018114612229576002811461223357612260565b6001915050611bf5565b60ff8411156122445761224461230c565b6001841b91508482111561225a5761225a61230c565b50611bf5565b5060208310610133831016604e8410600b8410161715612293575081810a8381111561228e5761228e61230c565b611bf5565b6122a084848460016121a7565b8086048211156122b2576122b261230c565b02949350505050565b60008160001904831182151516156122d5576122d561230c565b500290565b6000828210156122ec576122ec61230c565b500390565b60006000198214156123055761230561230c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610c5157600080fdfefd34476424b11728dd439a5eb333973b6c5938474e1f5b123928c97ca869414da2646970667358221220df9b63eb6b2d7d5a731f93f0ff8b0725737972b0926b632012e3b5d9242f01ad64736f6c63430008000033",
    "immutableReferences": {
        "917": [
            {
                "length": 32,
                "start": 1718
            },
            {
                "length": 32,
                "start": 3965
            }
        ],
        "919": [
            {
                "length": 32,
                "start": 1751
            },
            {
                "length": 32,
                "start": 4086
            }
        ],
        "921": [
            {
                "length": 32,
                "start": 1784
            },
            {
                "length": 32,
                "start": 4144
            }
        ],
        "923": [
            {
                "length": 32,
                "start": 1817
            },
            {
                "length": 32,
                "start": 4028
            }
        ]
    },
    "generatedSources": [
        {
            "ast": {
                "nodeType": "YulBlock",
                "src": "0:394:19",
                "statements": [
                    {
                        "nodeType": "YulBlock",
                        "src": "6:3:19",
                        "statements": []
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "146:246:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "193:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "202:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "210:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "195:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "195:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "195:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "167:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "176:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "163:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "163:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "188:3:19",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "159:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "159:33:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "156:2:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "228:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "244:9:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "238:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "238:16:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:6:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "263:35:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "283:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "294:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "279:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "279:18:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "273:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "273:25:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "263:6:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "307:35:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "327:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "338:2:19",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "323:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "323:18:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "317:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "317:25:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "307:6:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "351:35:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "371:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "382:2:19",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "367:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "367:18:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "361:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "361:25:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value3",
                                            "nodeType": "YulIdentifier",
                                            "src": "351:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "88:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "99:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "111:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "119:6:19",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "127:6:19",
                                "type": ""
                            },
                            {
                                "name": "value3",
                                "nodeType": "YulTypedName",
                                "src": "135:6:19",
                                "type": ""
                            }
                        ],
                        "src": "14:378:19"
                    }
                ]
            },
            "contents": "{\n    { }\n    function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n        value2 := mload(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n    }\n}",
            "id": 19,
            "language": "Yul",
            "name": "#utility.yul"
        }
    ],
    "deployedGeneratedSources": [
        {
            "ast": {
                "nodeType": "YulBlock",
                "src": "0:14676:19",
                "statements": [
                    {
                        "nodeType": "YulBlock",
                        "src": "6:3:19",
                        "statements": []
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "76:80:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "86:22:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "101:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "95:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "95:13:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "86:5:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "144:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "117:26:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "117:33:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "117:33:19"
                                }
                            ]
                        },
                        "name": "abi_decode_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "offset",
                                "nodeType": "YulTypedName",
                                "src": "55:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "66:5:19",
                                "type": ""
                            }
                        ],
                        "src": "14:142:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "231:189:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "277:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "286:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "294:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "279:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "279:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "279:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "252:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "261:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "248:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "248:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "273:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "244:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "244:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "241:2:19"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "312:36:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "338:9:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "325:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "325:23:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "316:5:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "384:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "357:26:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "357:33:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "357:33:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "399:15:19",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "409:5:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "399:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "197:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "208:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "220:6:19",
                                "type": ""
                            }
                        ],
                        "src": "161:259:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "506:182:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "552:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "561:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "569:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "554:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "554:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "554:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "527:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "536:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "523:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "523:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "548:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "519:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "519:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "516:2:19"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "587:29:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "606:9:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "600:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "600:16:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "591:5:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "652:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "625:26:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "625:33:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "625:33:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "667:15:19",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "677:5:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "667:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "472:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "483:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "495:6:19",
                                "type": ""
                            }
                        ],
                        "src": "425:263:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "780:315:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "826:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "835:6:19"
                                                        },
                                                        {
                                                            "name": "value1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "843:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "828:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "828:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "828:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "801:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "810:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "797:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "797:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "822:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "793:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "793:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "790:2:19"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "861:36:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "887:9:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "874:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "874:23:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "865:5:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "933:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "906:26:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "906:33:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "906:33:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "948:15:19",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "958:5:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "948:6:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "972:47:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1004:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1015:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1000:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1000:18:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "987:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "987:32:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "value_1",
                                            "nodeType": "YulTypedName",
                                            "src": "976:7:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "1055:7:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "1028:26:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1028:35:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1028:35:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1072:17:19",
                                    "value": {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1082:7:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1072:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "738:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "749:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "761:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "769:6:19",
                                "type": ""
                            }
                        ],
                        "src": "693:402:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1221:568:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "1268:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value2",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1277:6:19"
                                                        },
                                                        {
                                                            "name": "value2",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1285:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1270:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1270:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "1270:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1242:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1251:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1238:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1238:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1263:3:19",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "1234:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1234:33:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "1231:2:19"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1303:36:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "1329:9:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1316:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1316:23:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "1307:5:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1375:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "1348:26:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1348:33:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1348:33:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1390:15:19",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1400:5:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1390:6:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1414:47:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1446:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1457:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1442:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1442:18:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1429:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1429:32:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "value_1",
                                            "nodeType": "YulTypedName",
                                            "src": "1418:7:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "1497:7:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "1470:26:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1470:35:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1470:35:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1514:17:19",
                                    "value": {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1524:7:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1514:6:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1540:47:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1572:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1583:2:19",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1568:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1568:18:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1555:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1555:32:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "value_2",
                                            "nodeType": "YulTypedName",
                                            "src": "1544:7:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "1623:7:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "1596:26:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1596:35:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1596:35:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1640:17:19",
                                    "value": {
                                        "name": "value_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1650:7:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1640:6:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1666:47:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1698:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "1709:2:19",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1694:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1694:18:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1681:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1681:32:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "value_3",
                                            "nodeType": "YulTypedName",
                                            "src": "1670:7:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "1749:7:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "1722:26:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1722:35:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1722:35:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "1766:17:19",
                                    "value": {
                                        "name": "value_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "1776:7:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1766:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "1163:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "1174:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "1186:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "1194:6:19",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "1202:6:19",
                                "type": ""
                            },
                            {
                                "name": "value3",
                                "nodeType": "YulTypedName",
                                "src": "1210:6:19",
                                "type": ""
                            }
                        ],
                        "src": "1100:689:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "1923:2065:19",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1933:12:19",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1943:2:19",
                                        "type": "",
                                        "value": "32"
                                    },
                                    "variables": [
                                        {
                                            "name": "_1",
                                            "nodeType": "YulTypedName",
                                            "src": "1937:2:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "1990:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "1999:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2007:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1992:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "1992:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "1992:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1965:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "1974:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1961:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1961:23:19"
                                            },
                                            {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "1986:2:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "1957:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1957:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "1954:2:19"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2025:30:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2045:9:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2039:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2039:16:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "offset",
                                            "nodeType": "YulTypedName",
                                            "src": "2029:6:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2064:28:19",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2074:18:19",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                    },
                                    "variables": [
                                        {
                                            "name": "_2",
                                            "nodeType": "YulTypedName",
                                            "src": "2068:2:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "2119:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2128:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2136:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2121:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2121:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "2121:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "2107:6:19"
                                            },
                                            {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "2115:2:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2104:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2104:14:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2101:2:19"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2154:32:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "2168:9:19"
                                            },
                                            {
                                                "name": "offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "2179:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2164:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2164:22:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "_3",
                                            "nodeType": "YulTypedName",
                                            "src": "2158:2:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "2234:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2243:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2251:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2236:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2236:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "2236:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "_3",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2213:2:19"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2217:4:19",
                                                                "type": "",
                                                                "value": "0x1f"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2209:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2209:13:19"
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2224:7:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "slt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2205:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2205:27:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "2198:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2198:35:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2195:2:19"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2269:19:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "2285:2:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2279:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2279:9:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "_4",
                                            "nodeType": "YulTypedName",
                                            "src": "2273:2:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "2311:22:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x41",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2313:16:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2313:18:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "2313:18:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "2303:2:19"
                                            },
                                            {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "2307:2:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2300:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2300:10:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2297:2:19"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2342:47:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "_4",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2376:2:19"
                                                            },
                                                            {
                                                                "name": "_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2380:2:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "mul",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2372:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2372:11:19"
                                                    },
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2385:2:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2368:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2368:20:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "allocateMemory",
                                            "nodeType": "YulIdentifier",
                                            "src": "2353:14:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2353:36:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "dst",
                                            "nodeType": "YulTypedName",
                                            "src": "2346:3:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2398:16:19",
                                    "value": {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "2411:3:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "dst_1",
                                            "nodeType": "YulTypedName",
                                            "src": "2402:5:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "dst",
                                                "nodeType": "YulIdentifier",
                                                "src": "2430:3:19"
                                            },
                                            {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "2435:2:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "2423:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2423:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2423:15:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "2447:19:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "dst",
                                                "nodeType": "YulIdentifier",
                                                "src": "2458:3:19"
                                            },
                                            {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "2463:2:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2454:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2454:12:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "dst",
                                            "nodeType": "YulIdentifier",
                                            "src": "2447:3:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2475:22:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "2490:2:19"
                                            },
                                            {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "2494:2:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2486:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2486:11:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "src",
                                            "nodeType": "YulTypedName",
                                            "src": "2479:3:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2506:15:19",
                                    "value": {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2515:6:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "2510:1:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "2575:1383:19",
                                        "statements": [
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "2589:29:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "_3",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2603:2:19"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "src",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2613:3:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "mload",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2607:5:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2607:10:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2599:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2599:19:19"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "_5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2593:2:19",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "2631:17:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2645:2:19",
                                                            "type": "",
                                                            "value": "31"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "not",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2641:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2641:7:19"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "_6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2635:2:19",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2701:26:19",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2710:6:19"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2718:6:19"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2703:6:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2703:22:19"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2703:22:19"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "dataEnd",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2676:7:19"
                                                                        },
                                                                        {
                                                                            "name": "_5",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2685:2:19"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "sub",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2672:3:19"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "2672:16:19"
                                                                },
                                                                {
                                                                    "name": "_6",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2690:2:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2668:3:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2668:25:19"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2695:4:19",
                                                            "type": "",
                                                            "value": "0x40"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "slt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2664:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2664:36:19"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "2661:2:19"
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "2740:25:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2760:4:19",
                                                            "type": "",
                                                            "value": "0x40"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mload",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2754:5:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2754:11:19"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2744:6:19",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "2778:35:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "memPtr",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2800:6:19"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2808:4:19",
                                                            "type": "",
                                                            "value": "0x40"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2796:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2796:17:19"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "newFreePtr",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2782:10:19",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2876:22:19",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [],
                                                                "functionName": {
                                                                    "name": "panic_error_0x41",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2878:16:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2878:18:19"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2878:18:19"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2835:10:19"
                                                                },
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2847:2:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "gt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2832:2:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2832:18:19"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2855:10:19"
                                                                },
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2867:6:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "lt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2852:2:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2852:22:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "or",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2829:2:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2829:46:19"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "2826:2:19"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2918:4:19",
                                                            "type": "",
                                                            "value": "0x40"
                                                        },
                                                        {
                                                            "name": "newFreePtr",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2924:10:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2911:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2911:24:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "2911:24:19"
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "2948:34:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "_5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2974:2:19"
                                                                },
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2978:2:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2970:3:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2970:11:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mload",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2964:5:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2964:18:19"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "offset_1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2952:8:19",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3015:26:19",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3024:6:19"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3032:6:19"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3017:6:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3017:22:19"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3017:22:19"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "offset_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3001:8:19"
                                                        },
                                                        {
                                                            "name": "_2",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3011:2:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "gt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2998:2:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2998:16:19"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "2995:2:19"
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "3054:27:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "_5",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3068:2:19"
                                                        },
                                                        {
                                                            "name": "offset_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3072:8:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3064:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3064:17:19"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "_7",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3058:2:19",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3131:26:19",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3140:6:19"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3148:6:19"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3133:6:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3133:22:19"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3133:22:19"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "_7",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3112:2:19"
                                                                        },
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "3116:2:19",
                                                                            "type": "",
                                                                            "value": "63"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3108:3:19"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "3108:11:19"
                                                                },
                                                                {
                                                                    "name": "dataEnd",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3121:7:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "slt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3104:3:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3104:25:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "iszero",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3097:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3097:33:19"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "3094:2:19"
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "3170:28:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "_7",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3190:2:19"
                                                                },
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3194:2:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3186:3:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3186:11:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mload",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3180:5:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3180:18:19"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "_8",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3174:2:19",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3225:22:19",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [],
                                                                "functionName": {
                                                                    "name": "panic_error_0x41",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3227:16:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3227:18:19"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3227:18:19"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "_8",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3217:2:19"
                                                        },
                                                        {
                                                            "name": "_2",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3221:2:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "gt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3214:2:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3214:10:19"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "3211:2:19"
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "3260:60:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "_8",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3300:2:19"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3304:4:19",
                                                                                    "type": "",
                                                                                    "value": "0x1f"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3296:3:19"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3296:13:19"
                                                                        },
                                                                        {
                                                                            "name": "_6",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3311:2:19"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "and",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3292:3:19"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "3292:22:19"
                                                                },
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3316:2:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3288:3:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3288:31:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "allocateMemory",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3273:14:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3273:47:19"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "array",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3264:5:19",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "array",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3340:5:19"
                                                        },
                                                        {
                                                            "name": "_8",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3347:2:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3333:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3333:17:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "3333:17:19"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3402:26:19",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3411:6:19"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3419:6:19"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3404:6:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3404:22:19"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3404:22:19"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "_7",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3377:2:19"
                                                                        },
                                                                        {
                                                                            "name": "_8",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3381:2:19"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3373:3:19"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "3373:11:19"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "3386:4:19",
                                                                    "type": "",
                                                                    "value": "0x40"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3369:3:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3369:22:19"
                                                        },
                                                        {
                                                            "name": "dataEnd",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3393:7:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "gt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3366:2:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3366:35:19"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "3363:2:19"
                                            },
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "3441:17:19",
                                                "value": {
                                                    "name": "value0",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3452:6:19"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "i_1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3445:3:19",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3527:96:19",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "array",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3560:5:19"
                                                                                    },
                                                                                    {
                                                                                        "name": "i_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3567:3:19"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3556:3:19"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3556:15:19"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3573:2:19"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3552:3:19"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3552:24:19"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "_7",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3592:2:19"
                                                                                            },
                                                                                            {
                                                                                                "name": "i_1",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3596:3:19"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3588:3:19"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "3588:12:19"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3602:4:19",
                                                                                        "type": "",
                                                                                        "value": "0x40"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3584:3:19"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3584:23:19"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3578:5:19"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3578:30:19"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3545:6:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3545:64:19"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3545:64:19"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "i_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3482:3:19"
                                                        },
                                                        {
                                                            "name": "_8",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3487:2:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "lt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3479:2:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3479:11:19"
                                                },
                                                "nodeType": "YulForLoop",
                                                "post": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3491:23:19",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3493:19:19",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3504:3:19"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3509:2:19"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3500:3:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3500:12:19"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "i_1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3493:3:19"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "pre": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3475:3:19",
                                                    "statements": []
                                                },
                                                "src": "3471:152:19"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3663:71:19",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "array",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3696:5:19"
                                                                                    },
                                                                                    {
                                                                                        "name": "_8",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3703:2:19"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3692:3:19"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3692:14:19"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3708:2:19"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3688:3:19"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3688:23:19"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3713:6:19"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3681:6:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3681:39:19"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3681:39:19"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "i_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3642:3:19"
                                                        },
                                                        {
                                                            "name": "_8",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3647:2:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "gt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3639:2:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3639:11:19"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "3636:2:19"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "memPtr",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3754:6:19"
                                                        },
                                                        {
                                                            "name": "array",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3762:5:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3747:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3747:21:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "3747:21:19"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3792:6:19"
                                                                },
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3800:2:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "add",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3788:3:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3788:15:19"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "_5",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3841:2:19"
                                                                        },
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "3845:4:19",
                                                                            "type": "",
                                                                            "value": "0x40"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "add",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3837:3:19"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "3837:13:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "abi_decode_t_address_fromMemory",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3805:31:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "3805:46:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3781:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3781:71:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "3781:71:19"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "dst",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3872:3:19"
                                                        },
                                                        {
                                                            "name": "memPtr",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3877:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3865:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3865:19:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "3865:19:19"
                                            },
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "3897:19:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "dst",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3908:3:19"
                                                        },
                                                        {
                                                            "name": "_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3913:2:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3904:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3904:12:19"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3897:3:19"
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "3929:19:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "src",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3940:3:19"
                                                        },
                                                        {
                                                            "name": "_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "3945:2:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3936:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "3936:12:19"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "src",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "3929:3:19"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "2541:1:19"
                                            },
                                            {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "2544:2:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "2538:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2538:9:19"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                        "nodeType": "YulBlock",
                                        "src": "2548:18:19",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "2550:14:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "i",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2559:1:19"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "2562:1:19",
                                                            "type": "",
                                                            "value": "1"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2555:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2555:9:19"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2550:1:19"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "pre": {
                                        "nodeType": "YulBlock",
                                        "src": "2534:3:19",
                                        "statements": []
                                    },
                                    "src": "2530:1428:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "3967:15:19",
                                    "value": {
                                        "name": "dst_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3977:5:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "3967:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "1889:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "1900:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "1912:6:19",
                                "type": ""
                            }
                        ],
                        "src": "1794:2194:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4071:219:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4117:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4126:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4134:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4119:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4119:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4119:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4092:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4101:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4088:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4088:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4113:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4084:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4084:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4081:2:19"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4152:29:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "4171:9:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4165:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4165:16:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "4156:5:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4234:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4243:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4251:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4236:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4236:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4236:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4203:5:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4224:5:19"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4217:6:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4217:13:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "iszero",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4210:6:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "4210:21:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4200:2:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4200:32:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "4193:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4193:40:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4190:2:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "4269:15:19",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "4279:5:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "4269:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "4037:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "4048:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "4060:6:19",
                                "type": ""
                            }
                        ],
                        "src": "3993:297:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4365:120:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4411:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4420:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4428:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4413:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4413:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4413:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4386:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4395:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4382:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4382:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4407:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4378:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4378:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4375:2:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "4446:33:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "4469:9:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4456:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4456:23:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "4446:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "4331:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "4342:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "4354:6:19",
                                "type": ""
                            }
                        ],
                        "src": "4295:190:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4577:240:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4623:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4632:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4640:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4625:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4625:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4625:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4598:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4607:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4594:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4594:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4619:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4590:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4590:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4587:2:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "4658:33:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "4681:9:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4668:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4668:23:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "4658:6:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4700:45:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4730:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4741:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4726:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4726:18:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4713:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4713:32:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "4704:5:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "4781:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "4754:26:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4754:33:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4754:33:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "4796:15:19",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "4806:5:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "4796:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "4535:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "4546:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "4558:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "4566:6:19",
                                "type": ""
                            }
                        ],
                        "src": "4490:327:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "4926:366:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "4972:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4981:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "4989:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4974:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4974:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "4974:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4947:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4956:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4943:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4943:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4968:2:19",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "4939:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4939:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4936:2:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5007:33:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "5030:9:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5017:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5017:23:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "5007:6:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5049:45:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5079:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "5090:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5075:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5075:18:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5062:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5062:32:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "5053:5:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "5130:5:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "5103:26:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5103:33:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5103:33:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5145:15:19",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5155:5:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "5145:6:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5169:47:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5201:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "5212:2:19",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5197:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5197:18:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5184:12:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5184:32:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "value_1",
                                            "nodeType": "YulTypedName",
                                            "src": "5173:7:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "5252:7:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "validator_revert_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "5225:26:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5225:35:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5225:35:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5269:17:19",
                                    "value": {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5279:7:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5269:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "4876:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "4887:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "4899:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "4907:6:19",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "4915:6:19",
                                "type": ""
                            }
                        ],
                        "src": "4822:470:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5395:157:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "5441:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5450:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5458:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5443:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5443:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5443:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5416:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5425:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5412:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5412:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5437:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5408:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5408:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5405:2:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5476:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "5492:9:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5486:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5486:16:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "5476:6:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5511:35:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5531:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "5542:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5527:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5527:18:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5521:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5521:25:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "5511:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "5353:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "5364:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "5376:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "5384:6:19",
                                "type": ""
                            }
                        ],
                        "src": "5297:255:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5638:113:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "5684:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5693:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5701:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5686:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5686:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5686:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5659:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5668:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5655:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5655:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5680:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5651:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5651:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5648:2:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "5719:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "5735:9:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5729:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5729:16:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "5719:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "5604:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "5615:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "5627:6:19",
                                "type": ""
                            }
                        ],
                        "src": "5557:194:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "5835:214:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "5881:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5890:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5898:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5883:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5883:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5883:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5856:7:19"
                                                    },
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5865:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5852:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5852:23:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5877:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5848:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5848:32:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5845:2:19"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5916:29:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "5935:9:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5929:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5929:16:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "value",
                                            "nodeType": "YulTypedName",
                                            "src": "5920:5:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "5993:26:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6002:6:19"
                                                        },
                                                        {
                                                            "name": "value0",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6010:6:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5995:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5995:22:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "5995:22:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5967:5:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5978:5:19"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "5985:4:19",
                                                                "type": "",
                                                                "value": "0xff"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "and",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "5974:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "5974:16:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5964:2:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5964:27:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "5957:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5957:35:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5954:2:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6028:15:19",
                                    "value": {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6038:5:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "6028:6:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_decode_tuple_t_uint8_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "5801:9:19",
                                "type": ""
                            },
                            {
                                "name": "dataEnd",
                                "nodeType": "YulTypedName",
                                "src": "5812:7:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "5824:6:19",
                                "type": ""
                            }
                        ],
                        "src": "5756:293:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6155:102:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6165:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6177:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6188:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6173:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6173:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "6165:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6207:9:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6222:6:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6238:3:19",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6243:1:19",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6234:3:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6234:11:19"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "6247:1:19",
                                                                "type": "",
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sub",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6230:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "6230:19:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6218:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6218:32:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6200:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6200:51:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6200:51:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "6124:9:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "6135:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "6146:4:19",
                                "type": ""
                            }
                        ],
                        "src": "6054:203:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6391:145:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6401:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6413:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6424:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6409:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6409:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "6401:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6443:9:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6458:6:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6474:3:19",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6479:1:19",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6470:3:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6470:11:19"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "6483:1:19",
                                                                "type": "",
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sub",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6466:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "6466:19:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6454:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6454:32:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6436:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6436:51:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6436:51:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "6507:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "6518:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6503:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6503:18:19"
                                            },
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "6523:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6496:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6496:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6496:34:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "6352:9:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "6363:6:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "6371:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "6382:4:19",
                                "type": ""
                            }
                        ],
                        "src": "6262:274:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "6692:510:19",
                            "statements": [
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "6702:12:19",
                                    "value": {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6712:2:19",
                                        "type": "",
                                        "value": "32"
                                    },
                                    "variables": [
                                        {
                                            "name": "_1",
                                            "nodeType": "YulTypedName",
                                            "src": "6706:2:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "6723:32:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6741:9:19"
                                            },
                                            {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "6752:2:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6737:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6737:18:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "tail_1",
                                            "nodeType": "YulTypedName",
                                            "src": "6727:6:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6771:9:19"
                                            },
                                            {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "6782:2:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6764:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6764:21:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6764:21:19"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "6794:17:19",
                                    "value": {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6805:6:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulTypedName",
                                            "src": "6798:3:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "6820:27:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "6840:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6834:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6834:13:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "length",
                                            "nodeType": "YulTypedName",
                                            "src": "6824:6:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "tail_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "6863:6:19"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "6871:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "6856:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6856:22:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6856:22:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "6887:25:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "6898:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6909:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6894:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6894:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "6887:3:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "6921:29:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "6939:6:19"
                                            },
                                            {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "6947:2:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6935:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6935:15:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "srcPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "6925:6:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "6959:13:19",
                                    "value": {
                                        "name": "tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "6968:4:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "i",
                                            "nodeType": "YulTypedName",
                                            "src": "6963:1:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "7030:146:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "pos",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7051:3:19"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "name": "srcPtr",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7066:6:19"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "mload",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7060:5:19"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "7060:13:19"
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7083:3:19",
                                                                                    "type": "",
                                                                                    "value": "160"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7088:1:19",
                                                                                    "type": "",
                                                                                    "value": "1"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "shl",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7079:3:19"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7079:11:19"
                                                                        },
                                                                        {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "7092:1:19",
                                                                            "type": "",
                                                                            "value": "1"
                                                                        }
                                                                    ],
                                                                    "functionName": {
                                                                        "name": "sub",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7075:3:19"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "7075:19:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "and",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "7056:3:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "7056:39:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7044:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "7044:52:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "7044:52:19"
                                            },
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "7109:19:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "pos",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7120:3:19"
                                                        },
                                                        {
                                                            "name": "_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7125:2:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7116:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "7116:12:19"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7109:3:19"
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "7141:25:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "srcPtr",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7155:6:19"
                                                        },
                                                        {
                                                            "name": "_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7163:2:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7151:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "7151:15:19"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "srcPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7141:6:19"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "6992:1:19"
                                            },
                                            {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "6995:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "6989:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6989:13:19"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                        "nodeType": "YulBlock",
                                        "src": "7003:18:19",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "7005:14:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "i",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7014:1:19"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "7017:1:19",
                                                            "type": "",
                                                            "value": "1"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7010:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "7010:9:19"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7005:1:19"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "pre": {
                                        "nodeType": "YulBlock",
                                        "src": "6985:3:19",
                                        "statements": []
                                    },
                                    "src": "6981:195:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "7185:11:19",
                                    "value": {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7193:3:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "7185:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "6661:9:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "6672:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "6683:4:19",
                                "type": ""
                            }
                        ],
                        "src": "6541:661:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7302:92:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "7312:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "7324:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7335:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7320:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7320:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "7312:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "7354:9:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value0",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "7379:6:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "iszero",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7372:6:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "7372:14:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "iszero",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7365:6:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7365:22:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7347:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7347:41:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7347:41:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "7271:9:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "7282:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "7293:4:19",
                                "type": ""
                            }
                        ],
                        "src": "7207:187:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7573:228:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "7590:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7601:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7583:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7583:21:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7583:21:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7624:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7635:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7620:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7620:18:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7640:2:19",
                                                "type": "",
                                                "value": "38"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7613:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7613:30:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7613:30:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7663:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7674:2:19",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7659:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7659:18:19"
                                            },
                                            {
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "7679:34:19",
                                                "type": "",
                                                "value": "Ownable: new owner is the zero a"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7652:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7652:62:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7652:62:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "7734:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "7745:2:19",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7730:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7730:18:19"
                                            },
                                            {
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "7750:8:19",
                                                "type": "",
                                                "value": "ddress"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "7723:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7723:36:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7723:36:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "7768:27:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "7780:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7791:3:19",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7776:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7776:19:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "7768:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "7550:9:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "7564:4:19",
                                "type": ""
                            }
                        ],
                        "src": "7399:402:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "7998:122:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8008:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8020:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8031:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8016:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8016:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "8008:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8050:9:19"
                                            },
                                            {
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "8061:9:19",
                                                "type": "",
                                                "value": "ViaCash"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8043:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8043:28:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8043:28:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8091:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8102:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8087:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8087:18:19"
                                            },
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "8107:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8080:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8080:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8080:34:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3c30a0e8e1c782e31ccb8fae07c6066a8040aa799f508e8cb657fa62c08db465_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "7967:9:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "7978:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "7989:4:19",
                                "type": ""
                            }
                        ],
                        "src": "7806:314:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "8317:122:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8327:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8339:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8350:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8335:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8335:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "8327:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8369:9:19"
                                            },
                                            {
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "8380:9:19",
                                                "type": "",
                                                "value": "ViaBond"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8362:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8362:28:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8362:28:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8410:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8421:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8406:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8406:18:19"
                                            },
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "8426:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8399:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8399:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8399:34:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_52973aa3d1d0b9b2038bddf6fa0399136f1ab1c5f89b7edd623ff24875d0ed1f_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "8286:9:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "8297:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "8308:4:19",
                                "type": ""
                            }
                        ],
                        "src": "8125:314:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "8692:236:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "8702:27:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8714:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8725:3:19",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8710:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8710:19:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "8702:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "8745:9:19"
                                            },
                                            {
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "8756:10:19",
                                                "type": "",
                                                "value": "Treasury"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8738:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8738:29:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8738:29:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8787:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8798:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8783:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8783:18:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8807:6:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8823:3:19",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8828:1:19",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8819:3:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8819:11:19"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "8832:1:19",
                                                                "type": "",
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sub",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "8815:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "8815:19:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8803:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8803:32:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8776:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8776:60:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8776:60:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8856:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8867:2:19",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8852:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8852:18:19"
                                            },
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "8872:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8845:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8845:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8845:34:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "8899:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "8910:2:19",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8895:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "8895:18:19"
                                            },
                                            {
                                                "name": "value2",
                                                "nodeType": "YulIdentifier",
                                                "src": "8915:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "8888:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8888:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8888:34:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6efca2866b731ee4984990bacad4cde10f1ef764fb54a5206bdfd291695b1a9b_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "8645:9:19",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "8656:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "8664:6:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "8672:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "8683:4:19",
                                "type": ""
                            }
                        ],
                        "src": "8444:484:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "9181:236:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "9191:27:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "9203:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9214:3:19",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9199:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9199:19:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "9191:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "9234:9:19"
                                            },
                                            {
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "9245:10:19",
                                                "type": "",
                                                "value": "Operator"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9227:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9227:29:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9227:29:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9276:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9287:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9272:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9272:18:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9296:6:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9312:3:19",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9317:1:19",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9308:3:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9308:11:19"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9321:1:19",
                                                                "type": "",
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sub",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "9304:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "9304:19:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9292:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9292:32:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9265:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9265:60:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9265:60:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9345:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9356:2:19",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9341:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9341:18:19"
                                            },
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "9361:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9334:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9334:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9334:34:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9388:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9399:2:19",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9384:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9384:18:19"
                                            },
                                            {
                                                "name": "value2",
                                                "nodeType": "YulIdentifier",
                                                "src": "9404:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9377:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9377:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9377:34:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_71b43d66088715f0148d07b45a38f510fffe2d5fd108ee7701691e554738d61b_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "9134:9:19",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "9145:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "9153:6:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "9161:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "9172:4:19",
                                "type": ""
                            }
                        ],
                        "src": "8933:484:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "9670:235:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "9680:27:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "9692:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9703:3:19",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9688:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9688:19:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "9680:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "9723:9:19"
                                            },
                                            {
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "9734:9:19",
                                                "type": "",
                                                "value": "Royalty"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9716:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9716:28:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9716:28:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9764:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9775:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9760:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9760:18:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9784:6:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9800:3:19",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9805:1:19",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9796:3:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9796:11:19"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9809:1:19",
                                                                "type": "",
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sub",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "9792:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "9792:19:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9780:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9780:32:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9753:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9753:60:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9753:60:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9833:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9844:2:19",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9829:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9829:18:19"
                                            },
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "9849:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9822:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9822:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9822:34:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9876:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9887:2:19",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9872:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9872:18:19"
                                            },
                                            {
                                                "name": "value2",
                                                "nodeType": "YulIdentifier",
                                                "src": "9892:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "9865:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9865:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9865:34:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7d8f7b384f374c06a8518b8661abf73fb708e0b379400613e4d1e5084c993c46_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "9623:9:19",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "9634:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "9642:6:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "9650:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "9661:4:19",
                                "type": ""
                            }
                        ],
                        "src": "9422:483:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "10084:182:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "10101:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10112:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10094:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10094:21:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10094:21:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10135:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10146:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10131:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10131:18:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10151:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10124:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10124:30:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10124:30:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10174:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10185:2:19",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10170:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10170:18:19"
                                            },
                                            {
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "10190:34:19",
                                                "type": "",
                                                "value": "Ownable: caller is not the owner"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10163:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10163:62:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10163:62:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "10234:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "10246:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10257:2:19",
                                                "type": "",
                                                "value": "96"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10242:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10242:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "10234:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "10061:9:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "10075:4:19",
                                "type": ""
                            }
                        ],
                        "src": "9910:356:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "10519:236:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "10529:27:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "10541:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10552:3:19",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10537:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10537:19:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "10529:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "10572:9:19"
                                            },
                                            {
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "10583:10:19",
                                                "type": "",
                                                "value": "Investor"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10565:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10565:29:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10565:29:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10614:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10625:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10610:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10610:18:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10634:6:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10650:3:19",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10655:1:19",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10646:3:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10646:11:19"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10659:1:19",
                                                                "type": "",
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sub",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "10642:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "10642:19:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10630:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10630:32:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10603:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10603:60:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10603:60:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10683:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10694:2:19",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10679:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10679:18:19"
                                            },
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "10699:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10672:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10672:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10672:34:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "10726:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "10737:2:19",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10722:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10722:18:19"
                                            },
                                            {
                                                "name": "value2",
                                                "nodeType": "YulIdentifier",
                                                "src": "10742:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10715:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10715:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10715:34:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b07dd01d1f7a644c8997d56b1401edb5cd2a9325d84a45f67e4069218a103b86_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "10472:9:19",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "10483:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "10491:6:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "10499:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "10510:4:19",
                                "type": ""
                            }
                        ],
                        "src": "10271:484:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11008:236:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11018:27:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "11030:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11041:3:19",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "11026:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11026:19:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "11018:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "11061:9:19"
                                            },
                                            {
                                                "kind": "string",
                                                "nodeType": "YulLiteral",
                                                "src": "11072:10:19",
                                                "type": "",
                                                "value": "Business"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11054:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11054:29:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11054:29:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11103:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "11114:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11099:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11099:18:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11123:6:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11139:3:19",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11144:1:19",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11135:3:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11135:11:19"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "11148:1:19",
                                                                "type": "",
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "sub",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "11131:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "11131:19:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11119:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11119:32:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11092:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11092:60:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11092:60:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11172:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "11183:2:19",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11168:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11168:18:19"
                                            },
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "11188:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11161:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11161:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11161:34:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11215:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "11226:2:19",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11211:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11211:18:19"
                                            },
                                            {
                                                "name": "value2",
                                                "nodeType": "YulIdentifier",
                                                "src": "11231:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11204:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11204:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11204:34:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_da4fd9fa774c576c08e67dcb6bb94d647b4bc97f62502f1e2b62c2ba20f879cc_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "10961:9:19",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "10972:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "10980:6:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "10988:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "10999:4:19",
                                "type": ""
                            }
                        ],
                        "src": "10760:484:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11350:76:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11360:26:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "11372:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11383:2:19",
                                                "type": "",
                                                "value": "32"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "11368:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11368:18:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "11360:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "11402:9:19"
                                            },
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "11413:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11395:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11395:25:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11395:25:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "11319:9:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "11330:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "11341:4:19",
                                "type": ""
                            }
                        ],
                        "src": "11249:177:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11616:206:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11626:27:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "11638:9:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11649:3:19",
                                                "type": "",
                                                "value": "128"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "11634:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11634:19:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "tail",
                                            "nodeType": "YulIdentifier",
                                            "src": "11626:4:19"
                                        }
                                    ]
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "name": "headStart",
                                                "nodeType": "YulIdentifier",
                                                "src": "11669:9:19"
                                            },
                                            {
                                                "name": "value0",
                                                "nodeType": "YulIdentifier",
                                                "src": "11680:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11662:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11662:25:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11662:25:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11707:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "11718:2:19",
                                                        "type": "",
                                                        "value": "32"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11703:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11703:18:19"
                                            },
                                            {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "11723:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11696:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11696:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11696:34:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11750:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "11761:2:19",
                                                        "type": "",
                                                        "value": "64"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11746:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11746:18:19"
                                            },
                                            {
                                                "name": "value2",
                                                "nodeType": "YulIdentifier",
                                                "src": "11766:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11739:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11739:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11739:34:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11793:9:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "11804:2:19",
                                                        "type": "",
                                                        "value": "96"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11789:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11789:18:19"
                                            },
                                            {
                                                "name": "value3",
                                                "nodeType": "YulIdentifier",
                                                "src": "11809:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "11782:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11782:34:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11782:34:19"
                                }
                            ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "headStart",
                                "nodeType": "YulTypedName",
                                "src": "11561:9:19",
                                "type": ""
                            },
                            {
                                "name": "value3",
                                "nodeType": "YulTypedName",
                                "src": "11572:6:19",
                                "type": ""
                            },
                            {
                                "name": "value2",
                                "nodeType": "YulTypedName",
                                "src": "11580:6:19",
                                "type": ""
                            },
                            {
                                "name": "value1",
                                "nodeType": "YulTypedName",
                                "src": "11588:6:19",
                                "type": ""
                            },
                            {
                                "name": "value0",
                                "nodeType": "YulTypedName",
                                "src": "11596:6:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "tail",
                                "nodeType": "YulTypedName",
                                "src": "11607:4:19",
                                "type": ""
                            }
                        ],
                        "src": "11431:391:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "11871:207:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "11881:19:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11897:2:19",
                                                "type": "",
                                                "value": "64"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "11891:5:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11891:9:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "11881:6:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11909:35:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "memPtr",
                                                "nodeType": "YulIdentifier",
                                                "src": "11931:6:19"
                                            },
                                            {
                                                "name": "size",
                                                "nodeType": "YulIdentifier",
                                                "src": "11939:4:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "11927:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11927:17:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "newFreePtr",
                                            "nodeType": "YulTypedName",
                                            "src": "11913:10:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "12019:22:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x41",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12021:16:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12021:18:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "12021:18:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "newFreePtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11962:10:19"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "11974:18:19",
                                                        "type": "",
                                                        "value": "0xffffffffffffffff"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "gt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11959:2:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11959:34:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "newFreePtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "11998:10:19"
                                                    },
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12010:6:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "lt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "11995:2:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "11995:22:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "11956:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11956:62:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "11953:2:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12057:2:19",
                                                "type": "",
                                                "value": "64"
                                            },
                                            {
                                                "name": "newFreePtr",
                                                "nodeType": "YulIdentifier",
                                                "src": "12061:10:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "12050:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12050:22:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12050:22:19"
                                }
                            ]
                        },
                        "name": "allocateMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "size",
                                "nodeType": "YulTypedName",
                                "src": "11851:4:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "memPtr",
                                "nodeType": "YulTypedName",
                                "src": "11860:6:19",
                                "type": ""
                            }
                        ],
                        "src": "11827:251:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "12129:171:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "12160:111:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "r",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12181:1:19"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "12188:3:19",
                                                                    "type": "",
                                                                    "value": "224"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "12193:10:19",
                                                                    "type": "",
                                                                    "value": "0x4e487b71"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "shl",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12184:3:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "12184:20:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12174:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12174:31:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "12174:31:19"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "12225:1:19",
                                                            "type": "",
                                                            "value": "4"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "12228:4:19",
                                                            "type": "",
                                                            "value": "0x12"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mstore",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12218:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12218:15:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "12218:15:19"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "name": "r",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12253:1:19"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "12256:4:19",
                                                            "type": "",
                                                            "value": "0x24"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12246:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12246:15:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "12246:15:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "12149:1:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "12142:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12142:9:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "12139:2:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "12280:14:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "12289:1:19"
                                            },
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "12292:1:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "12285:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12285:9:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "12280:1:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "x",
                                "nodeType": "YulTypedName",
                                "src": "12114:1:19",
                                "type": ""
                            },
                            {
                                "name": "y",
                                "nodeType": "YulTypedName",
                                "src": "12117:1:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "r",
                                "nodeType": "YulTypedName",
                                "src": "12123:1:19",
                                "type": ""
                            }
                        ],
                        "src": "12083:217:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "12382:376:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "12392:15:19",
                                    "value": {
                                        "name": "_power",
                                        "nodeType": "YulIdentifier",
                                        "src": "12401:6:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "12392:5:19"
                                        }
                                    ]
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "12416:13:19",
                                    "value": {
                                        "name": "_base",
                                        "nodeType": "YulIdentifier",
                                        "src": "12424:5:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "12416:4:19"
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "12463:289:19",
                                        "statements": [
                                            {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "12477:11:19",
                                                "value": {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "12487:1:19",
                                                    "type": "",
                                                    "value": "1"
                                                },
                                                "variables": [
                                                    {
                                                        "name": "_1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12481:2:19",
                                                        "type": ""
                                                    }
                                                ]
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12529:9:19",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulBreak",
                                                            "src": "12531:5:19"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "exponent",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12514:8:19"
                                                                },
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12524:2:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "gt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12511:2:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "12511:16:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "iszero",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12504:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12504:24:19"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "12501:2:19"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12579:22:19",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [],
                                                                "functionName": {
                                                                    "name": "panic_error_0x11",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12581:16:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12581:18:19"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12581:18:19"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "base",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12557:4:19"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "name": "max",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12567:3:19"
                                                                },
                                                                {
                                                                    "name": "base",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12572:4:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "div",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12563:3:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "12563:14:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "gt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12554:2:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12554:24:19"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "12551:2:19"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12635:29:19",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12637:25:19",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "power",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12650:5:19"
                                                                    },
                                                                    {
                                                                        "name": "base",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12657:4:19"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mul",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12646:3:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12646:16:19"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "power",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12637:5:19"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "exponent",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12621:8:19"
                                                        },
                                                        {
                                                            "name": "_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12631:2:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "and",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12617:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12617:17:19"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "12614:2:19"
                                            },
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "12677:23:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "base",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12689:4:19"
                                                        },
                                                        {
                                                            "name": "base",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12695:4:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "mul",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12685:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12685:15:19"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "base",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12677:4:19"
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "12713:29:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "_1",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12729:2:19"
                                                        },
                                                        {
                                                            "name": "exponent",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12733:8:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "shr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12725:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "12725:17:19"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "exponent",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12713:8:19"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "kind": "bool",
                                        "nodeType": "YulLiteral",
                                        "src": "12446:4:19",
                                        "type": "",
                                        "value": "true"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                        "nodeType": "YulBlock",
                                        "src": "12451:3:19",
                                        "statements": []
                                    },
                                    "pre": {
                                        "nodeType": "YulBlock",
                                        "src": "12442:3:19",
                                        "statements": []
                                    },
                                    "src": "12438:314:19"
                                }
                            ]
                        },
                        "name": "checked_exp_helper",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "_power",
                                "nodeType": "YulTypedName",
                                "src": "12333:6:19",
                                "type": ""
                            },
                            {
                                "name": "_base",
                                "nodeType": "YulTypedName",
                                "src": "12341:5:19",
                                "type": ""
                            },
                            {
                                "name": "exponent",
                                "nodeType": "YulTypedName",
                                "src": "12348:8:19",
                                "type": ""
                            },
                            {
                                "name": "max",
                                "nodeType": "YulTypedName",
                                "src": "12358:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "power",
                                "nodeType": "YulTypedName",
                                "src": "12366:5:19",
                                "type": ""
                            },
                            {
                                "name": "base",
                                "nodeType": "YulTypedName",
                                "src": "12373:4:19",
                                "type": ""
                            }
                        ],
                        "src": "12305:453:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "12833:69:19",
                            "statements": [
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "12843:53:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "base",
                                                "nodeType": "YulIdentifier",
                                                "src": "12873:4:19"
                                            },
                                            {
                                                "name": "exponent",
                                                "nodeType": "YulIdentifier",
                                                "src": "12879:8:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "12893:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "not",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12889:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12889:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "checked_exp_unsigned",
                                            "nodeType": "YulIdentifier",
                                            "src": "12852:20:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12852:44:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "12843:5:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "checked_exp_t_uint256_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "base",
                                "nodeType": "YulTypedName",
                                "src": "12804:4:19",
                                "type": ""
                            },
                            {
                                "name": "exponent",
                                "nodeType": "YulTypedName",
                                "src": "12810:8:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "power",
                                "nodeType": "YulTypedName",
                                "src": "12823:5:19",
                                "type": ""
                            }
                        ],
                        "src": "12763:139:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "12971:858:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "13009:52:19",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "13023:10:19",
                                                "value": {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "13032:1:19",
                                                    "type": "",
                                                    "value": "1"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "power",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13023:5:19"
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulLeave",
                                                "src": "13046:5:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "exponent",
                                                "nodeType": "YulIdentifier",
                                                "src": "12991:8:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "12984:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12984:16:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "12981:2:19"
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "13094:52:19",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "13108:10:19",
                                                "value": {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "13117:1:19",
                                                    "type": "",
                                                    "value": "0"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "power",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13108:5:19"
                                                    }
                                                ]
                                            },
                                            {
                                                "nodeType": "YulLeave",
                                                "src": "13131:5:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "base",
                                                "nodeType": "YulIdentifier",
                                                "src": "13080:4:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "13073:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13073:12:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "13070:2:19"
                                },
                                {
                                    "cases": [
                                        {
                                            "body": {
                                                "nodeType": "YulBlock",
                                                "src": "13182:52:19",
                                                "statements": [
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "13196:10:19",
                                                        "value": {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "13205:1:19",
                                                            "type": "",
                                                            "value": "1"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "power",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "13196:5:19"
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "nodeType": "YulLeave",
                                                        "src": "13219:5:19"
                                                    }
                                                ]
                                            },
                                            "nodeType": "YulCase",
                                            "src": "13175:59:19",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13180:1:19",
                                                "type": "",
                                                "value": "1"
                                            }
                                        },
                                        {
                                            "body": {
                                                "nodeType": "YulBlock",
                                                "src": "13250:176:19",
                                                "statements": [
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "13285:22:19",
                                                            "statements": [
                                                                {
                                                                    "expression": {
                                                                        "arguments": [],
                                                                        "functionName": {
                                                                            "name": "panic_error_0x11",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13287:16:19"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13287:18:19"
                                                                    },
                                                                    "nodeType": "YulExpressionStatement",
                                                                    "src": "13287:18:19"
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "arguments": [
                                                                {
                                                                    "name": "exponent",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13270:8:19"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "13280:3:19",
                                                                    "type": "",
                                                                    "value": "255"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "gt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "13267:2:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "13267:17:19"
                                                        },
                                                        "nodeType": "YulIf",
                                                        "src": "13264:2:19"
                                                    },
                                                    {
                                                        "nodeType": "YulAssignment",
                                                        "src": "13320:25:19",
                                                        "value": {
                                                            "arguments": [
                                                                {
                                                                    "name": "exponent",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13333:8:19"
                                                                },
                                                                {
                                                                    "kind": "number",
                                                                    "nodeType": "YulLiteral",
                                                                    "src": "13343:1:19",
                                                                    "type": "",
                                                                    "value": "1"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "shl",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "13329:3:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "13329:16:19"
                                                        },
                                                        "variableNames": [
                                                            {
                                                                "name": "power",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "13320:5:19"
                                                            }
                                                        ]
                                                    },
                                                    {
                                                        "body": {
                                                            "nodeType": "YulBlock",
                                                            "src": "13376:22:19",
                                                            "statements": [
                                                                {
                                                                    "expression": {
                                                                        "arguments": [],
                                                                        "functionName": {
                                                                            "name": "panic_error_0x11",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13378:16:19"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13378:18:19"
                                                                    },
                                                                    "nodeType": "YulExpressionStatement",
                                                                    "src": "13378:18:19"
                                                                }
                                                            ]
                                                        },
                                                        "condition": {
                                                            "arguments": [
                                                                {
                                                                    "name": "power",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13364:5:19"
                                                                },
                                                                {
                                                                    "name": "max",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13371:3:19"
                                                                }
                                                            ],
                                                            "functionName": {
                                                                "name": "gt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "13361:2:19"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "13361:14:19"
                                                        },
                                                        "nodeType": "YulIf",
                                                        "src": "13358:2:19"
                                                    },
                                                    {
                                                        "nodeType": "YulLeave",
                                                        "src": "13411:5:19"
                                                    }
                                                ]
                                            },
                                            "nodeType": "YulCase",
                                            "src": "13243:183:19",
                                            "value": {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13248:1:19",
                                                "type": "",
                                                "value": "2"
                                            }
                                        }
                                    ],
                                    "expression": {
                                        "name": "base",
                                        "nodeType": "YulIdentifier",
                                        "src": "13162:4:19"
                                    },
                                    "nodeType": "YulSwitch",
                                    "src": "13155:271:19"
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "13524:123:19",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "13538:28:19",
                                                "value": {
                                                    "arguments": [
                                                        {
                                                            "name": "base",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "13551:4:19"
                                                        },
                                                        {
                                                            "name": "exponent",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "13557:8:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "exp",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13547:3:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "13547:19:19"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "power",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13538:5:19"
                                                    }
                                                ]
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13597:22:19",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [],
                                                                "functionName": {
                                                                    "name": "panic_error_0x11",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13599:16:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13599:18:19"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13599:18:19"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "name": "power",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "13585:5:19"
                                                        },
                                                        {
                                                            "name": "max",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "13592:3:19"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "gt",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13582:2:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "13582:14:19"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "13579:2:19"
                                            },
                                            {
                                                "nodeType": "YulLeave",
                                                "src": "13632:5:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "base",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "13448:4:19"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "13454:2:19",
                                                                "type": "",
                                                                "value": "11"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "lt",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "13445:2:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "13445:12:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "exponent",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "13462:8:19"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "13472:2:19",
                                                                "type": "",
                                                                "value": "78"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "lt",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "13459:2:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "13459:16:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13441:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13441:35:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "base",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "13485:4:19"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "13491:3:19",
                                                                "type": "",
                                                                "value": "307"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "lt",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "13482:2:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "13482:13:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "exponent",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "13500:8:19"
                                                            },
                                                            {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "13510:2:19",
                                                                "type": "",
                                                                "value": "32"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "lt",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "13497:2:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "13497:16:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "and",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13478:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13478:36:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "13438:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13438:77:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "13435:2:19"
                                },
                                {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "13656:65:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13698:1:19",
                                                "type": "",
                                                "value": "1"
                                            },
                                            {
                                                "name": "base",
                                                "nodeType": "YulIdentifier",
                                                "src": "13701:4:19"
                                            },
                                            {
                                                "name": "exponent",
                                                "nodeType": "YulIdentifier",
                                                "src": "13707:8:19"
                                            },
                                            {
                                                "name": "max",
                                                "nodeType": "YulIdentifier",
                                                "src": "13717:3:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "checked_exp_helper",
                                            "nodeType": "YulIdentifier",
                                            "src": "13679:18:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13679:42:19"
                                    },
                                    "variables": [
                                        {
                                            "name": "power_1",
                                            "nodeType": "YulTypedName",
                                            "src": "13660:7:19",
                                            "type": ""
                                        },
                                        {
                                            "name": "base_1",
                                            "nodeType": "YulTypedName",
                                            "src": "13669:6:19",
                                            "type": ""
                                        }
                                    ]
                                },
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "13763:22:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x11",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13765:16:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "13765:18:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "13765:18:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "power_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "13736:7:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "max",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13749:3:19"
                                                    },
                                                    {
                                                        "name": "base_1",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13754:6:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "div",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13745:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13745:16:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "13733:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13733:29:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "13730:2:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13794:29:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "power_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "13807:7:19"
                                            },
                                            {
                                                "name": "base_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "13816:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mul",
                                            "nodeType": "YulIdentifier",
                                            "src": "13803:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13803:20:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "13794:5:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "checked_exp_unsigned",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "base",
                                "nodeType": "YulTypedName",
                                "src": "12937:4:19",
                                "type": ""
                            },
                            {
                                "name": "exponent",
                                "nodeType": "YulTypedName",
                                "src": "12943:8:19",
                                "type": ""
                            },
                            {
                                "name": "max",
                                "nodeType": "YulTypedName",
                                "src": "12953:3:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "power",
                                "nodeType": "YulTypedName",
                                "src": "12961:5:19",
                                "type": ""
                            }
                        ],
                        "src": "12907:922:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "13886:116:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "13945:22:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x11",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13947:16:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "13947:18:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "13947:18:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "x",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "13917:1:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "iszero",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "13910:6:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "13910:9:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "iszero",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13903:6:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13903:17:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13925:1:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13936:1:19",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "not",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13932:3:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13932:6:19"
                                                            },
                                                            {
                                                                "name": "x",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "13940:1:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "13928:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "13928:14:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "gt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13922:2:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13922:21:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "13899:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13899:45:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "13896:2:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "13976:20:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "13991:1:19"
                                            },
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "13994:1:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mul",
                                            "nodeType": "YulIdentifier",
                                            "src": "13987:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13987:9:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "product",
                                            "nodeType": "YulIdentifier",
                                            "src": "13976:7:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "x",
                                "nodeType": "YulTypedName",
                                "src": "13865:1:19",
                                "type": ""
                            },
                            {
                                "name": "y",
                                "nodeType": "YulTypedName",
                                "src": "13868:1:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "product",
                                "nodeType": "YulTypedName",
                                "src": "13874:7:19",
                                "type": ""
                            }
                        ],
                        "src": "13834:168:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "14056:76:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "14078:22:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x11",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14080:16:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "14080:18:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "14080:18:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "14072:1:19"
                                            },
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "14075:1:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "14069:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14069:8:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "14066:2:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "14109:17:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "x",
                                                "nodeType": "YulIdentifier",
                                                "src": "14121:1:19"
                                            },
                                            {
                                                "name": "y",
                                                "nodeType": "YulIdentifier",
                                                "src": "14124:1:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "14117:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14117:9:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "diff",
                                            "nodeType": "YulIdentifier",
                                            "src": "14109:4:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "x",
                                "nodeType": "YulTypedName",
                                "src": "14038:1:19",
                                "type": ""
                            },
                            {
                                "name": "y",
                                "nodeType": "YulTypedName",
                                "src": "14041:1:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "diff",
                                "nodeType": "YulTypedName",
                                "src": "14047:4:19",
                                "type": ""
                            }
                        ],
                        "src": "14007:125:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "14184:88:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "14215:22:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "functionName": {
                                                        "name": "panic_error_0x11",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14217:16:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "14217:18:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "14217:18:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "14200:5:19"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14211:1:19",
                                                        "type": "",
                                                        "value": "0"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "not",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14207:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14207:6:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "eq",
                                            "nodeType": "YulIdentifier",
                                            "src": "14197:2:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14197:17:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "14194:2:19"
                                },
                                {
                                    "nodeType": "YulAssignment",
                                    "src": "14246:20:19",
                                    "value": {
                                        "arguments": [
                                            {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "14257:5:19"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14264:1:19",
                                                "type": "",
                                                "value": "1"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "14253:3:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14253:13:19"
                                    },
                                    "variableNames": [
                                        {
                                            "name": "ret",
                                            "nodeType": "YulIdentifier",
                                            "src": "14246:3:19"
                                        }
                                    ]
                                }
                            ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "14166:5:19",
                                "type": ""
                            }
                        ],
                        "returnVariables": [
                            {
                                "name": "ret",
                                "nodeType": "YulTypedName",
                                "src": "14176:3:19",
                                "type": ""
                            }
                        ],
                        "src": "14137:135:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "14309:95:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14326:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14333:3:19",
                                                        "type": "",
                                                        "value": "224"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14338:10:19",
                                                        "type": "",
                                                        "value": "0x4e487b71"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14329:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14329:20:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14319:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14319:31:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14319:31:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14366:1:19",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14369:4:19",
                                                "type": "",
                                                "value": "0x11"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14359:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14359:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14359:15:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14390:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14393:4:19",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "14383:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14383:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14383:15:19"
                                }
                            ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14277:127:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "14441:95:19",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14458:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14465:3:19",
                                                        "type": "",
                                                        "value": "224"
                                                    },
                                                    {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "14470:10:19",
                                                        "type": "",
                                                        "value": "0x4e487b71"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14461:3:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14461:20:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14451:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14451:31:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14451:31:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14498:1:19",
                                                "type": "",
                                                "value": "4"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14501:4:19",
                                                "type": "",
                                                "value": "0x41"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14491:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14491:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14491:15:19"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14522:1:19",
                                                "type": "",
                                                "value": "0"
                                            },
                                            {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "14525:4:19",
                                                "type": "",
                                                "value": "0x24"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "14515:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14515:15:19"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14515:15:19"
                                }
                            ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "14409:127:19"
                    },
                    {
                        "body": {
                            "nodeType": "YulBlock",
                            "src": "14588:86:19",
                            "statements": [
                                {
                                    "body": {
                                        "nodeType": "YulBlock",
                                        "src": "14652:16:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "14661:1:19",
                                                            "type": "",
                                                            "value": "0"
                                                        },
                                                        {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "14664:1:19",
                                                            "type": "",
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "functionName": {
                                                        "name": "revert",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14654:6:19"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "14654:12:19"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "14654:12:19"
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "14611:5:19"
                                                    },
                                                    {
                                                        "arguments": [
                                                            {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "14622:5:19"
                                                            },
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14637:3:19",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14642:1:19",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14633:3:19"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14633:11:19"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14646:1:19",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14629:3:19"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14629:19:19"
                                                            }
                                                        ],
                                                        "functionName": {
                                                            "name": "and",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "14618:3:19"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "14618:31:19"
                                                    }
                                                ],
                                                "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14608:2:19"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "14608:42:19"
                                            }
                                        ],
                                        "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "14601:6:19"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14601:50:19"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "14598:2:19"
                                }
                            ]
                        },
                        "name": "validator_revert_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                            {
                                "name": "value",
                                "nodeType": "YulTypedName",
                                "src": "14577:5:19",
                                "type": ""
                            }
                        ],
                        "src": "14541:133:19"
                    }
                ]
            },
            "contents": "{\n    { }\n    function abi_decode_t_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_t_address(value)\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_addresst_address(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_t_address(value_2)\n        value2 := value_2\n        let value_3 := calldataload(add(headStart, 96))\n        validator_revert_t_address(value_3)\n        value3 := value_3\n    }\n    function abi_decode_tuple_t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(value0, value0) }\n        let offset := mload(headStart)\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(value0, value0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let dst := allocateMemory(add(mul(_4, _1), _1))\n        let dst_1 := dst\n        mstore(dst, _4)\n        dst := add(dst, _1)\n        let src := add(_3, _1)\n        let i := value0\n        for { } lt(i, _4) { i := add(i, 1) }\n        {\n            let _5 := add(_3, mload(src))\n            let _6 := not(31)\n            if slt(add(sub(dataEnd, _5), _6), 0x40) { revert(value0, value0) }\n            let memPtr := mload(0x40)\n            let newFreePtr := add(memPtr, 0x40)\n            if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n            mstore(0x40, newFreePtr)\n            let offset_1 := mload(add(_5, _1))\n            if gt(offset_1, _2) { revert(value0, value0) }\n            let _7 := add(_5, offset_1)\n            if iszero(slt(add(_7, 63), dataEnd)) { revert(value0, value0) }\n            let _8 := mload(add(_7, _1))\n            if gt(_8, _2) { panic_error_0x41() }\n            let array := allocateMemory(add(and(add(_8, 0x1f), _6), _1))\n            mstore(array, _8)\n            if gt(add(add(_7, _8), 0x40), dataEnd) { revert(value0, value0) }\n            let i_1 := value0\n            for { } lt(i_1, _8) { i_1 := add(i_1, _1) }\n            {\n                mstore(add(add(array, i_1), _1), mload(add(add(_7, i_1), 0x40)))\n            }\n            if gt(i_1, _8)\n            {\n                mstore(add(add(array, _8), _1), value0)\n            }\n            mstore(memPtr, array)\n            mstore(add(memPtr, _1), abi_decode_t_address_fromMemory(add(_5, 0x40)))\n            mstore(dst, memPtr)\n            dst := add(dst, _1)\n            src := add(src, _1)\n        }\n        value0 := dst_1\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_t_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_bytes32t_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_t_address(value)\n        value1 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_t_address(value_1)\n        value2 := value_1\n    }\n    function abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint8_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, 0xff))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_3c30a0e8e1c782e31ccb8fae07c6066a8040aa799f508e8cb657fa62c08db465_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, \"ViaCash\")\n        mstore(add(headStart, 32), value0)\n    }\n    function abi_encode_tuple_t_stringliteral_52973aa3d1d0b9b2038bddf6fa0399136f1ab1c5f89b7edd623ff24875d0ed1f_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, \"ViaBond\")\n        mstore(add(headStart, 32), value0)\n    }\n    function abi_encode_tuple_t_stringliteral_6efca2866b731ee4984990bacad4cde10f1ef764fb54a5206bdfd291695b1a9b_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, \"Treasury\")\n        mstore(add(headStart, 32), and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value1)\n        mstore(add(headStart, 96), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_71b43d66088715f0148d07b45a38f510fffe2d5fd108ee7701691e554738d61b_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, \"Operator\")\n        mstore(add(headStart, 32), and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value1)\n        mstore(add(headStart, 96), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_7d8f7b384f374c06a8518b8661abf73fb708e0b379400613e4d1e5084c993c46_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, \"Royalty\")\n        mstore(add(headStart, 32), and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value1)\n        mstore(add(headStart, 96), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b07dd01d1f7a644c8997d56b1401edb5cd2a9325d84a45f67e4069218a103b86_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, \"Investor\")\n        mstore(add(headStart, 32), and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value1)\n        mstore(add(headStart, 96), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_da4fd9fa774c576c08e67dcb6bb94d647b4bc97f62502f1e2b62c2ba20f879cc_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, \"Business\")\n        mstore(add(headStart, 32), and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value1)\n        mstore(add(headStart, 96), value2)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(r, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(r, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_exp_helper(_power, _base, exponent, max) -> power, base\n    {\n        power := _power\n        base := _base\n        for { } true { }\n        {\n            let _1 := 1\n            if iszero(gt(exponent, _1)) { break }\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, _1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(_1, exponent)\n        }\n    }\n    function checked_exp_t_uint256_t_uint256(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, exponent, not(0))\n    }\n    function checked_exp_unsigned(base, exponent, max) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            if gt(power, max) { panic_error_0x11() }\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            if gt(power, max) { panic_error_0x11() }\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(1, base, exponent, max)\n        if gt(power_1, div(max, base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
            "id": 19,
            "language": "Yul",
            "name": "#utility.yul"
        }
    ],
    "sourceMap": "584:11094:6:-:0;;;1415:237;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;867:23:0;877:12;:10;:12::i;:::-;867:9;:23::i;:::-;934:5:1;924:15;;-1:-1:-1;;;;924:15:1;;;1513:25:6;;;;;1549:23;;;;;1583:25;;1619;;584:11094;;587:96:5;666:10;587:96;:::o;2041:169:0:-;2096:16;2115:6;;-1:-1:-1;;;;;2131:17:0;;;-1:-1:-1;;;;;;2131:17:0;;;;;;2163:40;;2115:6;;;;;;;2163:40;;2096:16;2163:40;2041:169;;:::o;14:378:19:-;;;;;188:3;176:9;167:7;163:23;159:33;156:2;;;210:6;202;195:22;156:2;-1:-1:-1;;238:16:19;;294:2;279:18;;273:25;338:2;323:18;;317:25;382:2;367:18;;;361:25;238:16;;273:25;;-1:-1:-1;361:25:19;;-1:-1:-1;146:246:19;-1:-1:-1;146:246:19:o;:::-;584:11094:6;;;;;;;;;;;;;;;;;;;;;;",
    "deployedSourceMap": "584:11094:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2251:611;;;;;;:::i;:::-;;:::i;:::-;;3577:306;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3222:309;;;;;;:::i;:::-;;:::i;3928:184::-;;;;;;:::i;:::-;;:::i;1041:84:1:-;;;:::i;:::-;;;;;;;:::i;1605:92:0:-;;;:::i;4158:180:6:-;;;;;;:::i;:::-;;:::i;1660:170::-;;;:::i;:::-;;;;;;;;;;:::i;973:85:0:-;;;:::i;:::-;;;;;;;:::i;4951:741:6:-;;;:::i;2898:288::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1846:189:0:-;;;;;;:::i;:::-;;:::i;1838:313:6:-;;;;;;:::i;:::-;;:::i;4400:498::-;;;:::i;2251:611::-;1196:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;;;;;;;;;2371:5:6::1;-1:-1:-1::0;;;2371:17:6::1;2368:483;;;-1:-1:-1::0;;;;;2407:27:6;::::1;;::::0;;;:13:::1;:27;::::0;;;;;2404:188:::1;;-1:-1:-1::0;;;;;2459:21:6;;::::1;;::::0;;;:10:::1;:21;::::0;;;;;;;:40;;::::1;::::0;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;2459:40:6::1;::::0;;::::1;::::0;;::::1;::::0;;2548:28;2518:27;;;:13:::1;:27:::0;;;;;:58;2404:188:::1;2368:483;;;2621:5;-1:-1:-1::0;;;2621:17:6::1;2618:233;;;-1:-1:-1::0;;;;;2657:27:6;::::1;;::::0;;;:13:::1;:27;::::0;;;;;2654:186:::1;;-1:-1:-1::0;;;;;2709:20:6;;::::1;;::::0;;;:9:::1;:20;::::0;;;;;;;:39;;::::1;::::0;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;2709:39:6::1;::::0;;::::1;::::0;;::::1;::::0;;2797:27;2767;;;:13:::1;:27:::0;;;;;:57;2654:186:::1;2251:611:::0;;;:::o;3577:306::-;3657:7;1196:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;3696:7:6::1;::::0;:39:::1;::::0;-1:-1:-1;;;3696:39:6;;3676:17:::1;::::0;-1:-1:-1;;;;;3696:7:6::1;::::0;:17:::1;::::0;:39:::1;::::0;3725:9;;3696:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3676:59:::0;-1:-1:-1;;;;;;3749:23:6;::::1;::::0;3746:129:::1;;3795:42;::::0;-1:-1:-1;;;3795:42:6;;-1:-1:-1;;;;;3795:27:6;::::1;::::0;::::1;::::0;:42:::1;::::0;3831:4:::1;::::0;3795:42:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3787:51;;;;;3746:129;3874:1;3867:8;;;1255:1:0;3577:306:6::0;;;:::o;3222:309::-;3305:7;1196:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;3344:7:6::1;::::0;:39:::1;::::0;-1:-1:-1;;;3344:39:6;;3324:17:::1;::::0;-1:-1:-1;;;;;3344:7:6::1;::::0;:17:::1;::::0;:39:::1;::::0;3373:9;;3344:39:::1;;;:::i;3928:184::-:0;4022:7;1196:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;4049:54:6::1;::::0;-1:-1:-1;;;4049:54:6;;-1:-1:-1;;;;;4049:46:6;::::1;::::0;::::1;::::0;:54:::1;::::0;4096:6;;4049:54:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4041:63;;1255:1:0;3928:184:6::0;;;;:::o;1041:84:1:-;1088:4;1111:7;-1:-1:-1;;;1111:7:1;;;;;1041:84::o;1605:92:0:-;1196:12;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;1669:21:::1;1687:1;1669:9;:21::i;:::-;1605:92::o:0;4158:180:6:-;4252:7;1196:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;4279:50:6::1;::::0;-1:-1:-1;;;4279:50:6;;-1:-1:-1;;;;;4279:42:6;::::1;::::0;::::1;::::0;:50:::1;::::0;4322:6;;4279:50:::1;;;:::i;1660:170::-:0;1764:13;1779:12;1793:13;1808;1660:170;;;;:::o;973:85:0:-;1019:7;1045:6;-1:-1:-1;;;;;1045:6:0;973:85;:::o;4951:741:6:-;1196:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;5022:7:6::1;::::0;:23:::1;::::0;;-1:-1:-1;;;5022:23:6;;;;5001:18:::1;::::0;-1:-1:-1;;;;;5022:7:6::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:7;:23;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5001:44;;5060:6;5056:629;5072:10;5070:1;:12;5056:629;;;5119:7;::::0;:19:::1;::::0;-1:-1:-1;;;5119:19:6;;5103:13:::1;::::0;-1:-1:-1;;;;;5119:7:6::1;::::0;:16:::1;::::0;:19:::1;::::0;5136:1;;5119:19:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5178:7;::::0;:29:::1;::::0;-1:-1:-1;;;5178:29:6;;5103:35;;-1:-1:-1;5157:17:6::1;::::0;-1:-1:-1;;;;;5178:7:6;;::::1;::::0;:22:::1;::::0;:29:::1;::::0;5103:35;;5178:29:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5153:54;;;5238:9;-1:-1:-1::0;;;5238:20:6::1;5235:439;;;5292:38;::::0;-1:-1:-1;;;5292:38:6;;5278:11:::1;::::0;-1:-1:-1;;;;;5292:23:6;::::1;::::0;::::1;::::0;:38:::1;::::0;5324:4:::1;::::0;5292:38:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5278:52:::0;-1:-1:-1;5352:6:6;;5349:81:::1;;5382:28;5391:3;5396:5;-1:-1:-1::0;;;5382:8:6::1;:28::i;:::-;5235:439;;;;5467:9;-1:-1:-1::0;;;5467:20:6::1;5464:210;;;5521:38;::::0;-1:-1:-1;;;5521:38:6;;5507:11:::1;::::0;-1:-1:-1;;;;;5521:23:6;::::1;::::0;::::1;::::0;:38:::1;::::0;5553:4:::1;::::0;5521:38:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5507:52:::0;-1:-1:-1;5581:6:6;;5578:81:::1;;5611:28;5620:3;5625:5;-1:-1:-1::0;;;5611:8:6::1;:28::i;:::-;5464:210;;5056:629;;5084:3;;;;;:::i;:::-;;;;5056:629;;;;1255:1:0;4951:741:6:o:0;2898:288::-;2996:29;1196:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;3040:5:6::1;-1:-1:-1::0;;;3040:17:6::1;3037:141;;;-1:-1:-1::0;;;;;3079:21:6;::::1;;::::0;;;:10:::1;:21;::::0;;;;;;;;3072:28;;;;;;::::1;::::0;;;;;;;;;;3079:21;;3072:28;::::1;3079:21:::0;3072:28;;::::1;;;;;;;;;;;;;;;;::::0;;-1:-1:-1;;;;;3072:28:6::1;::::0;;;;;::::1;::::0;::::1;;::::0;;::::1;;;;;;;;;;;;;3037:141;3119:5;-1:-1:-1::0;;;3119:17:6::1;3116:62;;;-1:-1:-1::0;;;;;3158:20:6;::::1;;::::0;;;:9:::1;:20;::::0;;;;;;;;3151:27;;;;;;::::1;::::0;;;;;;;;;;3158:20;;3151:27;::::1;3158:20:::0;3151:27;;::::1;;;;;;;;;;;;;;;::::0;;-1:-1:-1;;;;;3151:27:6::1;::::0;;;;;::::1;::::0;::::1;;::::0;;::::1;;;;;;;;;;;;1846:189:0::0;1196:12;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1934:22:0;::::1;1926:73;;;;-1:-1:-1::0;;;1926:73:0::1;;;;;;;:::i;:::-;2009:19;2019:8;2009:9;:19::i;:::-;1846:189:::0;:::o;1838:313:6:-;1196:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;1964:7:6::1;:33:::0;;-1:-1:-1;;;;;;1964:33:6;;::::1;-1:-1:-1::0;;;;;1964:33:6;;::::1;;::::0;;;2008:7:::1;:18:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;2037:8:::1;:20:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;2068:17:::1;:30:::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;2109:9:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;1838:313::o;4400:498::-;1196:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1185:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1185:23:0;;1177:68;;;;-1:-1:-1;;;1177:68:0;;;;;;;:::i;:::-;4492:9:6::1;::::0;:30:::1;::::0;;-1:-1:-1;;;4492:30:6;;;;4457:32:::1;::::0;-1:-1:-1;;;;;4492:9:6::1;::::0;:28:::1;::::0;:30:::1;::::0;;::::1;::::0;4457:32;;4492:30;;;;;;;:9;:30;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;4492:30:6::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;4457:65;;4545:9;4541:350;4560:6;:13;4558:1;:15;4541:350;;;4594:11;4657:3:::0;-1:-1:-1;;;;;4623:38:6::1;:6;4630:1;4623:9;;;;;;-1:-1:-1::0;;;4623:9:6::1;;;;;;;;;;;;;;;:22;;;-1:-1:-1::0;;;;;4623:38:6::1;;4620:260;;4694:6;4701:1;4694:9;;;;;;-1:-1:-1::0;;;4694:9:6::1;;;;;;;;;;;;;;;:22;;;-1:-1:-1::0;;;;;4687:40:6::1;;4736:4;4687:55;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4681:61:::0;-1:-1:-1;4764:6:6;;4761:104:::1;;4794:51;4803:3;4808:6;4815:1;4808:9;;;;;;-1:-1:-1::0;;;4808:9:6::1;;;;;;;;;;;;;;;:22;;;-1:-1:-1::0;;;4794:8:6::1;:51::i;:::-;-1:-1:-1::0;4575:3:6;::::1;::::0;::::1;:::i;:::-;;;;4541:350;;587:96:5::0;666:10;587:96;:::o;2041:169:0:-;2096:16;2115:6;;-1:-1:-1;;;;;2131:17:0;;;-1:-1:-1;;;;;;2131:17:0;;;;;;2163:40;;2115:6;;;;;;;2163:40;;2096:16;2163:40;2041:169;;:::o;5739:4211:6:-;5821:12;5836:51;5845:3;5850:36;5879:5;5850:21;:36::i;:::-;5836:8;:51::i;:::-;5821:66;;5898:19;5920:97;5939:39;5958:4;5964:13;5939:18;:39::i;:::-;5980:36;6009:5;5980:21;:36::i;:::-;5920:18;:97::i;:::-;5898:119;;6028:19;6050:97;6069:39;6088:4;6094:13;6069:18;:39::i;:::-;6110:36;6139:5;6110:21;:36::i;6050:97::-;6028:119;;6158:18;6179:96;6198:38;6217:4;6223:12;6198:18;:38::i;:::-;6238:36;6267:5;6238:21;:36::i;6179:96::-;6158:117;;6286:19;6308:97;6327:39;6346:4;6352:13;6327:18;:39::i;:::-;6368:36;6397:5;6368:21;:36::i;6308:97::-;6286:119;;6419:7;-1:-1:-1;;;6419:21:6;6416:3527;;;6459:13;;6456:300;;6605:17;;6582:54;;-1:-1:-1;;;6582:54:6;;-1:-1:-1;;;;;6582:22:6;;;;;;:54;;6605:17;;;;6624:11;;6582:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6685:17:6;;6660:80;;-1:-1:-1;;;;;6685:17:6;;;;-1:-1:-1;;;;;;;;;;;6660:80:6;;;6704:5;;6711:11;;6724:15;;6660:80;:::i;:::-;;;;;;;;6456:300;6784:1;6773:10;:12;:42;;;;-1:-1:-1;;;;;;6789:17:6;;6814:1;6789:17;;;:10;:17;;;;;:24;:26;;6773:42;6770:678;;;-1:-1:-1;;;;;7134:17:6;;;;;;:10;:17;;;;;:24;7109:50;;7122:10;;7109:12;:50::i;:::-;7096:63;;7182:6;7178:255;-1:-1:-1;;;;;7194:17:6;;;;;;:10;:17;;;;;:24;7192:26;;7178:255;;;-1:-1:-1;;;;;7247:22:6;;7270:17;;;;:10;:17;;;;;:20;;7247:22;;7270:17;7288:1;;7270:20;;;;-1:-1:-1;;;7270:20:6;;;;;;;;;;;;;;;;;;;7247:56;;-1:-1:-1;;;;;;7247:56:6;;;;;;;;;-1:-1:-1;;;;;7270:20:6;;7292:10;;7247:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;7356:17:6;;;;;;:10;:17;;;;;:20;;7374:1;;7356:20;;;;-1:-1:-1;;;7356:20:6;;;;;;;;;;;;;;;;;;;7331:82;;-1:-1:-1;;;;;7356:20:6;;;;-1:-1:-1;;;;;;;;;;;7331:82:6;;;7378:5;;7385:10;;7397:15;;7331:82;:::i;:::-;;;;;;;;7220:3;;;;:::i;:::-;;;;7178:255;;;;6770:678;7465:13;;7462:264;;7596:7;;7573:44;;-1:-1:-1;;;7573:44:6;;-1:-1:-1;;;;;7573:22:6;;;;;;:44;;7596:7;;;;7605:11;;7573:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7665:7:6;;7641:69;;-1:-1:-1;;;;;7665:7:6;;;;-1:-1:-1;;;;;;;;;;;7641:69:6;;;7674:5;;7681:11;;7694:15;;7641:69;:::i;:::-;;;;;;;;7462:264;7743:13;;7740:277;;7884:8;;7861:45;;-1:-1:-1;;;7861:45:6;;-1:-1:-1;;;;;7861:22:6;;;;;;:45;;7884:8;;;;7894:11;;7861:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7955:8:6;;7930:71;;-1:-1:-1;;;;;7955:8:6;;;;-1:-1:-1;;;;;;;;;;;7930:71:6;;;7965:5;;7972:11;;7985:15;;7930:71;:::i;:::-;;;;;;;;7740:277;6416:3527;;;8046:7;-1:-1:-1;;;8046:15:6;8043:1900;;;8435:12;;8432:235;;8539:7;;8516:43;;-1:-1:-1;;;8516:43:6;;-1:-1:-1;;;;;8516:22:6;;;;;;:43;;8539:7;;;;8548:10;;8516:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8607:7:6;;8583:68;;-1:-1:-1;;;;;8607:7:6;;;;-1:-1:-1;;;;;;;;;;;8583:68:6;;;8616:5;;8623:10;;8635:15;;8583:68;:::i;:::-;;;;;;;;8432:235;8684:13;;8681:280;;8810:17;;8787:54;;-1:-1:-1;;;8787:54:6;;-1:-1:-1;;;;;8787:22:6;;;;;;:54;;8810:17;;;;8829:11;;8787:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8890:17:6;;8865:80;;-1:-1:-1;;;;;8890:17:6;;;;-1:-1:-1;;;;;;;;;;;8865:80:6;;;8909:5;;8916:11;;8929:15;;8865:80;:::i;:::-;;;;;;;;8681:280;8990:1;8978:11;:13;:43;;;;-1:-1:-1;;;;;;8995:17:6;;9020:1;8995:17;;;:10;:17;;;;;:24;:26;;8978:43;8975:468;;;-1:-1:-1;;;;;9127:17:6;;;;;;:10;:17;;;;;:24;9095:57;;9114:11;;9095:18;:57::i;:::-;9081:71;;9175:6;9171:257;-1:-1:-1;;;;;9187:17:6;;;;;;:10;:17;;;;;:24;9185:26;;9171:257;;;-1:-1:-1;;;;;9240:22:6;;9263:17;;;;:10;:17;;;;;:20;;9240:22;;9263:17;9281:1;;9263:20;;;;-1:-1:-1;;;9263:20:6;;;;;;;;;;;;;;;;;;;9240:57;;-1:-1:-1;;;;;;9240:57:6;;;;;;;;;-1:-1:-1;;;;;9263:20:6;;9285:11;;9240:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;9350:17:6;;;;;;:10;:17;;;;;:20;;9368:1;;9350:20;;;;-1:-1:-1;;;9350:20:6;;;;;;;;;;;;;;;;;;;9325:83;;-1:-1:-1;;;;;9350:20:6;;;;-1:-1:-1;;;;;;;;;;;9325:83:6;;;9372:5;;9379:11;;9392:15;;9325:83;:::i;:::-;;;;;;;;9213:3;;;;:::i;:::-;;;;9171:257;;;;8975:468;9472:1;9460:11;:13;:42;;;;-1:-1:-1;;;;;;9477:16:6;;9501:1;9477:16;;;:9;:16;;;;;:23;:25;;9460:42;9457:475;;;-1:-1:-1;;;;;9620:16:6;;;;;;:9;:16;;;;;:23;9588:56;;9607:11;;9588:18;:56::i;:::-;9574:70;;9667:6;9663:254;-1:-1:-1;;;;;9679:16:6;;;;;;:9;:16;;;;;:23;9677:25;;9663:254;;;-1:-1:-1;;;;;9731:22:6;;9754:16;;;;:9;:16;;;;;:19;;9731:22;;9754:16;9771:1;;9754:19;;;;-1:-1:-1;;;9754:19:6;;;;;;;;;;;;;;;;;;;9731:56;;-1:-1:-1;;;;;;9731:56:6;;;;;;;;;-1:-1:-1;;;;;9754:19:6;;9775:11;;9731:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;9840:16:6;;;;;;:9;:16;;;;;:19;;9857:1;;9840:19;;;;-1:-1:-1;;;9840:19:6;;;;;;;;;;;;;;;;;;;9815:82;;-1:-1:-1;;;;;9840:19:6;;;;-1:-1:-1;;;;;;;;;;;9815:82:6;;;9861:5;;9868:11;;9881:15;;9815:82;:::i;:::-;;;;;;;;9704:3;;;;:::i;:::-;;;;9663:254;;;;9457:475;5739:4211;;;;;;;;:::o;10124:424::-;10192:7;10293:21;10331:5;-1:-1:-1;;;;;10317:30:6;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10293:56;;;;10427:26;10456:27;10465:2;10469:13;10456:8;:27::i;:::-;10427:56;-1:-1:-1;10518:22:6;10427:56;10518:2;:22;:::i;:::-;10501:39;;907:4:16;10501:39:6;:::i;:::-;10494:46;10124:424;-1:-1:-1;;;;10124:424:6:o;11088:585::-;11168:7;11624:41;11643:6;11651:13;1776:222:16;1838:7;;1876:5;1880:1;1876;:5;:::i;:::-;1858:23;-1:-1:-1;1892:57:16;1901:6;;;:26;;-1:-1:-1;1926:1:16;1911:11;1921:1;1911:7;:11;:::i;:::-;:16;1901:26;5375:1:15;1892:8:16;:57::i;:::-;1977:13;907:4;1977:7;:13;:::i;2646:378::-;2708:7;2728:38;2737:6;;;5425:1:15;2728:8:16;:38::i;:::-;2783:6;2779:238;;-1:-1:-1;2813:1:16;2806:8;;2779:238;2847:17;2867:7;907:4;2867:1;:7;:::i;:::-;2847:27;-1:-1:-1;2889:51:16;907:4;2898:13;2910:1;2847:27;2898:13;:::i;:::-;:20;5474:1:15;2889:8:16;:51::i;:::-;2992:13;3004:1;2992:9;:13;:::i;:::-;2985:20;;;;;2423:151:18;2485:7;2505:38;2514:6;;;5425:1:15;2505:8:18;:38::i;:::-;2561:5;2565:1;2561;:5;:::i;1171:170::-;1229:7;1249:37;1263:1;1258;:6;;5276:1:15;1249:8:18;:37::i;:::-;1297:9;1309:5;1313:1;1309;:5;:::i;940:103:15:-;1010:9;1005:34;;-1:-1:-1;;;1778:18:15;4470:79;;;4690:66;4684:4;4677:80;4834:1;4828:4;4821:15;2933:2;2968:18;;;3014;;;2938:4;3010:29;;;3824:1;3917:14;2918:18;;;3906:26;3064:18;;;;3112;;;3108:29;3938:2;3934:17;3902:50;3881:72;;3876:3;3872:82;4903:4;4896:26;1021:18;;2968;;1523:28;;-1:-1:-1;;;1523:28:15;1807:14;;5133:3;;5123:14;14:142:19;95:13;;117:33;95:13;117:33;:::i;161:259::-;;273:2;261:9;252:7;248:23;244:32;241:2;;;294:6;286;279:22;241:2;338:9;325:23;357:33;384:5;357:33;:::i;:::-;409:5;231:189;-1:-1:-1;;;231:189:19:o;425:263::-;;548:2;536:9;527:7;523:23;519:32;516:2;;;569:6;561;554:22;516:2;606:9;600:16;625:33;652:5;625:33;:::i;693:402::-;;;822:2;810:9;801:7;797:23;793:32;790:2;;;843:6;835;828:22;790:2;887:9;874:23;906:33;933:5;906:33;:::i;:::-;958:5;-1:-1:-1;1015:2:19;1000:18;;987:32;1028:35;987:32;1028:35;:::i;:::-;1082:7;1072:17;;;780:315;;;;;:::o;1100:689::-;;;;;1263:3;1251:9;1242:7;1238:23;1234:33;1231:2;;;1285:6;1277;1270:22;1231:2;1329:9;1316:23;1348:33;1375:5;1348:33;:::i;:::-;1400:5;-1:-1:-1;1457:2:19;1442:18;;1429:32;1470:35;1429:32;1470:35;:::i;:::-;1524:7;-1:-1:-1;1583:2:19;1568:18;;1555:32;1596:35;1555:32;1596:35;:::i;:::-;1650:7;-1:-1:-1;1709:2:19;1694:18;;1681:32;1722:35;1681:32;1722:35;:::i;:::-;1221:568;;;;-1:-1:-1;1221:568:19;;-1:-1:-1;;1221:568:19:o;1794:2194::-;;1943:2;1986;1974:9;1965:7;1961:23;1957:32;1954:2;;;2007:6;1999;1992:22;1954:2;2045:9;2039:16;2074:18;2115:2;2107:6;2104:14;2101:2;;;2136:6;2128;2121:22;2101:2;2179:6;2168:9;2164:22;2154:32;;2224:7;2217:4;2213:2;2209:13;2205:27;2195:2;;2251:6;2243;2236:22;2195:2;2285;2279:9;2307:2;2303;2300:10;2297:2;;;2313:18;;:::i;:::-;2353:36;2385:2;2380;2376;2372:11;2368:20;2353:36;:::i;:::-;2423:15;;;2454:12;;;;2486:11;;;2515:6;2530:1428;2544:2;2541:1;2538:9;2530:1428;;;2607:10;;2599:19;;-1:-1:-1;;2695:4:19;2672:16;;;2668:25;;2664:36;2661:2;;;2718:6;2710;2703:22;2661:2;2760:4;2754:11;2808:4;2800:6;2796:17;2867:6;2855:10;2852:22;2847:2;2835:10;2832:18;2829:46;2826:2;;;2878:18;;:::i;:::-;2918:4;2911:24;2970:11;;;2964:18;2998:16;;;2995:2;;;3032:6;3024;3017:22;2995:2;3064:17;;3116:2;3108:11;;3104:25;-1:-1:-1;3094:2:19;;3148:6;3140;3133:22;3094:2;3194;3190;3186:11;3180:18;3221:2;3217;3214:10;3211:2;;;3227:18;;:::i;:::-;3273:47;3316:2;3311;3304:4;3300:2;3296:13;3292:22;3288:31;3273:47;:::i;:::-;3260:60;;3347:2;3340:5;3333:17;3393:7;3386:4;3381:2;3377;3373:11;3369:22;3366:35;3363:2;;;3419:6;3411;3404:22;3363:2;3452:6;3471:152;3487:2;3482:3;3479:11;3471:152;;;3588:12;;;3602:4;3584:23;3578:30;3556:15;;;3552:24;;3545:64;3500:12;;3471:152;;;3647:2;3642:3;3639:11;3636:2;;;3713:6;3708:2;3703;3696:5;3692:14;3688:23;3681:39;3636:2;;;;3762:5;3754:6;3747:21;3805:46;3845:4;3841:2;3837:13;3805:46;:::i;:::-;3788:15;;;3781:71;3865:19;;-1:-1:-1;;3904:12:19;;;;3936;;;;2562:1;2555:9;2530:1428;;;-1:-1:-1;3977:5:19;;1923:2065;-1:-1:-1;;;;;;;;;1923:2065:19:o;3993:297::-;;4113:2;4101:9;4092:7;4088:23;4084:32;4081:2;;;4134:6;4126;4119:22;4081:2;4171:9;4165:16;4224:5;4217:13;4210:21;4203:5;4200:32;4190:2;;4251:6;4243;4236:22;4295:190;;4407:2;4395:9;4386:7;4382:23;4378:32;4375:2;;;4428:6;4420;4413:22;4375:2;-1:-1:-1;4456:23:19;;4365:120;-1:-1:-1;4365:120:19:o;4490:327::-;;;4619:2;4607:9;4598:7;4594:23;4590:32;4587:2;;;4640:6;4632;4625:22;4587:2;4681:9;4668:23;4658:33;;4741:2;4730:9;4726:18;4713:32;4754:33;4781:5;4754:33;:::i;4822:470::-;;;;4968:2;4956:9;4947:7;4943:23;4939:32;4936:2;;;4989:6;4981;4974:22;4936:2;5030:9;5017:23;5007:33;;5090:2;5079:9;5075:18;5062:32;5103:33;5130:5;5103:33;:::i;:::-;5155:5;-1:-1:-1;5212:2:19;5197:18;;5184:32;5225:35;5184:32;5225:35;:::i;:::-;5279:7;5269:17;;;4926:366;;;;;:::o;5297:255::-;;;5437:2;5425:9;5416:7;5412:23;5408:32;5405:2;;;5458:6;5450;5443:22;5405:2;-1:-1:-1;;5486:16:19;;5542:2;5527:18;;;5521:25;5486:16;;5521:25;;-1:-1:-1;5395:157:19:o;5557:194::-;;5680:2;5668:9;5659:7;5655:23;5651:32;5648:2;;;5701:6;5693;5686:22;5648:2;-1:-1:-1;5729:16:19;;5638:113;-1:-1:-1;5638:113:19:o;5756:293::-;;5877:2;5865:9;5856:7;5852:23;5848:32;5845:2;;;5898:6;5890;5883:22;5845:2;5935:9;5929:16;5985:4;5978:5;5974:16;5967:5;5964:27;5954:2;;6010:6;6002;5995:22;6054:203;-1:-1:-1;;;;;6218:32:19;;;;6200:51;;6188:2;6173:18;;6155:102::o;6262:274::-;-1:-1:-1;;;;;6454:32:19;;;;6436:51;;6518:2;6503:18;;6496:34;6424:2;6409:18;;6391:145::o;6541:661::-;6712:2;6764:21;;;6834:13;;6737:18;;;6856:22;;;6541:661;;6712:2;6935:15;;;;6909:2;6894:18;;;6541:661;6981:195;6995:6;6992:1;6989:13;6981:195;;;7060:13;;-1:-1:-1;;;;;7056:39:19;7044:52;;7151:15;;;;7116:12;;;;7092:1;7010:9;6981:195;;;-1:-1:-1;7193:3:19;;6692:510;-1:-1:-1;;;;;;6692:510:19:o;7207:187::-;7372:14;;7365:22;7347:41;;7335:2;7320:18;;7302:92::o;7399:402::-;7601:2;7583:21;;;7640:2;7620:18;;;7613:30;7679:34;7674:2;7659:18;;7652:62;-1:-1:-1;;;7745:2:19;7730:18;;7723:36;7791:3;7776:19;;7573:228::o;7806:314::-;-1:-1:-1;;;8043:28:19;;8102:2;8087:18;;8080:34;;;;8031:2;8016:18;;7998:122::o;8125:314::-;-1:-1:-1;;;8362:28:19;;8421:2;8406:18;;8399:34;;;;8350:2;8335:18;;8317:122::o;8444:484::-;-1:-1:-1;;;8738:29:19;;-1:-1:-1;;;;;8803:32:19;;;;8798:2;8783:18;;8776:60;8867:2;8852:18;;8845:34;;;;8910:2;8895:18;;8888:34;8725:3;8710:19;;8692:236::o;8933:484::-;-1:-1:-1;;;9227:29:19;;-1:-1:-1;;;;;9292:32:19;;;;9287:2;9272:18;;9265:60;9356:2;9341:18;;9334:34;;;;9399:2;9384:18;;9377:34;9214:3;9199:19;;9181:236::o;9422:483::-;-1:-1:-1;;;9716:28:19;;-1:-1:-1;;;;;9780:32:19;;;;9775:2;9760:18;;9753:60;9844:2;9829:18;;9822:34;;;;9887:2;9872:18;;9865:34;9703:3;9688:19;;9670:235::o;9910:356::-;10112:2;10094:21;;;10131:18;;;10124:30;10190:34;10185:2;10170:18;;10163:62;10257:2;10242:18;;10084:182::o;10271:484::-;-1:-1:-1;;;10565:29:19;;-1:-1:-1;;;;;10630:32:19;;;;10625:2;10610:18;;10603:60;10694:2;10679:18;;10672:34;;;;10737:2;10722:18;;10715:34;10552:3;10537:19;;10519:236::o;10760:484::-;-1:-1:-1;;;11054:29:19;;-1:-1:-1;;;;;11119:32:19;;;;11114:2;11099:18;;11092:60;11183:2;11168:18;;11161:34;;;;11226:2;11211:18;;11204:34;11041:3;11026:19;;11008:236::o;11249:177::-;11395:25;;;11383:2;11368:18;;11350:76::o;11431:391::-;11662:25;;;11718:2;11703:18;;11696:34;;;;11761:2;11746:18;;11739:34;11804:2;11789:18;;11782:34;11649:3;11634:19;;11616:206::o;11827:251::-;11897:2;11891:9;11927:17;;;11974:18;11959:34;;11995:22;;;11956:62;11953:2;;;12021:18;;:::i;:::-;12057:2;12050:22;11871:207;;-1:-1:-1;11871:207:19:o;12083:217::-;;12149:1;12139:2;;-1:-1:-1;;;12174:31:19;;12228:4;12225:1;12218:15;12256:4;12181:1;12246:15;12139:2;-1:-1:-1;12285:9:19;;12129:171::o;12305:453::-;12401:6;12424:5;12438:314;12487:1;12524:2;12514:8;12511:16;12501:2;;12531:5;;;12501:2;12572:4;12567:3;12563:14;12557:4;12554:24;12551:2;;;12581:18;;:::i;:::-;12631:2;12621:8;12617:17;12614:2;;;12646:16;;;;12614:2;12725:17;;;;;12685:15;;12438:314;;;12382:376;;;;;;;:::o;12763:139::-;;12852:44;-1:-1:-1;;12879:8:19;12873:4;12907:922;12991:8;12981:2;;-1:-1:-1;13032:1:19;13046:5;;12981:2;13080:4;13070:2;;-1:-1:-1;13117:1:19;13131:5;;13070:2;13162:4;13180:1;13175:59;;;;13248:1;13243:183;;;;13155:271;;13175:59;13205:1;13196:10;;13219:5;;;13243:183;13280:3;13270:8;13267:17;13264:2;;;13287:18;;:::i;:::-;13343:1;13333:8;13329:16;13320:25;;13371:3;13364:5;13361:14;13358:2;;;13378:18;;:::i;:::-;13411:5;;;13155:271;;13510:2;13500:8;13497:16;13491:3;13485:4;13482:13;13478:36;13472:2;13462:8;13459:16;13454:2;13448:4;13445:12;13441:35;13438:77;13435:2;;;-1:-1:-1;13547:19:19;;;13582:14;;;13579:2;;;13599:18;;:::i;:::-;13632:5;;13435:2;13679:42;13717:3;13707:8;13701:4;13698:1;13679:42;:::i;:::-;13754:6;13749:3;13745:16;13736:7;13733:29;13730:2;;;13765:18;;:::i;:::-;13803:20;;12971:858;-1:-1:-1;;;;12971:858:19:o;13834:168::-;;13940:1;13936;13932:6;13928:14;13925:1;13922:21;13917:1;13910:9;13903:17;13899:45;13896:2;;;13947:18;;:::i;:::-;-1:-1:-1;13987:9:19;;13886:116::o;14007:125::-;;14075:1;14072;14069:8;14066:2;;;14080:18;;:::i;:::-;-1:-1:-1;14117:9:19;;14056:76::o;14137:135::-;;-1:-1:-1;;14197:17:19;;14194:2;;;14217:18;;:::i;:::-;-1:-1:-1;14264:1:19;14253:13;;14184:88::o;14277:127::-;14338:10;14333:3;14329:20;14326:1;14319:31;14369:4;14366:1;14359:15;14393:4;14390:1;14383:15;14409:127;14470:10;14465:3;14461:20;14458:1;14451:31;14501:4;14498:1;14491:15;14525:4;14522:1;14515:15;14541:133;-1:-1:-1;;;;;14618:31:19;;14608:42;;14598:2;;14664:1;14661;14654:12",
    "source": "// Verified Network fee distribution\r\n// (c) Kallol Borah, 2021\r\n\r\n//\"SPDX-License-Identifier: UNLICENSED\"\r\n\r\npragma solidity 0.8.0;\r\n\r\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\r\nimport \"@openzeppelin/contracts/security/Pausable.sol\";\r\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\r\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\r\n\r\nimport \"./interfaces/ViaFactory.sol\";\r\nimport \"./interfaces/ISettlor.sol\";\r\nimport \"./interfaces/ILiquidity.sol\";\r\nimport \"./interfaces/IMarketMaker.sol\";\r\n\r\nimport \"./math/FixedPoint.sol\";\r\nimport \"./math/Math.sol\";\r\n\r\ncontract Distribution is Ownable, Pausable {\r\n\r\n    using FixedPoint for uint256;\r\n\r\n    ViaFactory private factory;\r\n    ILiquidity private liquidity;\r\n    \r\n    mapping(address => address[]) private businesses;\r\n    mapping(address => uint256) private businessIndex;\r\n    mapping(address => address[]) private operators;\r\n    mapping(address => uint256) private operatorIndex;\r\n    \r\n    address private founder;\r\n    address private treasury;\r\n    address private liquidityContract;\r\n\r\n    uint256 private immutable businessShare;\r\n    uint256 private immutable founderShare;\r\n    uint256 private immutable investorShare;\r\n    uint256 private immutable operatorShare;\r\n\r\n    event RevenueShare(bytes32 shareholderType, address indexed shareholder, address token, uint256 amount, uint256 timestamp);\r\n\r\n    //revenue shares\r\n    constructor(uint256 _business, uint256 _royalty, uint256 _investor, uint256 _operator){ \r\n        businessShare = _business;\r\n        founderShare = _royalty;\r\n        investorShare = _investor;\r\n        operatorShare = _operator;\r\n    }\r\n\r\n    function getRevenueShares() external view returns(uint256, uint256, uint256, uint256){\r\n        return (businessShare, founderShare, investorShare, operatorShare);\r\n    }\r\n\r\n    function initialize(address _viaFactory, address _founder, address _treasury, address _liquidity) public onlyOwner {\r\n        factory = ViaFactory(_viaFactory);\r\n        founder = _founder;\r\n        treasury = _treasury;\r\n        liquidityContract = _liquidity;\r\n        liquidity = ILiquidity(_liquidity);\r\n    }\r\n\r\n    //Need to add shareholder for every Verified and other cash tokens supported on system\r\n    function addRevenueShareholder(bytes32 _type, address _shareholder, address _currency) external onlyOwner {\r\n        if(_type==\"Business\"){\r\n            if(businessIndex[_shareholder] == 0){\r\n                businesses[_currency].push(_shareholder);\r\n                businessIndex[_shareholder] = businesses[_currency].length;\r\n            }\r\n        }\r\n        else if(_type==\"Operator\"){\r\n            if(operatorIndex[_shareholder] == 0){\r\n                operators[_currency].push(_shareholder);\r\n                operatorIndex[_shareholder] = operators[_currency].length;\r\n            }\r\n        }    \r\n    }\r\n\r\n    //Returns shareholders\r\n    function getRevenueShareholders(bytes32 _type, address _currency) external view onlyOwner returns(address[] memory shareholders){\r\n        if(_type==\"Business\")\r\n            return businesses[_currency];\r\n        else if(_type==\"Operator\")\r\n            return operators[_currency];\r\n    }\r\n\r\n    //Returns payment fees\r\n    function getPaymentFeeCollected(bytes32 _currency) external view onlyOwner returns(uint256){\r\n        address cashToken = factory.getIssuer(\"ViaCash\", _currency);\r\n        if(cashToken!=address(0x0))\r\n            return (IERC20(cashToken).balanceOf(address(this)));\r\n        else\r\n            return 0;\r\n    }     \r\n\r\n    //Returns bond issuing fees\r\n    function getLoanFeeCollected(bytes32 _currency) external view onlyOwner returns(uint256){\r\n        address bondToken = factory.getIssuer(\"ViaBond\", _currency);\r\n        if(bondToken!=address(0x0))\r\n            return (IERC20(bondToken).balanceOf(address(this)));\r\n        else\r\n            return 0;\r\n    }\r\n\r\n    //Returns security issuing fees\r\n    function getIssuingFeeCollected(address _platform, address _token) external onlyOwner returns(uint256){\r\n        return (IMarketMaker(_platform).getIssuingFeeCollected(_token));\r\n    } \r\n\r\n    //Returns security trading fees\r\n    function getTradingFeeCollected(address _platform, address _token) external onlyOwner returns(uint256){\r\n        return (ISettlor(_platform).getTradingFeeCollected(_token));\r\n    }\r\n    \r\n    //Shares securities issuing and trading fees\r\n    function shareCollection() external onlyOwner {\r\n        ILiquidity.token[] memory tokens = liquidity.getSupportedTokens();        \r\n        for(uint256 i=0; i<tokens.length; i++){\r\n            uint256 fee;\r\n            if(tokens[i].tokenAddress != address(0x0)){\r\n                fee = IERC20(tokens[i].tokenAddress).balanceOf(address(this));\r\n                if(fee!=0){\r\n                    transfer(fee, tokens[i].tokenAddress, \"collection\");\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    //Shares payments and bond issuing fees\r\n    function shareFee() external onlyOwner {\r\n        uint256 tokenCount = factory.getTokenCount();\r\n        for(uint i=0; i<tokenCount; i++){\r\n            address token = factory.getToken(i);\r\n            ( , bytes32 tokenType) = factory.getNameAndType(token);             \r\n            if(tokenType==\"ViaCash\"){\r\n                uint256 fee = IERC20(token).balanceOf(address(this));\r\n                if(fee!=0){\r\n                    transfer(fee, token, \"fees\");\r\n                }\r\n            }\r\n            else if(tokenType==\"ViaBond\"){\r\n                uint256 fee = IERC20(token).balanceOf(address(this));\r\n                if(fee!=0){\r\n                    transfer(fee, token, \"fees\");\r\n                }\r\n            }\r\n        }\r\n    }\r\n    \r\n    //Transfers of revenue shares\r\n    function transfer(uint256 fee, address token, bytes32 sharing) private {\r\n        uint256 fees = _upscale(fee, _computeScalingFactor(IERC20(token)));\r\n        uint256 businessFee = FixedPoint.divDown(FixedPoint.mulDown(fees, businessShare), _computeScalingFactor(IERC20(token)));\r\n        uint256 operatorFee = FixedPoint.divDown(FixedPoint.mulDown(fees, operatorShare), _computeScalingFactor(IERC20(token)));\r\n        uint256 founderFee = FixedPoint.divDown(FixedPoint.mulDown(fees, founderShare), _computeScalingFactor(IERC20(token)));\r\n        uint256 investorFee = FixedPoint.divDown(FixedPoint.mulDown(fees, investorShare), _computeScalingFactor(IERC20(token)));\r\n        if(sharing==\"collection\"){\r\n            if(businessFee>0){ //50% of underwriting fees go to Liquidity contract to be paid out to liquidity providers\r\n                IERC20(token).transfer(liquidityContract, businessFee);\r\n                emit RevenueShare(\"Investor\", liquidityContract, token, businessFee, block.timestamp);\r\n            }\r\n            if(founderFee>0 && businesses[token].length>0){ //15% of underwriting fees go to Verified businesses\r\n                //founderFee = Math.divDown(_upscale(founderFee, _computeScalingFactor(IERC20(token))), _upscale(businesses[token].length\r\n                //        , _computeScalingFactor(IERC20(token))));\r\n                founderFee = Math.divDown(founderFee, businesses[token].length);\r\n                for(uint j=0; j<businesses[token].length; j++){\r\n                    IERC20(token).transfer(businesses[token][j], founderFee);\r\n                    emit RevenueShare(\"Business\", businesses[token][j], token, founderFee, block.timestamp);\r\n                }\r\n            }\r\n            if(investorFee>0){ //15% of underwriting fees to the Liquidity contract to be paid out for IP\r\n                IERC20(token).transfer(founder, investorFee);\r\n                emit RevenueShare(\"Royalty\", founder, token, investorFee, block.timestamp);\r\n            }\r\n            if(operatorFee>0){ //20% of underwriting fees go to the treasury for Vitta redemption (buyback) reserve\r\n                IERC20(token).transfer(treasury, operatorFee);\r\n                emit RevenueShare(\"Treasury\", treasury, token, operatorFee, block.timestamp);\r\n            }\r\n        }\r\n        else if(sharing==\"fees\"){\r\n            //businessFee = Math.divDown(_upscale(businessFee, _computeScalingFactor(IERC20(token))), _upscale(businesses[token].length, _computeScalingFactor(IERC20(token))));\r\n            //operatorFee = Math.divDown(_upscale(operatorFee, _computeScalingFactor(IERC20(token))), _upscale(operators[token].length, _computeScalingFactor(IERC20(token))));\r\n            if(founderFee>0){ // 15% of fees go towards royalty payment for IP\r\n                IERC20(token).transfer(founder, founderFee);\r\n                emit RevenueShare(\"Royalty\", founder, token, founderFee, block.timestamp);\r\n            }\r\n            if(investorFee>0){ //15% of fees go to Liquidity contract to be distributed to investors\r\n                IERC20(token).transfer(liquidityContract, investorFee);\r\n                emit RevenueShare(\"Investor\", liquidityContract, token, investorFee, block.timestamp);\r\n            }\r\n            if(businessFee>0 && businesses[token].length>0){ //50% of fees go to Verified businesses\r\n                businessFee = FixedPoint.divDown(businessFee, businesses[token].length);\r\n                for(uint j=0; j<businesses[token].length; j++){\r\n                    IERC20(token).transfer(businesses[token][j], businessFee);\r\n                    emit RevenueShare(\"Business\", businesses[token][j], token, businessFee, block.timestamp);\r\n                }\r\n            }\r\n            if(operatorFee>0 && operators[token].length>0){ //20% of fees go to Verified Network node operators\r\n                operatorFee = FixedPoint.divDown(operatorFee, operators[token].length);\r\n                for(uint j=0; j<operators[token].length; j++){\r\n                    IERC20(token).transfer(operators[token][j], operatorFee);\r\n                    emit RevenueShare(\"Operator\", operators[token][j], token, operatorFee, block.timestamp);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Returns a scaling factor that, when multiplied to a token amount for `token`, normalizes its balance as if\r\n     * it had 18 decimals.\r\n     */\r\n    function _computeScalingFactor(IERC20 token) internal view returns (uint256) {\r\n        // Tokens that don't implement the `decimals` method are not supported.\r\n        uint256 tokenDecimals = ERC20(address(token)).decimals();\r\n\r\n        // Tokens with more than 18 decimals are not supported.\r\n        uint256 decimalsDifference = Math.sub(18, tokenDecimals);\r\n        return FixedPoint.ONE * 10**decimalsDifference;\r\n    }\r\n\r\n    /**\r\n     * @dev Reverses the `scalingFactor` applied to `amount`, resulting in a smaller or equal value depending on\r\n     * whether it needed scaling or not. The result is rounded down.\r\n     */\r\n    function _downscaleDown(uint256 amount, uint256 scalingFactor) internal pure returns (uint256) {\r\n        return FixedPoint.divDown(amount, scalingFactor);\r\n    }\r\n\r\n    /**\r\n     * @dev Applies `scalingFactor` to `amount`, resulting in a larger or equal value depending on whether it needed\r\n     * scaling or not.\r\n     */\r\n    function _upscale(uint256 amount, uint256 scalingFactor) internal pure returns (uint256) {\r\n        // Upscale rounding wouldn't necessarily always go in the same direction: in a swap for example the balance of\r\n        // token in should be rounded up, and that of token out rounded down. This is the only place where we round in\r\n        // the same direction for all amounts, as the impact of this rounding is expected to be minimal (and there's no\r\n        // rounding error unless `_scalingFactor()` is overriden).\r\n        return FixedPoint.mulDown(amount, scalingFactor);\r\n    }\r\n\r\n}\r\n",
    "sourcePath": "D:\\Code\\verified-liquidity\\distribution\\contracts\\Distribution.sol",
    "ast": {
        "absolutePath": "project:/contracts/Distribution.sol",
        "exportedSymbols": {
            "Context": [
                866
            ],
            "Distribution": [
                1863
            ],
            "ERC20": [
                741
            ],
            "Errors": [
                3301
            ],
            "FixedPoint": [
                3723
            ],
            "IERC20": [
                819
            ],
            "IERC20Metadata": [
                844
            ],
            "ILiquidity": [
                2155
            ],
            "IMarketMaker": [
                2410
            ],
            "IOrder": [
                2476
            ],
            "ISettlor": [
                2583
            ],
            "ITrade": [
                2620
            ],
            "LogExpMath": [
                5021
            ],
            "Math": [
                5333
            ],
            "Ownable": [
                103
            ],
            "Pausable": [
                195
            ],
            "ViaFactory": [
                2745
            ],
            "_require": [
                2763,
                2782
            ],
            "_revert": [
                2794,
                2814
            ]
        },
        "id": 1864,
        "license": "UNLICENSED",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 868,
                "literals": [
                    "solidity",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "110:22:6"
            },
            {
                "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
                "file": "@openzeppelin/contracts/access/Ownable.sol",
                "id": 869,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 104,
                "src": "136:52:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/security/Pausable.sol",
                "file": "@openzeppelin/contracts/security/Pausable.sol",
                "id": 870,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 196,
                "src": "190:55:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                "id": 871,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 820,
                "src": "247:56:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "id": 872,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 742,
                "src": "305:55:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/ViaFactory.sol",
                "file": "./interfaces/ViaFactory.sol",
                "id": 873,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 2746,
                "src": "364:37:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/ISettlor.sol",
                "file": "./interfaces/ISettlor.sol",
                "id": 874,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 2584,
                "src": "403:35:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/ILiquidity.sol",
                "file": "./interfaces/ILiquidity.sol",
                "id": 875,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 2156,
                "src": "440:37:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/IMarketMaker.sol",
                "file": "./interfaces/IMarketMaker.sol",
                "id": 876,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 2411,
                "src": "479:39:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/math/FixedPoint.sol",
                "file": "./math/FixedPoint.sol",
                "id": 877,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 3724,
                "src": "522:31:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/math/Math.sol",
                "file": "./math/Math.sol",
                "id": 878,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 5334,
                "src": "555:25:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 879,
                            "name": "Ownable",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 103,
                            "src": "609:7:6"
                        },
                        "id": 880,
                        "nodeType": "InheritanceSpecifier",
                        "src": "609:7:6"
                    },
                    {
                        "baseName": {
                            "id": 881,
                            "name": "Pausable",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 195,
                            "src": "618:8:6"
                        },
                        "id": 882,
                        "nodeType": "InheritanceSpecifier",
                        "src": "618:8:6"
                    }
                ],
                "contractDependencies": [
                    103,
                    195,
                    866
                ],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 1863,
                "linearizedBaseContracts": [
                    1863,
                    195,
                    103,
                    866
                ],
                "name": "Distribution",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "id": 885,
                        "libraryName": {
                            "id": 883,
                            "name": "FixedPoint",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3723,
                            "src": "642:10:6"
                        },
                        "nodeType": "UsingForDirective",
                        "src": "636:29:6",
                        "typeName": {
                            "id": 884,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "657:7:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        }
                    },
                    {
                        "constant": false,
                        "id": 888,
                        "mutability": "mutable",
                        "name": "factory",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "673:26:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ViaFactory_$2745",
                            "typeString": "contract ViaFactory"
                        },
                        "typeName": {
                            "id": 887,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                                "id": 886,
                                "name": "ViaFactory",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2745,
                                "src": "673:10:6"
                            },
                            "referencedDeclaration": 2745,
                            "src": "673:10:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                "typeString": "contract ViaFactory"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 891,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "706:28:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILiquidity_$2155",
                            "typeString": "contract ILiquidity"
                        },
                        "typeName": {
                            "id": 890,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                                "id": 889,
                                "name": "ILiquidity",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2155,
                                "src": "706:10:6"
                            },
                            "referencedDeclaration": 2155,
                            "src": "706:10:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidity_$2155",
                                "typeString": "contract ILiquidity"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 896,
                        "mutability": "mutable",
                        "name": "businesses",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "747:48:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(address => address[])"
                        },
                        "typeName": {
                            "id": 895,
                            "keyType": {
                                "id": 892,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "755:7:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "747:29:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                "typeString": "mapping(address => address[])"
                            },
                            "valueType": {
                                "baseType": {
                                    "id": 893,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "766:7:6",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "id": 894,
                                "nodeType": "ArrayTypeName",
                                "src": "766:9:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                    "typeString": "address[]"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 900,
                        "mutability": "mutable",
                        "name": "businessIndex",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "802:49:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                        },
                        "typeName": {
                            "id": 899,
                            "keyType": {
                                "id": 897,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "810:7:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "802:27:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                            },
                            "valueType": {
                                "id": 898,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "821:7:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 905,
                        "mutability": "mutable",
                        "name": "operators",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "858:47:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(address => address[])"
                        },
                        "typeName": {
                            "id": 904,
                            "keyType": {
                                "id": 901,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "866:7:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "858:29:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                "typeString": "mapping(address => address[])"
                            },
                            "valueType": {
                                "baseType": {
                                    "id": 902,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "877:7:6",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "id": 903,
                                "nodeType": "ArrayTypeName",
                                "src": "877:9:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                    "typeString": "address[]"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 909,
                        "mutability": "mutable",
                        "name": "operatorIndex",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "912:49:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                        },
                        "typeName": {
                            "id": 908,
                            "keyType": {
                                "id": 906,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "920:7:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "912:27:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                            },
                            "valueType": {
                                "id": 907,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "931:7:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 911,
                        "mutability": "mutable",
                        "name": "founder",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "974:23:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 910,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "974:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 913,
                        "mutability": "mutable",
                        "name": "treasury",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "1004:24:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 912,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1004:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 915,
                        "mutability": "mutable",
                        "name": "liquidityContract",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "1035:33:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 914,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1035:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 917,
                        "mutability": "immutable",
                        "name": "businessShare",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "1077:39:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 916,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1077:7:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 919,
                        "mutability": "immutable",
                        "name": "founderShare",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "1123:38:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 918,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1123:7:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 921,
                        "mutability": "immutable",
                        "name": "investorShare",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "1168:39:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 920,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1168:7:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 923,
                        "mutability": "immutable",
                        "name": "operatorShare",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "1214:39:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 922,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1214:7:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "anonymous": false,
                        "id": 935,
                        "name": "RevenueShare",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 934,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 925,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "shareholderType",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 935,
                                    "src": "1281:23:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 924,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1281:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 927,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "shareholder",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 935,
                                    "src": "1306:27:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 926,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1306:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 929,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "token",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 935,
                                    "src": "1335:13:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 928,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1335:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 931,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 935,
                                    "src": "1350:14:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 930,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1350:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 933,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "timestamp",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 935,
                                    "src": "1366:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 932,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1366:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1280:104:6"
                        },
                        "src": "1262:123:6"
                    },
                    {
                        "body": {
                            "id": 962,
                            "nodeType": "Block",
                            "src": "1501:151:6",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 948,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 946,
                                            "name": "businessShare",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 917,
                                            "src": "1513:13:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 947,
                                            "name": "_business",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 937,
                                            "src": "1529:9:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1513:25:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 949,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1513:25:6"
                                },
                                {
                                    "expression": {
                                        "id": 952,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 950,
                                            "name": "founderShare",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 919,
                                            "src": "1549:12:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 951,
                                            "name": "_royalty",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 939,
                                            "src": "1564:8:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1549:23:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 953,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1549:23:6"
                                },
                                {
                                    "expression": {
                                        "id": 956,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 954,
                                            "name": "investorShare",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 921,
                                            "src": "1583:13:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 955,
                                            "name": "_investor",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 941,
                                            "src": "1599:9:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1583:25:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 957,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1583:25:6"
                                },
                                {
                                    "expression": {
                                        "id": 960,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 958,
                                            "name": "operatorShare",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 923,
                                            "src": "1619:13:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 959,
                                            "name": "_operator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 943,
                                            "src": "1635:9:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1619:25:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 961,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1619:25:6"
                                }
                            ]
                        },
                        "id": 963,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [],
                        "name": "",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 944,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 937,
                                    "mutability": "mutable",
                                    "name": "_business",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 963,
                                    "src": "1427:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 936,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1427:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 939,
                                    "mutability": "mutable",
                                    "name": "_royalty",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 963,
                                    "src": "1446:16:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 938,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1446:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 941,
                                    "mutability": "mutable",
                                    "name": "_investor",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 963,
                                    "src": "1464:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 940,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1464:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 943,
                                    "mutability": "mutable",
                                    "name": "_operator",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 963,
                                    "src": "1483:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 942,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1483:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1426:75:6"
                        },
                        "returnParameters": {
                            "id": 945,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1501:0:6"
                        },
                        "scope": 1863,
                        "src": "1415:237:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 980,
                            "nodeType": "Block",
                            "src": "1745:85:6",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "id": 974,
                                                "name": "businessShare",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 917,
                                                "src": "1764:13:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 975,
                                                "name": "founderShare",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 919,
                                                "src": "1779:12:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 976,
                                                "name": "investorShare",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 921,
                                                "src": "1793:13:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 977,
                                                "name": "operatorShare",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 923,
                                                "src": "1808:13:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "id": 978,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1763:59:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                            "typeString": "tuple(uint256,uint256,uint256,uint256)"
                                        }
                                    },
                                    "functionReturnParameters": 973,
                                    "id": 979,
                                    "nodeType": "Return",
                                    "src": "1756:66:6"
                                }
                            ]
                        },
                        "functionSelector": "7d8e9831",
                        "id": 981,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getRevenueShares",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 964,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1685:2:6"
                        },
                        "returnParameters": {
                            "id": 973,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 966,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 981,
                                    "src": "1710:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 965,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1710:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 968,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 981,
                                    "src": "1719:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 967,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1719:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 970,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 981,
                                    "src": "1728:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 969,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1728:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 972,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 981,
                                    "src": "1737:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 971,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1737:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1709:36:6"
                        },
                        "scope": 1863,
                        "src": "1660:170:6",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1018,
                            "nodeType": "Block",
                            "src": "1953:198:6",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 998,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 994,
                                            "name": "factory",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 888,
                                            "src": "1964:7:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                                "typeString": "contract ViaFactory"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "id": 996,
                                                    "name": "_viaFactory",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 983,
                                                    "src": "1985:11:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                ],
                                                "id": 995,
                                                "name": "ViaFactory",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2745,
                                                "src": "1974:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_ViaFactory_$2745_$",
                                                    "typeString": "type(contract ViaFactory)"
                                                }
                                            },
                                            "id": 997,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1974:23:6",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                                "typeString": "contract ViaFactory"
                                            }
                                        },
                                        "src": "1964:33:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                            "typeString": "contract ViaFactory"
                                        }
                                    },
                                    "id": 999,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1964:33:6"
                                },
                                {
                                    "expression": {
                                        "id": 1002,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 1000,
                                            "name": "founder",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 911,
                                            "src": "2008:7:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1001,
                                            "name": "_founder",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 985,
                                            "src": "2018:8:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2008:18:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1003,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2008:18:6"
                                },
                                {
                                    "expression": {
                                        "id": 1006,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 1004,
                                            "name": "treasury",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 913,
                                            "src": "2037:8:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1005,
                                            "name": "_treasury",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 987,
                                            "src": "2048:9:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2037:20:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1007,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2037:20:6"
                                },
                                {
                                    "expression": {
                                        "id": 1010,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 1008,
                                            "name": "liquidityContract",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 915,
                                            "src": "2068:17:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1009,
                                            "name": "_liquidity",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 989,
                                            "src": "2088:10:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2068:30:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1011,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2068:30:6"
                                },
                                {
                                    "expression": {
                                        "id": 1016,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 1012,
                                            "name": "liquidity",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 891,
                                            "src": "2109:9:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ILiquidity_$2155",
                                                "typeString": "contract ILiquidity"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "id": 1014,
                                                    "name": "_liquidity",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 989,
                                                    "src": "2132:10:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                ],
                                                "id": 1013,
                                                "name": "ILiquidity",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2155,
                                                "src": "2121:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_ILiquidity_$2155_$",
                                                    "typeString": "type(contract ILiquidity)"
                                                }
                                            },
                                            "id": 1015,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2121:22:6",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ILiquidity_$2155",
                                                "typeString": "contract ILiquidity"
                                            }
                                        },
                                        "src": "2109:34:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ILiquidity_$2155",
                                            "typeString": "contract ILiquidity"
                                        }
                                    },
                                    "id": 1017,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2109:34:6"
                                }
                            ]
                        },
                        "functionSelector": "f8c8765e",
                        "id": 1019,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 992,
                                "modifierName": {
                                    "id": 991,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "1943:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "1943:9:6"
                            }
                        ],
                        "name": "initialize",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 990,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 983,
                                    "mutability": "mutable",
                                    "name": "_viaFactory",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1019,
                                    "src": "1858:19:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 982,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1858:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 985,
                                    "mutability": "mutable",
                                    "name": "_founder",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1019,
                                    "src": "1879:16:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 984,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1879:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 987,
                                    "mutability": "mutable",
                                    "name": "_treasury",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1019,
                                    "src": "1897:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 986,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1897:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 989,
                                    "mutability": "mutable",
                                    "name": "_liquidity",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1019,
                                    "src": "1916:18:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 988,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1916:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1857:78:6"
                        },
                        "returnParameters": {
                            "id": 993,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1953:0:6"
                        },
                        "scope": 1863,
                        "src": "1838:313:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 1086,
                            "nodeType": "Block",
                            "src": "2357:505:6",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        },
                                        "id": 1032,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1030,
                                            "name": "_type",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1021,
                                            "src": "2371:5:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "427573696e657373",
                                            "id": 1031,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2378:10:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_da4fd9fa774c576c08e67dcb6bb94d647b4bc97f62502f1e2b62c2ba20f879cc",
                                                "typeString": "literal_string \"Business\""
                                            },
                                            "value": "Business"
                                        },
                                        "src": "2371:17:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "id": 1059,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 1057,
                                                "name": "_type",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1021,
                                                "src": "2621:5:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "hexValue": "4f70657261746f72",
                                                "id": 1058,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2628:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_71b43d66088715f0148d07b45a38f510fffe2d5fd108ee7701691e554738d61b",
                                                    "typeString": "literal_string \"Operator\""
                                                },
                                                "value": "Operator"
                                            },
                                            "src": "2621:17:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "id": 1084,
                                        "nodeType": "IfStatement",
                                        "src": "2618:233:6",
                                        "trueBody": {
                                            "id": 1083,
                                            "nodeType": "Block",
                                            "src": "2639:212:6",
                                            "statements": [
                                                {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1064,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "baseExpression": {
                                                                "id": 1060,
                                                                "name": "operatorIndex",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 909,
                                                                "src": "2657:13:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                    "typeString": "mapping(address => uint256)"
                                                                }
                                                            },
                                                            "id": 1062,
                                                            "indexExpression": {
                                                                "id": 1061,
                                                                "name": "_shareholder",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1023,
                                                                "src": "2671:12:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "2657:27:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 1063,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2688:1:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "2657:32:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "id": 1082,
                                                    "nodeType": "IfStatement",
                                                    "src": "2654:186:6",
                                                    "trueBody": {
                                                        "id": 1081,
                                                        "nodeType": "Block",
                                                        "src": "2690:150:6",
                                                        "statements": [
                                                            {
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 1069,
                                                                            "name": "_shareholder",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1023,
                                                                            "src": "2735:12:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1065,
                                                                                "name": "operators",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 905,
                                                                                "src": "2709:9:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                }
                                                                            },
                                                                            "id": 1067,
                                                                            "indexExpression": {
                                                                                "id": 1066,
                                                                                "name": "_currency",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1025,
                                                                                "src": "2719:9:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "2709:20:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                "typeString": "address[] storage ref"
                                                                            }
                                                                        },
                                                                        "id": 1068,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "push",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "2709:25:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                                                                            "typeString": "function (address)"
                                                                        }
                                                                    },
                                                                    "id": 1070,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "2709:39:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_tuple$__$",
                                                                        "typeString": "tuple()"
                                                                    }
                                                                },
                                                                "id": 1071,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "2709:39:6"
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 1079,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftHandSide": {
                                                                        "baseExpression": {
                                                                            "id": 1072,
                                                                            "name": "operatorIndex",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 909,
                                                                            "src": "2767:13:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                                "typeString": "mapping(address => uint256)"
                                                                            }
                                                                        },
                                                                        "id": 1074,
                                                                        "indexExpression": {
                                                                            "id": 1073,
                                                                            "name": "_shareholder",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1023,
                                                                            "src": "2781:12:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": true,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "2767:27:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "Assignment",
                                                                    "operator": "=",
                                                                    "rightHandSide": {
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1075,
                                                                                "name": "operators",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 905,
                                                                                "src": "2797:9:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                }
                                                                            },
                                                                            "id": 1077,
                                                                            "indexExpression": {
                                                                                "id": 1076,
                                                                                "name": "_currency",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1025,
                                                                                "src": "2807:9:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "2797:20:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                "typeString": "address[] storage ref"
                                                                            }
                                                                        },
                                                                        "id": 1078,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "length",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "2797:27:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "2767:57:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 1080,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "2767:57:6"
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    "id": 1085,
                                    "nodeType": "IfStatement",
                                    "src": "2368:483:6",
                                    "trueBody": {
                                        "id": 1056,
                                        "nodeType": "Block",
                                        "src": "2389:214:6",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1037,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "baseExpression": {
                                                            "id": 1033,
                                                            "name": "businessIndex",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 900,
                                                            "src": "2407:13:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 1035,
                                                        "indexExpression": {
                                                            "id": 1034,
                                                            "name": "_shareholder",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1023,
                                                            "src": "2421:12:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "2407:27:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1036,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "2438:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "2407:32:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1055,
                                                "nodeType": "IfStatement",
                                                "src": "2404:188:6",
                                                "trueBody": {
                                                    "id": 1054,
                                                    "nodeType": "Block",
                                                    "src": "2440:152:6",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 1042,
                                                                        "name": "_shareholder",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1023,
                                                                        "src": "2486:12:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "baseExpression": {
                                                                            "id": 1038,
                                                                            "name": "businesses",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 896,
                                                                            "src": "2459:10:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                "typeString": "mapping(address => address[] storage ref)"
                                                                            }
                                                                        },
                                                                        "id": 1040,
                                                                        "indexExpression": {
                                                                            "id": 1039,
                                                                            "name": "_currency",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1025,
                                                                            "src": "2470:9:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "2459:21:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                            "typeString": "address[] storage ref"
                                                                        }
                                                                    },
                                                                    "id": 1041,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "push",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "2459:26:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                                                                        "typeString": "function (address)"
                                                                    }
                                                                },
                                                                "id": 1043,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "2459:40:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 1044,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "2459:40:6"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 1052,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "id": 1045,
                                                                        "name": "businessIndex",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 900,
                                                                        "src": "2518:13:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                            "typeString": "mapping(address => uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1047,
                                                                    "indexExpression": {
                                                                        "id": 1046,
                                                                        "name": "_shareholder",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1023,
                                                                        "src": "2532:12:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "2518:27:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "expression": {
                                                                        "baseExpression": {
                                                                            "id": 1048,
                                                                            "name": "businesses",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 896,
                                                                            "src": "2548:10:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                "typeString": "mapping(address => address[] storage ref)"
                                                                            }
                                                                        },
                                                                        "id": 1050,
                                                                        "indexExpression": {
                                                                            "id": 1049,
                                                                            "name": "_currency",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1025,
                                                                            "src": "2559:9:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "2548:21:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                            "typeString": "address[] storage ref"
                                                                        }
                                                                    },
                                                                    "id": 1051,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "length",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "2548:28:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "2518:58:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1053,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "2518:58:6"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "functionSelector": "0ab36de2",
                        "id": 1087,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1028,
                                "modifierName": {
                                    "id": 1027,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "2347:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "2347:9:6"
                            }
                        ],
                        "name": "addRevenueShareholder",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1026,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1021,
                                    "mutability": "mutable",
                                    "name": "_type",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1087,
                                    "src": "2282:13:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 1020,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2282:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1023,
                                    "mutability": "mutable",
                                    "name": "_shareholder",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1087,
                                    "src": "2297:20:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1022,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2297:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1025,
                                    "mutability": "mutable",
                                    "name": "_currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1087,
                                    "src": "2319:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1024,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2319:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2281:56:6"
                        },
                        "returnParameters": {
                            "id": 1029,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2357:0:6"
                        },
                        "scope": 1863,
                        "src": "2251:611:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1115,
                            "nodeType": "Block",
                            "src": "3026:160:6",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        },
                                        "id": 1101,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1099,
                                            "name": "_type",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1089,
                                            "src": "3040:5:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "427573696e657373",
                                            "id": 1100,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3047:10:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_da4fd9fa774c576c08e67dcb6bb94d647b4bc97f62502f1e2b62c2ba20f879cc",
                                                "typeString": "literal_string \"Business\""
                                            },
                                            "value": "Business"
                                        },
                                        "src": "3040:17:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "id": 1108,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 1106,
                                                "name": "_type",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1089,
                                                "src": "3119:5:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "hexValue": "4f70657261746f72",
                                                "id": 1107,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3126:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_71b43d66088715f0148d07b45a38f510fffe2d5fd108ee7701691e554738d61b",
                                                    "typeString": "literal_string \"Operator\""
                                                },
                                                "value": "Operator"
                                            },
                                            "src": "3119:17:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "id": 1113,
                                        "nodeType": "IfStatement",
                                        "src": "3116:62:6",
                                        "trueBody": {
                                            "expression": {
                                                "baseExpression": {
                                                    "id": 1109,
                                                    "name": "operators",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 905,
                                                    "src": "3158:9:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                        "typeString": "mapping(address => address[] storage ref)"
                                                    }
                                                },
                                                "id": 1111,
                                                "indexExpression": {
                                                    "id": 1110,
                                                    "name": "_currency",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1091,
                                                    "src": "3168:9:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "3158:20:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                    "typeString": "address[] storage ref"
                                                }
                                            },
                                            "functionReturnParameters": 1098,
                                            "id": 1112,
                                            "nodeType": "Return",
                                            "src": "3151:27:6"
                                        }
                                    },
                                    "id": 1114,
                                    "nodeType": "IfStatement",
                                    "src": "3037:141:6",
                                    "trueBody": {
                                        "expression": {
                                            "baseExpression": {
                                                "id": 1102,
                                                "name": "businesses",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 896,
                                                "src": "3079:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                    "typeString": "mapping(address => address[] storage ref)"
                                                }
                                            },
                                            "id": 1104,
                                            "indexExpression": {
                                                "id": 1103,
                                                "name": "_currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1091,
                                                "src": "3090:9:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3079:21:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                "typeString": "address[] storage ref"
                                            }
                                        },
                                        "functionReturnParameters": 1098,
                                        "id": 1105,
                                        "nodeType": "Return",
                                        "src": "3072:28:6"
                                    }
                                }
                            ]
                        },
                        "functionSelector": "e081d92f",
                        "id": 1116,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1094,
                                "modifierName": {
                                    "id": 1093,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "2978:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "2978:9:6"
                            }
                        ],
                        "name": "getRevenueShareholders",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1092,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1089,
                                    "mutability": "mutable",
                                    "name": "_type",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1116,
                                    "src": "2930:13:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 1088,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2930:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1091,
                                    "mutability": "mutable",
                                    "name": "_currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1116,
                                    "src": "2945:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1090,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2945:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2929:34:6"
                        },
                        "returnParameters": {
                            "id": 1098,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1097,
                                    "mutability": "mutable",
                                    "name": "shareholders",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1116,
                                    "src": "2996:29:6",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 1095,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2996:7:6",
                                            "stateMutability": "nonpayable",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "id": 1096,
                                        "nodeType": "ArrayTypeName",
                                        "src": "2996:9:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                            "typeString": "address[]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2995:31:6"
                        },
                        "scope": 1863,
                        "src": "2898:288:6",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1153,
                            "nodeType": "Block",
                            "src": "3313:218:6",
                            "statements": [
                                {
                                    "assignments": [
                                        1126
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1126,
                                            "mutability": "mutable",
                                            "name": "cashToken",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1153,
                                            "src": "3324:17:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 1125,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3324:7:6",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1132,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "hexValue": "56696143617368",
                                                "id": 1129,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3362:9:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_3c30a0e8e1c782e31ccb8fae07c6066a8040aa799f508e8cb657fa62c08db465",
                                                    "typeString": "literal_string \"ViaCash\""
                                                },
                                                "value": "ViaCash"
                                            },
                                            {
                                                "id": 1130,
                                                "name": "_currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1118,
                                                "src": "3373:9:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_3c30a0e8e1c782e31ccb8fae07c6066a8040aa799f508e8cb657fa62c08db465",
                                                    "typeString": "literal_string \"ViaCash\""
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1127,
                                                "name": "factory",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 888,
                                                "src": "3344:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                                    "typeString": "contract ViaFactory"
                                                }
                                            },
                                            "id": 1128,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getIssuer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2666,
                                            "src": "3344:17:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                                "typeString": "function (bytes32,bytes32) view external returns (address)"
                                            }
                                        },
                                        "id": 1131,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3344:39:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3324:59:6"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 1138,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1133,
                                            "name": "cashToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1126,
                                            "src": "3397:9:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "hexValue": "307830",
                                                    "id": 1136,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3416:3:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0x0"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    }
                                                ],
                                                "id": 1135,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "3408:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 1134,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3408:7:6",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 1137,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3408:12:6",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "3397:23:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "expression": {
                                            "hexValue": "30",
                                            "id": 1150,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3522:1:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "functionReturnParameters": 1124,
                                        "id": 1151,
                                        "nodeType": "Return",
                                        "src": "3515:8:6"
                                    },
                                    "id": 1152,
                                    "nodeType": "IfStatement",
                                    "src": "3394:129:6",
                                    "trueBody": {
                                        "expression": {
                                            "components": [
                                                {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1145,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967268,
                                                                    "src": "3479:4:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                        "typeString": "contract Distribution"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                        "typeString": "contract Distribution"
                                                                    }
                                                                ],
                                                                "id": 1144,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "3471:7:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1143,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "3471:7:6",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1146,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3471:13:6",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 1140,
                                                                    "name": "cashToken",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1126,
                                                                    "src": "3450:9:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 1139,
                                                                "name": "IERC20",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 819,
                                                                "src": "3443:6:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                    "typeString": "type(contract IERC20)"
                                                                }
                                                            },
                                                            "id": 1141,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3443:17:6",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$819",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "id": 1142,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "balanceOf",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 758,
                                                        "src": "3443:27:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                            "typeString": "function (address) view external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 1147,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3443:42:6",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 1148,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "3442:44:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "functionReturnParameters": 1124,
                                        "id": 1149,
                                        "nodeType": "Return",
                                        "src": "3435:51:6"
                                    }
                                }
                            ]
                        },
                        "functionSelector": "4fb0b304",
                        "id": 1154,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1121,
                                "modifierName": {
                                    "id": 1120,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "3287:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "3287:9:6"
                            }
                        ],
                        "name": "getPaymentFeeCollected",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1119,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1118,
                                    "mutability": "mutable",
                                    "name": "_currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1154,
                                    "src": "3254:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 1117,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3254:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3253:19:6"
                        },
                        "returnParameters": {
                            "id": 1124,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1123,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1154,
                                    "src": "3305:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1122,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3305:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3304:9:6"
                        },
                        "scope": 1863,
                        "src": "3222:309:6",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1191,
                            "nodeType": "Block",
                            "src": "3665:218:6",
                            "statements": [
                                {
                                    "assignments": [
                                        1164
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1164,
                                            "mutability": "mutable",
                                            "name": "bondToken",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1191,
                                            "src": "3676:17:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 1163,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3676:7:6",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1170,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "hexValue": "566961426f6e64",
                                                "id": 1167,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3714:9:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_52973aa3d1d0b9b2038bddf6fa0399136f1ab1c5f89b7edd623ff24875d0ed1f",
                                                    "typeString": "literal_string \"ViaBond\""
                                                },
                                                "value": "ViaBond"
                                            },
                                            {
                                                "id": 1168,
                                                "name": "_currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1156,
                                                "src": "3725:9:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_52973aa3d1d0b9b2038bddf6fa0399136f1ab1c5f89b7edd623ff24875d0ed1f",
                                                    "typeString": "literal_string \"ViaBond\""
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1165,
                                                "name": "factory",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 888,
                                                "src": "3696:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                                    "typeString": "contract ViaFactory"
                                                }
                                            },
                                            "id": 1166,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getIssuer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2666,
                                            "src": "3696:17:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                                "typeString": "function (bytes32,bytes32) view external returns (address)"
                                            }
                                        },
                                        "id": 1169,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3696:39:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3676:59:6"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 1176,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1171,
                                            "name": "bondToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1164,
                                            "src": "3749:9:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "hexValue": "307830",
                                                    "id": 1174,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3768:3:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0x0"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    }
                                                ],
                                                "id": 1173,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "3760:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 1172,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3760:7:6",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 1175,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3760:12:6",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "3749:23:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "expression": {
                                            "hexValue": "30",
                                            "id": 1188,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3874:1:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "functionReturnParameters": 1162,
                                        "id": 1189,
                                        "nodeType": "Return",
                                        "src": "3867:8:6"
                                    },
                                    "id": 1190,
                                    "nodeType": "IfStatement",
                                    "src": "3746:129:6",
                                    "trueBody": {
                                        "expression": {
                                            "components": [
                                                {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1183,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967268,
                                                                    "src": "3831:4:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                        "typeString": "contract Distribution"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                        "typeString": "contract Distribution"
                                                                    }
                                                                ],
                                                                "id": 1182,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "3823:7:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1181,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "3823:7:6",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1184,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3823:13:6",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 1178,
                                                                    "name": "bondToken",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1164,
                                                                    "src": "3802:9:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 1177,
                                                                "name": "IERC20",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 819,
                                                                "src": "3795:6:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                    "typeString": "type(contract IERC20)"
                                                                }
                                                            },
                                                            "id": 1179,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3795:17:6",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$819",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "id": 1180,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "balanceOf",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 758,
                                                        "src": "3795:27:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                            "typeString": "function (address) view external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 1185,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3795:42:6",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 1186,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "3794:44:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "functionReturnParameters": 1162,
                                        "id": 1187,
                                        "nodeType": "Return",
                                        "src": "3787:51:6"
                                    }
                                }
                            ]
                        },
                        "functionSelector": "3d66d8a8",
                        "id": 1192,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1159,
                                "modifierName": {
                                    "id": 1158,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "3639:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "3639:9:6"
                            }
                        ],
                        "name": "getLoanFeeCollected",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1157,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1156,
                                    "mutability": "mutable",
                                    "name": "_currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1192,
                                    "src": "3606:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 1155,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3606:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3605:19:6"
                        },
                        "returnParameters": {
                            "id": 1162,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1161,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1192,
                                    "src": "3657:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1160,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3657:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3656:9:6"
                        },
                        "scope": 1863,
                        "src": "3577:306:6",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1211,
                            "nodeType": "Block",
                            "src": "4030:82:6",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 1207,
                                                        "name": "_token",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1196,
                                                        "src": "4096:6:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 1204,
                                                                "name": "_platform",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1194,
                                                                "src": "4062:9:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1203,
                                                            "name": "IMarketMaker",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2410,
                                                            "src": "4049:12:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IMarketMaker_$2410_$",
                                                                "typeString": "type(contract IMarketMaker)"
                                                            }
                                                        },
                                                        "id": 1205,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4049:23:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IMarketMaker_$2410",
                                                            "typeString": "contract IMarketMaker"
                                                        }
                                                    },
                                                    "id": 1206,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "getIssuingFeeCollected",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2409,
                                                    "src": "4049:46:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                                                        "typeString": "function (address) external returns (uint256)"
                                                    }
                                                },
                                                "id": 1208,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4049:54:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "id": 1209,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "4048:56:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 1202,
                                    "id": 1210,
                                    "nodeType": "Return",
                                    "src": "4041:63:6"
                                }
                            ]
                        },
                        "functionSelector": "50ed5a0b",
                        "id": 1212,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1199,
                                "modifierName": {
                                    "id": 1198,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "4004:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4004:9:6"
                            }
                        ],
                        "name": "getIssuingFeeCollected",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1197,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1194,
                                    "mutability": "mutable",
                                    "name": "_platform",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1212,
                                    "src": "3960:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1193,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3960:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1196,
                                    "mutability": "mutable",
                                    "name": "_token",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1212,
                                    "src": "3979:14:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1195,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3979:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3959:35:6"
                        },
                        "returnParameters": {
                            "id": 1202,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1201,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1212,
                                    "src": "4022:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1200,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4022:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4021:9:6"
                        },
                        "scope": 1863,
                        "src": "3928:184:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1231,
                            "nodeType": "Block",
                            "src": "4260:78:6",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 1227,
                                                        "name": "_token",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1216,
                                                        "src": "4322:6:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 1224,
                                                                "name": "_platform",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1214,
                                                                "src": "4288:9:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1223,
                                                            "name": "ISettlor",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2583,
                                                            "src": "4279:8:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_ISettlor_$2583_$",
                                                                "typeString": "type(contract ISettlor)"
                                                            }
                                                        },
                                                        "id": 1225,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4279:19:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_ISettlor_$2583",
                                                            "typeString": "contract ISettlor"
                                                        }
                                                    },
                                                    "id": 1226,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "getTradingFeeCollected",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2582,
                                                    "src": "4279:42:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                                                        "typeString": "function (address) external returns (uint256)"
                                                    }
                                                },
                                                "id": 1228,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4279:50:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "id": 1229,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "4278:52:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 1222,
                                    "id": 1230,
                                    "nodeType": "Return",
                                    "src": "4271:59:6"
                                }
                            ]
                        },
                        "functionSelector": "7507f8d0",
                        "id": 1232,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1219,
                                "modifierName": {
                                    "id": 1218,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "4234:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4234:9:6"
                            }
                        ],
                        "name": "getTradingFeeCollected",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1217,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1214,
                                    "mutability": "mutable",
                                    "name": "_platform",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1232,
                                    "src": "4190:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1213,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4190:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1216,
                                    "mutability": "mutable",
                                    "name": "_token",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1232,
                                    "src": "4209:14:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1215,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4209:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4189:35:6"
                        },
                        "returnParameters": {
                            "id": 1222,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1221,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1232,
                                    "src": "4252:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1220,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4252:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4251:9:6"
                        },
                        "scope": 1863,
                        "src": "4158:180:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1303,
                            "nodeType": "Block",
                            "src": "4446:452:6",
                            "statements": [
                                {
                                    "assignments": [
                                        1242
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1242,
                                            "mutability": "mutable",
                                            "name": "tokens",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1303,
                                            "src": "4457:32:6",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct ILiquidity.token[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 1240,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 1239,
                                                        "name": "ILiquidity.token",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1979,
                                                        "src": "4457:16:6"
                                                    },
                                                    "referencedDeclaration": 1979,
                                                    "src": "4457:16:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_token_$1979_storage_ptr",
                                                        "typeString": "struct ILiquidity.token"
                                                    }
                                                },
                                                "id": 1241,
                                                "nodeType": "ArrayTypeName",
                                                "src": "4457:18:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_token_$1979_storage_$dyn_storage_ptr",
                                                    "typeString": "struct ILiquidity.token[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1246,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "id": 1243,
                                                "name": "liquidity",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 891,
                                                "src": "4492:9:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ILiquidity_$2155",
                                                    "typeString": "contract ILiquidity"
                                                }
                                            },
                                            "id": 1244,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getSupportedTokens",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2019,
                                            "src": "4492:28:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr_$",
                                                "typeString": "function () view external returns (struct ILiquidity.token memory[] memory)"
                                            }
                                        },
                                        "id": 1245,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4492:30:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct ILiquidity.token memory[] memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4457:65:6"
                                },
                                {
                                    "body": {
                                        "id": 1301,
                                        "nodeType": "Block",
                                        "src": "4579:312:6",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1259
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1259,
                                                        "mutability": "mutable",
                                                        "name": "fee",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1301,
                                                        "src": "4594:11:6",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1258,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4594:7:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1260,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4594:11:6"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "id": 1269,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 1261,
                                                                "name": "tokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1242,
                                                                "src": "4623:6:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr",
                                                                    "typeString": "struct ILiquidity.token memory[] memory"
                                                                }
                                                            },
                                                            "id": 1263,
                                                            "indexExpression": {
                                                                "id": 1262,
                                                                "name": "i",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1248,
                                                                "src": "4630:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "4623:9:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_token_$1979_memory_ptr",
                                                                "typeString": "struct ILiquidity.token memory"
                                                            }
                                                        },
                                                        "id": 1264,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "tokenAddress",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1978,
                                                        "src": "4623:22:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "307830",
                                                                "id": 1267,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "4657:3:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0x0"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                }
                                                            ],
                                                            "id": 1266,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "4649:7:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 1265,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "4649:7:6",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 1268,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4649:12:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "4623:38:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1300,
                                                "nodeType": "IfStatement",
                                                "src": "4620:260:6",
                                                "trueBody": {
                                                    "id": 1299,
                                                    "nodeType": "Block",
                                                    "src": "4662:218:6",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 1283,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 1270,
                                                                    "name": "fee",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1259,
                                                                    "src": "4681:3:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1280,
                                                                                    "name": "this",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 4294967268,
                                                                                    "src": "4736:4:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                                        "typeString": "contract Distribution"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                                        "typeString": "contract Distribution"
                                                                                    }
                                                                                ],
                                                                                "id": 1279,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                "src": "4728:7:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                                    "typeString": "type(address)"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 1278,
                                                                                    "name": "address",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "4728:7:6",
                                                                                    "typeDescriptions": {}
                                                                                }
                                                                            },
                                                                            "id": 1281,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "4728:13:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "expression": {
                                                                                        "baseExpression": {
                                                                                            "id": 1272,
                                                                                            "name": "tokens",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1242,
                                                                                            "src": "4694:6:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr",
                                                                                                "typeString": "struct ILiquidity.token memory[] memory"
                                                                                            }
                                                                                        },
                                                                                        "id": 1274,
                                                                                        "indexExpression": {
                                                                                            "id": 1273,
                                                                                            "name": "i",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1248,
                                                                                            "src": "4701:1:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "4694:9:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_struct$_token_$1979_memory_ptr",
                                                                                            "typeString": "struct ILiquidity.token memory"
                                                                                        }
                                                                                    },
                                                                                    "id": 1275,
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "tokenAddress",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 1978,
                                                                                    "src": "4694:22:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                ],
                                                                                "id": 1271,
                                                                                "name": "IERC20",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 819,
                                                                                "src": "4687:6:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                    "typeString": "type(contract IERC20)"
                                                                                }
                                                                            },
                                                                            "id": 1276,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "4687:30:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$819",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 1277,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "balanceOf",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 758,
                                                                        "src": "4687:40:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                                            "typeString": "function (address) view external returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1282,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "4687:55:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "4681:61:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1284,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4681:61:6"
                                                        },
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1287,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 1285,
                                                                    "name": "fee",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1259,
                                                                    "src": "4764:3:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "!=",
                                                                "rightExpression": {
                                                                    "hexValue": "30",
                                                                    "id": 1286,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "4769:1:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                },
                                                                "src": "4764:6:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 1298,
                                                            "nodeType": "IfStatement",
                                                            "src": "4761:104:6",
                                                            "trueBody": {
                                                                "id": 1297,
                                                                "nodeType": "Block",
                                                                "src": "4771:94:6",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1289,
                                                                                    "name": "fee",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1259,
                                                                                    "src": "4803:3:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "expression": {
                                                                                        "baseExpression": {
                                                                                            "id": 1290,
                                                                                            "name": "tokens",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1242,
                                                                                            "src": "4808:6:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr",
                                                                                                "typeString": "struct ILiquidity.token memory[] memory"
                                                                                            }
                                                                                        },
                                                                                        "id": 1292,
                                                                                        "indexExpression": {
                                                                                            "id": 1291,
                                                                                            "name": "i",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1248,
                                                                                            "src": "4815:1:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "4808:9:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_struct$_token_$1979_memory_ptr",
                                                                                            "typeString": "struct ILiquidity.token memory"
                                                                                        }
                                                                                    },
                                                                                    "id": 1293,
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "tokenAddress",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 1978,
                                                                                    "src": "4808:22:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "hexValue": "636f6c6c656374696f6e",
                                                                                    "id": 1294,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "string",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "4832:12:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_stringliteral_a77d3cda10319ef1453ed69bfa8aef4c4c554a589d68a43d2e3eb63639bb3d85",
                                                                                        "typeString": "literal_string \"collection\""
                                                                                    },
                                                                                    "value": "collection"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_stringliteral_a77d3cda10319ef1453ed69bfa8aef4c4c554a589d68a43d2e3eb63639bb3d85",
                                                                                        "typeString": "literal_string \"collection\""
                                                                                    }
                                                                                ],
                                                                                "id": 1288,
                                                                                "name": "transfer",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1792,
                                                                                "src": "4794:8:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$__$",
                                                                                    "typeString": "function (uint256,address,bytes32)"
                                                                                }
                                                                            },
                                                                            "id": 1295,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "4794:51:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 1296,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "4794:51:6"
                                                                    }
                                                                ]
                                                            }
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 1254,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1251,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1248,
                                            "src": "4558:1:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 1252,
                                                "name": "tokens",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1242,
                                                "src": "4560:6:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct ILiquidity.token memory[] memory"
                                                }
                                            },
                                            "id": 1253,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "4560:13:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "4558:15:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1302,
                                    "initializationExpression": {
                                        "assignments": [
                                            1248
                                        ],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 1248,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1302,
                                                "src": "4545:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1247,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4545:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 1250,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 1249,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4555:1:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "4545:11:6"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 1256,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "4575:3:6",
                                            "subExpression": {
                                                "id": 1255,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1248,
                                                "src": "4575:1:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 1257,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4575:3:6"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "4541:350:6"
                                }
                            ]
                        },
                        "functionSelector": "ff43df4e",
                        "id": 1304,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1235,
                                "modifierName": {
                                    "id": 1234,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "4436:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4436:9:6"
                            }
                        ],
                        "name": "shareCollection",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1233,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4424:2:6"
                        },
                        "returnParameters": {
                            "id": 1236,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4446:0:6"
                        },
                        "scope": 1863,
                        "src": "4400:498:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1397,
                            "nodeType": "Block",
                            "src": "4990:702:6",
                            "statements": [
                                {
                                    "assignments": [
                                        1310
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1310,
                                            "mutability": "mutable",
                                            "name": "tokenCount",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1397,
                                            "src": "5001:18:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1309,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5001:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1314,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "id": 1311,
                                                "name": "factory",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 888,
                                                "src": "5022:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                                    "typeString": "contract ViaFactory"
                                                }
                                            },
                                            "id": 1312,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getTokenCount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2627,
                                            "src": "5022:21:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                "typeString": "function () view external returns (uint256)"
                                            }
                                        },
                                        "id": 1313,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5022:23:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5001:44:6"
                                },
                                {
                                    "body": {
                                        "id": 1395,
                                        "nodeType": "Block",
                                        "src": "5088:597:6",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1326
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1326,
                                                        "mutability": "mutable",
                                                        "name": "token",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1395,
                                                        "src": "5103:13:6",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 1325,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5103:7:6",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1331,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1329,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1316,
                                                            "src": "5136:1:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1327,
                                                            "name": "factory",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 888,
                                                            "src": "5119:7:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                                                "typeString": "contract ViaFactory"
                                                            }
                                                        },
                                                        "id": 1328,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "getToken",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2634,
                                                        "src": "5119:16:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                                                            "typeString": "function (uint256) view external returns (address)"
                                                        }
                                                    },
                                                    "id": 1330,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5119:19:6",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5103:35:6"
                                            },
                                            {
                                                "assignments": [
                                                    null,
                                                    1333
                                                ],
                                                "declarations": [
                                                    null,
                                                    {
                                                        "constant": false,
                                                        "id": 1333,
                                                        "mutability": "mutable",
                                                        "name": "tokenType",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1395,
                                                        "src": "5157:17:6",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 1332,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5157:7:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1338,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1336,
                                                            "name": "token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1326,
                                                            "src": "5201:5:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1334,
                                                            "name": "factory",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 888,
                                                            "src": "5178:7:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                                                "typeString": "contract ViaFactory"
                                                            }
                                                        },
                                                        "id": 1335,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "getNameAndType",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2657,
                                                        "src": "5178:22:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bytes32_$_t_bytes32_$",
                                                            "typeString": "function (address) view external returns (bytes32,bytes32)"
                                                        }
                                                    },
                                                    "id": 1337,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5178:29:6",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                                                        "typeString": "tuple(bytes32,bytes32)"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5153:54:6"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    },
                                                    "id": 1341,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1339,
                                                        "name": "tokenType",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1333,
                                                        "src": "5238:9:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "hexValue": "56696143617368",
                                                        "id": 1340,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "string",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "5249:9:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_stringliteral_3c30a0e8e1c782e31ccb8fae07c6066a8040aa799f508e8cb657fa62c08db465",
                                                            "typeString": "literal_string \"ViaCash\""
                                                        },
                                                        "value": "ViaCash"
                                                    },
                                                    "src": "5238:20:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "id": 1368,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1366,
                                                            "name": "tokenType",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1333,
                                                            "src": "5467:9:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "hexValue": "566961426f6e64",
                                                            "id": 1367,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5478:9:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_52973aa3d1d0b9b2038bddf6fa0399136f1ab1c5f89b7edd623ff24875d0ed1f",
                                                                "typeString": "literal_string \"ViaBond\""
                                                            },
                                                            "value": "ViaBond"
                                                        },
                                                        "src": "5467:20:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "id": 1393,
                                                    "nodeType": "IfStatement",
                                                    "src": "5464:210:6",
                                                    "trueBody": {
                                                        "id": 1392,
                                                        "nodeType": "Block",
                                                        "src": "5488:186:6",
                                                        "statements": [
                                                            {
                                                                "assignments": [
                                                                    1370
                                                                ],
                                                                "declarations": [
                                                                    {
                                                                        "constant": false,
                                                                        "id": 1370,
                                                                        "mutability": "mutable",
                                                                        "name": "fee",
                                                                        "nodeType": "VariableDeclaration",
                                                                        "scope": 1392,
                                                                        "src": "5507:11:6",
                                                                        "stateVariable": false,
                                                                        "storageLocation": "default",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 1369,
                                                                            "name": "uint256",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "5507:7:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "visibility": "internal"
                                                                    }
                                                                ],
                                                                "id": 1380,
                                                                "initialValue": {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1377,
                                                                                    "name": "this",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 4294967268,
                                                                                    "src": "5553:4:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                                        "typeString": "contract Distribution"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                                        "typeString": "contract Distribution"
                                                                                    }
                                                                                ],
                                                                                "id": 1376,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                "src": "5545:7:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                                    "typeString": "type(address)"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 1375,
                                                                                    "name": "address",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "5545:7:6",
                                                                                    "typeDescriptions": {}
                                                                                }
                                                                            },
                                                                            "id": 1378,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "5545:13:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1372,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1326,
                                                                                    "src": "5528:5:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                ],
                                                                                "id": 1371,
                                                                                "name": "IERC20",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 819,
                                                                                "src": "5521:6:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                    "typeString": "type(contract IERC20)"
                                                                                }
                                                                            },
                                                                            "id": 1373,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "5521:13:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$819",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 1374,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "balanceOf",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 758,
                                                                        "src": "5521:23:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                                            "typeString": "function (address) view external returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1379,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "5521:38:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "VariableDeclarationStatement",
                                                                "src": "5507:52:6"
                                                            },
                                                            {
                                                                "condition": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1383,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1381,
                                                                        "name": "fee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1370,
                                                                        "src": "5581:3:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "!=",
                                                                    "rightExpression": {
                                                                        "hexValue": "30",
                                                                        "id": 1382,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "5586:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    },
                                                                    "src": "5581:6:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "id": 1391,
                                                                "nodeType": "IfStatement",
                                                                "src": "5578:81:6",
                                                                "trueBody": {
                                                                    "id": 1390,
                                                                    "nodeType": "Block",
                                                                    "src": "5588:71:6",
                                                                    "statements": [
                                                                        {
                                                                            "expression": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "id": 1385,
                                                                                        "name": "fee",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1370,
                                                                                        "src": "5620:3:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 1386,
                                                                                        "name": "token",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1326,
                                                                                        "src": "5625:5:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "hexValue": "66656573",
                                                                                        "id": 1387,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "string",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "5632:6:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_stringliteral_5a3cb893d297939fd527ec3d496cfd17f9907b89b1ea2a8c10ebfda20c4119de",
                                                                                            "typeString": "literal_string \"fees\""
                                                                                        },
                                                                                        "value": "fees"
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_stringliteral_5a3cb893d297939fd527ec3d496cfd17f9907b89b1ea2a8c10ebfda20c4119de",
                                                                                            "typeString": "literal_string \"fees\""
                                                                                        }
                                                                                    ],
                                                                                    "id": 1384,
                                                                                    "name": "transfer",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1792,
                                                                                    "src": "5611:8:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$__$",
                                                                                        "typeString": "function (uint256,address,bytes32)"
                                                                                    }
                                                                                },
                                                                                "id": 1388,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "5611:28:6",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_tuple$__$",
                                                                                    "typeString": "tuple()"
                                                                                }
                                                                            },
                                                                            "id": 1389,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "5611:28:6"
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                "id": 1394,
                                                "nodeType": "IfStatement",
                                                "src": "5235:439:6",
                                                "trueBody": {
                                                    "id": 1365,
                                                    "nodeType": "Block",
                                                    "src": "5259:186:6",
                                                    "statements": [
                                                        {
                                                            "assignments": [
                                                                1343
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 1343,
                                                                    "mutability": "mutable",
                                                                    "name": "fee",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 1365,
                                                                    "src": "5278:11:6",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1342,
                                                                        "name": "uint256",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "5278:7:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 1353,
                                                            "initialValue": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1350,
                                                                                "name": "this",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4294967268,
                                                                                "src": "5324:4:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                                    "typeString": "contract Distribution"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                                    "typeString": "contract Distribution"
                                                                                }
                                                                            ],
                                                                            "id": 1349,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                            "src": "5316:7:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                                "typeString": "type(address)"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 1348,
                                                                                "name": "address",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "5316:7:6",
                                                                                "typeDescriptions": {}
                                                                            }
                                                                        },
                                                                        "id": 1351,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "5316:13:6",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1345,
                                                                                "name": "token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1326,
                                                                                "src": "5299:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 1344,
                                                                            "name": "IERC20",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 819,
                                                                            "src": "5292:6:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                "typeString": "type(contract IERC20)"
                                                                            }
                                                                        },
                                                                        "id": 1346,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "5292:13:6",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                                            "typeString": "contract IERC20"
                                                                        }
                                                                    },
                                                                    "id": 1347,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "balanceOf",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 758,
                                                                    "src": "5292:23:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                                        "typeString": "function (address) view external returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 1352,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "5292:38:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "5278:52:6"
                                                        },
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1356,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 1354,
                                                                    "name": "fee",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1343,
                                                                    "src": "5352:3:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "!=",
                                                                "rightExpression": {
                                                                    "hexValue": "30",
                                                                    "id": 1355,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "5357:1:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                },
                                                                "src": "5352:6:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 1364,
                                                            "nodeType": "IfStatement",
                                                            "src": "5349:81:6",
                                                            "trueBody": {
                                                                "id": 1363,
                                                                "nodeType": "Block",
                                                                "src": "5359:71:6",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1358,
                                                                                    "name": "fee",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1343,
                                                                                    "src": "5391:3:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 1359,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1326,
                                                                                    "src": "5396:5:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "hexValue": "66656573",
                                                                                    "id": 1360,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "string",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "5403:6:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_stringliteral_5a3cb893d297939fd527ec3d496cfd17f9907b89b1ea2a8c10ebfda20c4119de",
                                                                                        "typeString": "literal_string \"fees\""
                                                                                    },
                                                                                    "value": "fees"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_stringliteral_5a3cb893d297939fd527ec3d496cfd17f9907b89b1ea2a8c10ebfda20c4119de",
                                                                                        "typeString": "literal_string \"fees\""
                                                                                    }
                                                                                ],
                                                                                "id": 1357,
                                                                                "name": "transfer",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1792,
                                                                                "src": "5382:8:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$__$",
                                                                                    "typeString": "function (uint256,address,bytes32)"
                                                                                }
                                                                            },
                                                                            "id": 1361,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "5382:28:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 1362,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "5382:28:6"
                                                                    }
                                                                ]
                                                            }
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 1321,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1319,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1316,
                                            "src": "5070:1:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "id": 1320,
                                            "name": "tokenCount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1310,
                                            "src": "5072:10:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "5070:12:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1396,
                                    "initializationExpression": {
                                        "assignments": [
                                            1316
                                        ],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 1316,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1396,
                                                "src": "5060:6:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1315,
                                                    "name": "uint",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5060:4:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 1318,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 1317,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5067:1:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "5060:8:6"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 1323,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "5084:3:6",
                                            "subExpression": {
                                                "id": 1322,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1316,
                                                "src": "5084:1:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 1324,
                                        "nodeType": "ExpressionStatement",
                                        "src": "5084:3:6"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "5056:629:6"
                                }
                            ]
                        },
                        "functionSelector": "b069bbbb",
                        "id": 1398,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1307,
                                "modifierName": {
                                    "id": 1306,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "4980:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4980:9:6"
                            }
                        ],
                        "name": "shareFee",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1305,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4968:2:6"
                        },
                        "returnParameters": {
                            "id": 1308,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4990:0:6"
                        },
                        "scope": 1863,
                        "src": "4951:741:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1791,
                            "nodeType": "Block",
                            "src": "5810:4140:6",
                            "statements": [
                                {
                                    "assignments": [
                                        1408
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1408,
                                            "mutability": "mutable",
                                            "name": "fees",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1791,
                                            "src": "5821:12:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1407,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5821:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1417,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 1410,
                                                "name": "fee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1400,
                                                "src": "5845:3:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 1413,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1402,
                                                                "src": "5879:5:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1412,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 819,
                                                            "src": "5872:6:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 1414,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "5872:13:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    ],
                                                    "id": 1411,
                                                    "name": "_computeScalingFactor",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1828,
                                                    "src": "5850:21:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$819_$returns$_t_uint256_$",
                                                        "typeString": "function (contract IERC20) view returns (uint256)"
                                                    }
                                                },
                                                "id": 1415,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5850:36:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 1409,
                                            "name": "_upscale",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1862,
                                            "src": "5836:8:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1416,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5836:51:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5821:66:6"
                                },
                                {
                                    "assignments": [
                                        1419
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1419,
                                            "mutability": "mutable",
                                            "name": "businessFee",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1791,
                                            "src": "5898:19:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1418,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5898:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1433,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 1424,
                                                        "name": "fees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1408,
                                                        "src": "5958:4:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "id": 1425,
                                                        "name": "businessShare",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 917,
                                                        "src": "5964:13:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 1422,
                                                        "name": "FixedPoint",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3723,
                                                        "src": "5939:10:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                            "typeString": "type(library FixedPoint)"
                                                        }
                                                    },
                                                    "id": 1423,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mulDown",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 3410,
                                                    "src": "5939:18:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 1426,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5939:39:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 1429,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1402,
                                                                "src": "6009:5:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1428,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 819,
                                                            "src": "6002:6:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 1430,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6002:13:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    ],
                                                    "id": 1427,
                                                    "name": "_computeScalingFactor",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1828,
                                                    "src": "5980:21:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$819_$returns$_t_uint256_$",
                                                        "typeString": "function (contract IERC20) view returns (uint256)"
                                                    }
                                                },
                                                "id": 1431,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5980:36:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1420,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3723,
                                                "src": "5920:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 1421,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "divDown",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3504,
                                            "src": "5920:18:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1432,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5920:97:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5898:119:6"
                                },
                                {
                                    "assignments": [
                                        1435
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1435,
                                            "mutability": "mutable",
                                            "name": "operatorFee",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1791,
                                            "src": "6028:19:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1434,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6028:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1449,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 1440,
                                                        "name": "fees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1408,
                                                        "src": "6088:4:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "id": 1441,
                                                        "name": "operatorShare",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 923,
                                                        "src": "6094:13:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 1438,
                                                        "name": "FixedPoint",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3723,
                                                        "src": "6069:10:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                            "typeString": "type(library FixedPoint)"
                                                        }
                                                    },
                                                    "id": 1439,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mulDown",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 3410,
                                                    "src": "6069:18:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 1442,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6069:39:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 1445,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1402,
                                                                "src": "6139:5:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1444,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 819,
                                                            "src": "6132:6:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 1446,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6132:13:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    ],
                                                    "id": 1443,
                                                    "name": "_computeScalingFactor",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1828,
                                                    "src": "6110:21:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$819_$returns$_t_uint256_$",
                                                        "typeString": "function (contract IERC20) view returns (uint256)"
                                                    }
                                                },
                                                "id": 1447,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6110:36:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1436,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3723,
                                                "src": "6050:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 1437,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "divDown",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3504,
                                            "src": "6050:18:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1448,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6050:97:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6028:119:6"
                                },
                                {
                                    "assignments": [
                                        1451
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1451,
                                            "mutability": "mutable",
                                            "name": "founderFee",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1791,
                                            "src": "6158:18:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1450,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6158:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1465,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 1456,
                                                        "name": "fees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1408,
                                                        "src": "6217:4:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "id": 1457,
                                                        "name": "founderShare",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 919,
                                                        "src": "6223:12:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 1454,
                                                        "name": "FixedPoint",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3723,
                                                        "src": "6198:10:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                            "typeString": "type(library FixedPoint)"
                                                        }
                                                    },
                                                    "id": 1455,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mulDown",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 3410,
                                                    "src": "6198:18:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 1458,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6198:38:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 1461,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1402,
                                                                "src": "6267:5:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1460,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 819,
                                                            "src": "6260:6:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 1462,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6260:13:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    ],
                                                    "id": 1459,
                                                    "name": "_computeScalingFactor",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1828,
                                                    "src": "6238:21:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$819_$returns$_t_uint256_$",
                                                        "typeString": "function (contract IERC20) view returns (uint256)"
                                                    }
                                                },
                                                "id": 1463,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6238:36:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1452,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3723,
                                                "src": "6179:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 1453,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "divDown",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3504,
                                            "src": "6179:18:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1464,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6179:96:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6158:117:6"
                                },
                                {
                                    "assignments": [
                                        1467
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1467,
                                            "mutability": "mutable",
                                            "name": "investorFee",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1791,
                                            "src": "6286:19:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1466,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6286:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1481,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 1472,
                                                        "name": "fees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1408,
                                                        "src": "6346:4:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "id": 1473,
                                                        "name": "investorShare",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 921,
                                                        "src": "6352:13:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 1470,
                                                        "name": "FixedPoint",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3723,
                                                        "src": "6327:10:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                            "typeString": "type(library FixedPoint)"
                                                        }
                                                    },
                                                    "id": 1471,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mulDown",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 3410,
                                                    "src": "6327:18:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 1474,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6327:39:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 1477,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1402,
                                                                "src": "6397:5:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1476,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 819,
                                                            "src": "6390:6:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 1478,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6390:13:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    ],
                                                    "id": 1475,
                                                    "name": "_computeScalingFactor",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1828,
                                                    "src": "6368:21:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$819_$returns$_t_uint256_$",
                                                        "typeString": "function (contract IERC20) view returns (uint256)"
                                                    }
                                                },
                                                "id": 1479,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6368:36:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1468,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3723,
                                                "src": "6308:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 1469,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "divDown",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3504,
                                            "src": "6308:18:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1480,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6308:97:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6286:119:6"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        },
                                        "id": 1484,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1482,
                                            "name": "sharing",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1404,
                                            "src": "6419:7:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "636f6c6c656374696f6e",
                                            "id": 1483,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6428:12:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_a77d3cda10319ef1453ed69bfa8aef4c4c554a589d68a43d2e3eb63639bb3d85",
                                                "typeString": "literal_string \"collection\""
                                            },
                                            "value": "collection"
                                        },
                                        "src": "6419:21:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "id": 1617,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 1615,
                                                "name": "sharing",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1404,
                                                "src": "8046:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "hexValue": "66656573",
                                                "id": 1616,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8055:6:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_5a3cb893d297939fd527ec3d496cfd17f9907b89b1ea2a8c10ebfda20c4119de",
                                                    "typeString": "literal_string \"fees\""
                                                },
                                                "value": "fees"
                                            },
                                            "src": "8046:15:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "id": 1789,
                                        "nodeType": "IfStatement",
                                        "src": "8043:1900:6",
                                        "trueBody": {
                                            "id": 1788,
                                            "nodeType": "Block",
                                            "src": "8062:1881:6",
                                            "statements": [
                                                {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1620,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1618,
                                                            "name": "founderFee",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1451,
                                                            "src": "8435:10:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 1619,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8446:1:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "8435:12:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "id": 1639,
                                                    "nodeType": "IfStatement",
                                                    "src": "8432:235:6",
                                                    "trueBody": {
                                                        "id": 1638,
                                                        "nodeType": "Block",
                                                        "src": "8448:219:6",
                                                        "statements": [
                                                            {
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 1625,
                                                                            "name": "founder",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 911,
                                                                            "src": "8539:7:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 1626,
                                                                            "name": "founderFee",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1451,
                                                                            "src": "8548:10:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1622,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1402,
                                                                                    "src": "8523:5:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                ],
                                                                                "id": 1621,
                                                                                "name": "IERC20",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 819,
                                                                                "src": "8516:6:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                    "typeString": "type(contract IERC20)"
                                                                                }
                                                                            },
                                                                            "id": 1623,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "8516:13:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$819",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 1624,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "transfer",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 768,
                                                                        "src": "8516:22:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                            "typeString": "function (address,uint256) external returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 1627,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "8516:43:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "id": 1628,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "8516:43:6"
                                                            },
                                                            {
                                                                "eventCall": {
                                                                    "arguments": [
                                                                        {
                                                                            "hexValue": "526f79616c7479",
                                                                            "id": 1630,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "string",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "8596:9:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_stringliteral_7d8f7b384f374c06a8518b8661abf73fb708e0b379400613e4d1e5084c993c46",
                                                                                "typeString": "literal_string \"Royalty\""
                                                                            },
                                                                            "value": "Royalty"
                                                                        },
                                                                        {
                                                                            "id": 1631,
                                                                            "name": "founder",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 911,
                                                                            "src": "8607:7:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 1632,
                                                                            "name": "token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1402,
                                                                            "src": "8616:5:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 1633,
                                                                            "name": "founderFee",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1451,
                                                                            "src": "8623:10:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "id": 1634,
                                                                                "name": "block",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4294967292,
                                                                                "src": "8635:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_magic_block",
                                                                                    "typeString": "block"
                                                                                }
                                                                            },
                                                                            "id": 1635,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "timestamp",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "8635:15:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_stringliteral_7d8f7b384f374c06a8518b8661abf73fb708e0b379400613e4d1e5084c993c46",
                                                                                "typeString": "literal_string \"Royalty\""
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "id": 1629,
                                                                        "name": "RevenueShare",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 935,
                                                                        "src": "8583:12:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                            "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1636,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "8583:68:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_tuple$__$",
                                                                        "typeString": "tuple()"
                                                                    }
                                                                },
                                                                "id": 1637,
                                                                "nodeType": "EmitStatement",
                                                                "src": "8578:73:6"
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1642,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1640,
                                                            "name": "investorFee",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1467,
                                                            "src": "8684:11:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 1641,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8696:1:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "8684:13:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "id": 1661,
                                                    "nodeType": "IfStatement",
                                                    "src": "8681:280:6",
                                                    "trueBody": {
                                                        "id": 1660,
                                                        "nodeType": "Block",
                                                        "src": "8698:263:6",
                                                        "statements": [
                                                            {
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 1647,
                                                                            "name": "liquidityContract",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 915,
                                                                            "src": "8810:17:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 1648,
                                                                            "name": "investorFee",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1467,
                                                                            "src": "8829:11:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1644,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1402,
                                                                                    "src": "8794:5:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                ],
                                                                                "id": 1643,
                                                                                "name": "IERC20",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 819,
                                                                                "src": "8787:6:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                    "typeString": "type(contract IERC20)"
                                                                                }
                                                                            },
                                                                            "id": 1645,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "8787:13:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$819",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 1646,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "transfer",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 768,
                                                                        "src": "8787:22:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                            "typeString": "function (address,uint256) external returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 1649,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "8787:54:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "id": 1650,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "8787:54:6"
                                                            },
                                                            {
                                                                "eventCall": {
                                                                    "arguments": [
                                                                        {
                                                                            "hexValue": "496e766573746f72",
                                                                            "id": 1652,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "string",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "8878:10:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_stringliteral_b07dd01d1f7a644c8997d56b1401edb5cd2a9325d84a45f67e4069218a103b86",
                                                                                "typeString": "literal_string \"Investor\""
                                                                            },
                                                                            "value": "Investor"
                                                                        },
                                                                        {
                                                                            "id": 1653,
                                                                            "name": "liquidityContract",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 915,
                                                                            "src": "8890:17:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 1654,
                                                                            "name": "token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1402,
                                                                            "src": "8909:5:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 1655,
                                                                            "name": "investorFee",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1467,
                                                                            "src": "8916:11:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "id": 1656,
                                                                                "name": "block",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4294967292,
                                                                                "src": "8929:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_magic_block",
                                                                                    "typeString": "block"
                                                                                }
                                                                            },
                                                                            "id": 1657,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "timestamp",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "8929:15:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_stringliteral_b07dd01d1f7a644c8997d56b1401edb5cd2a9325d84a45f67e4069218a103b86",
                                                                                "typeString": "literal_string \"Investor\""
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "id": 1651,
                                                                        "name": "RevenueShare",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 935,
                                                                        "src": "8865:12:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                            "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1658,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "8865:80:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_tuple$__$",
                                                                        "typeString": "tuple()"
                                                                    }
                                                                },
                                                                "id": 1659,
                                                                "nodeType": "EmitStatement",
                                                                "src": "8860:85:6"
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "id": 1671,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1664,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1662,
                                                                "name": "businessFee",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1419,
                                                                "src": "8978:11:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 1663,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "8990:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "8978:13:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&&",
                                                        "rightExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1670,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 1665,
                                                                        "name": "businesses",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 896,
                                                                        "src": "8995:10:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                            "typeString": "mapping(address => address[] storage ref)"
                                                                        }
                                                                    },
                                                                    "id": 1667,
                                                                    "indexExpression": {
                                                                        "id": 1666,
                                                                        "name": "token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1402,
                                                                        "src": "9006:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "8995:17:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                        "typeString": "address[] storage ref"
                                                                    }
                                                                },
                                                                "id": 1668,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "length",
                                                                "nodeType": "MemberAccess",
                                                                "src": "8995:24:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 1669,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "9020:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "8995:26:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "src": "8978:43:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "id": 1724,
                                                    "nodeType": "IfStatement",
                                                    "src": "8975:468:6",
                                                    "trueBody": {
                                                        "id": 1723,
                                                        "nodeType": "Block",
                                                        "src": "9022:421:6",
                                                        "statements": [
                                                            {
                                                                "expression": {
                                                                    "id": 1681,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftHandSide": {
                                                                        "id": 1672,
                                                                        "name": "businessFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1419,
                                                                        "src": "9081:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "Assignment",
                                                                    "operator": "=",
                                                                    "rightHandSide": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1675,
                                                                                "name": "businessFee",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1419,
                                                                                "src": "9114:11:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            {
                                                                                "expression": {
                                                                                    "baseExpression": {
                                                                                        "id": 1676,
                                                                                        "name": "businesses",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 896,
                                                                                        "src": "9127:10:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                            "typeString": "mapping(address => address[] storage ref)"
                                                                                        }
                                                                                    },
                                                                                    "id": 1678,
                                                                                    "indexExpression": {
                                                                                        "id": 1677,
                                                                                        "name": "token",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1402,
                                                                                        "src": "9138:5:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "9127:17:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                        "typeString": "address[] storage ref"
                                                                                    }
                                                                                },
                                                                                "id": 1679,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "length",
                                                                                "nodeType": "MemberAccess",
                                                                                "src": "9127:24:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 1673,
                                                                                "name": "FixedPoint",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3723,
                                                                                "src": "9095:10:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                                                    "typeString": "type(library FixedPoint)"
                                                                                }
                                                                            },
                                                                            "id": 1674,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "divDown",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 3504,
                                                                            "src": "9095:18:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 1680,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "9095:57:6",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "9081:71:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 1682,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "9081:71:6"
                                                            },
                                                            {
                                                                "body": {
                                                                    "id": 1721,
                                                                    "nodeType": "Block",
                                                                    "src": "9217:211:6",
                                                                    "statements": [
                                                                        {
                                                                            "expression": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "baseExpression": {
                                                                                            "baseExpression": {
                                                                                                "id": 1700,
                                                                                                "name": "businesses",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 896,
                                                                                                "src": "9263:10:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                                }
                                                                                            },
                                                                                            "id": 1702,
                                                                                            "indexExpression": {
                                                                                                "id": 1701,
                                                                                                "name": "token",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1402,
                                                                                                "src": "9274:5:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "9263:17:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                                "typeString": "address[] storage ref"
                                                                                            }
                                                                                        },
                                                                                        "id": 1704,
                                                                                        "indexExpression": {
                                                                                            "id": 1703,
                                                                                            "name": "j",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1684,
                                                                                            "src": "9281:1:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "9263:20:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 1705,
                                                                                        "name": "businessFee",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1419,
                                                                                        "src": "9285:11:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "id": 1697,
                                                                                                "name": "token",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1402,
                                                                                                "src": "9247:5:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            ],
                                                                                            "id": 1696,
                                                                                            "name": "IERC20",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 819,
                                                                                            "src": "9240:6:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                                "typeString": "type(contract IERC20)"
                                                                                            }
                                                                                        },
                                                                                        "id": 1698,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "typeConversion",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "9240:13:6",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                                                            "typeString": "contract IERC20"
                                                                                        }
                                                                                    },
                                                                                    "id": 1699,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "transfer",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 768,
                                                                                    "src": "9240:22:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                                                    }
                                                                                },
                                                                                "id": 1706,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "9240:57:6",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bool",
                                                                                    "typeString": "bool"
                                                                                }
                                                                            },
                                                                            "id": 1707,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "9240:57:6"
                                                                        },
                                                                        {
                                                                            "eventCall": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "hexValue": "427573696e657373",
                                                                                        "id": 1709,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "string",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "9338:10:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_stringliteral_da4fd9fa774c576c08e67dcb6bb94d647b4bc97f62502f1e2b62c2ba20f879cc",
                                                                                            "typeString": "literal_string \"Business\""
                                                                                        },
                                                                                        "value": "Business"
                                                                                    },
                                                                                    {
                                                                                        "baseExpression": {
                                                                                            "baseExpression": {
                                                                                                "id": 1710,
                                                                                                "name": "businesses",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 896,
                                                                                                "src": "9350:10:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                                }
                                                                                            },
                                                                                            "id": 1712,
                                                                                            "indexExpression": {
                                                                                                "id": 1711,
                                                                                                "name": "token",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1402,
                                                                                                "src": "9361:5:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "9350:17:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                                "typeString": "address[] storage ref"
                                                                                            }
                                                                                        },
                                                                                        "id": 1714,
                                                                                        "indexExpression": {
                                                                                            "id": 1713,
                                                                                            "name": "j",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1684,
                                                                                            "src": "9368:1:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "9350:20:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 1715,
                                                                                        "name": "token",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1402,
                                                                                        "src": "9372:5:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 1716,
                                                                                        "name": "businessFee",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1419,
                                                                                        "src": "9379:11:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "expression": {
                                                                                            "id": 1717,
                                                                                            "name": "block",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 4294967292,
                                                                                            "src": "9392:5:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_magic_block",
                                                                                                "typeString": "block"
                                                                                            }
                                                                                        },
                                                                                        "id": 1718,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "timestamp",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "src": "9392:15:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_stringliteral_da4fd9fa774c576c08e67dcb6bb94d647b4bc97f62502f1e2b62c2ba20f879cc",
                                                                                            "typeString": "literal_string \"Business\""
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "id": 1708,
                                                                                    "name": "RevenueShare",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 935,
                                                                                    "src": "9325:12:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                                    }
                                                                                },
                                                                                "id": 1719,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "9325:83:6",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_tuple$__$",
                                                                                    "typeString": "tuple()"
                                                                                }
                                                                            },
                                                                            "id": 1720,
                                                                            "nodeType": "EmitStatement",
                                                                            "src": "9320:88:6"
                                                                        }
                                                                    ]
                                                                },
                                                                "condition": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1692,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1687,
                                                                        "name": "j",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1684,
                                                                        "src": "9185:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "<",
                                                                    "rightExpression": {
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1688,
                                                                                "name": "businesses",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 896,
                                                                                "src": "9187:10:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                }
                                                                            },
                                                                            "id": 1690,
                                                                            "indexExpression": {
                                                                                "id": 1689,
                                                                                "name": "token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1402,
                                                                                "src": "9198:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "9187:17:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                "typeString": "address[] storage ref"
                                                                            }
                                                                        },
                                                                        "id": 1691,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "length",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "9187:24:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "9185:26:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "id": 1722,
                                                                "initializationExpression": {
                                                                    "assignments": [
                                                                        1684
                                                                    ],
                                                                    "declarations": [
                                                                        {
                                                                            "constant": false,
                                                                            "id": 1684,
                                                                            "mutability": "mutable",
                                                                            "name": "j",
                                                                            "nodeType": "VariableDeclaration",
                                                                            "scope": 1722,
                                                                            "src": "9175:6:6",
                                                                            "stateVariable": false,
                                                                            "storageLocation": "default",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 1683,
                                                                                "name": "uint",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "9175:4:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "visibility": "internal"
                                                                        }
                                                                    ],
                                                                    "id": 1686,
                                                                    "initialValue": {
                                                                        "hexValue": "30",
                                                                        "id": 1685,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "9182:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    },
                                                                    "nodeType": "VariableDeclarationStatement",
                                                                    "src": "9175:8:6"
                                                                },
                                                                "loopExpression": {
                                                                    "expression": {
                                                                        "id": 1694,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "UnaryOperation",
                                                                        "operator": "++",
                                                                        "prefix": false,
                                                                        "src": "9213:3:6",
                                                                        "subExpression": {
                                                                            "id": 1693,
                                                                            "name": "j",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1684,
                                                                            "src": "9213:1:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "id": 1695,
                                                                    "nodeType": "ExpressionStatement",
                                                                    "src": "9213:3:6"
                                                                },
                                                                "nodeType": "ForStatement",
                                                                "src": "9171:257:6"
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "id": 1734,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1727,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1725,
                                                                "name": "operatorFee",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1435,
                                                                "src": "9460:11:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 1726,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "9472:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "9460:13:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&&",
                                                        "rightExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1733,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 1728,
                                                                        "name": "operators",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 905,
                                                                        "src": "9477:9:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                            "typeString": "mapping(address => address[] storage ref)"
                                                                        }
                                                                    },
                                                                    "id": 1730,
                                                                    "indexExpression": {
                                                                        "id": 1729,
                                                                        "name": "token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1402,
                                                                        "src": "9487:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "9477:16:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                        "typeString": "address[] storage ref"
                                                                    }
                                                                },
                                                                "id": 1731,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "length",
                                                                "nodeType": "MemberAccess",
                                                                "src": "9477:23:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 1732,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "9501:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "9477:25:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "src": "9460:42:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "id": 1787,
                                                    "nodeType": "IfStatement",
                                                    "src": "9457:475:6",
                                                    "trueBody": {
                                                        "id": 1786,
                                                        "nodeType": "Block",
                                                        "src": "9503:429:6",
                                                        "statements": [
                                                            {
                                                                "expression": {
                                                                    "id": 1744,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftHandSide": {
                                                                        "id": 1735,
                                                                        "name": "operatorFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1435,
                                                                        "src": "9574:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "Assignment",
                                                                    "operator": "=",
                                                                    "rightHandSide": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1738,
                                                                                "name": "operatorFee",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1435,
                                                                                "src": "9607:11:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            {
                                                                                "expression": {
                                                                                    "baseExpression": {
                                                                                        "id": 1739,
                                                                                        "name": "operators",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 905,
                                                                                        "src": "9620:9:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                            "typeString": "mapping(address => address[] storage ref)"
                                                                                        }
                                                                                    },
                                                                                    "id": 1741,
                                                                                    "indexExpression": {
                                                                                        "id": 1740,
                                                                                        "name": "token",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1402,
                                                                                        "src": "9630:5:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "9620:16:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                        "typeString": "address[] storage ref"
                                                                                    }
                                                                                },
                                                                                "id": 1742,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "length",
                                                                                "nodeType": "MemberAccess",
                                                                                "src": "9620:23:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 1736,
                                                                                "name": "FixedPoint",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3723,
                                                                                "src": "9588:10:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                                                    "typeString": "type(library FixedPoint)"
                                                                                }
                                                                            },
                                                                            "id": 1737,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "divDown",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 3504,
                                                                            "src": "9588:18:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 1743,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "9588:56:6",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "9574:70:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 1745,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "9574:70:6"
                                                            },
                                                            {
                                                                "body": {
                                                                    "id": 1784,
                                                                    "nodeType": "Block",
                                                                    "src": "9708:209:6",
                                                                    "statements": [
                                                                        {
                                                                            "expression": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "baseExpression": {
                                                                                            "baseExpression": {
                                                                                                "id": 1763,
                                                                                                "name": "operators",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 905,
                                                                                                "src": "9754:9:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                                }
                                                                                            },
                                                                                            "id": 1765,
                                                                                            "indexExpression": {
                                                                                                "id": 1764,
                                                                                                "name": "token",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1402,
                                                                                                "src": "9764:5:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "9754:16:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                                "typeString": "address[] storage ref"
                                                                                            }
                                                                                        },
                                                                                        "id": 1767,
                                                                                        "indexExpression": {
                                                                                            "id": 1766,
                                                                                            "name": "j",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1747,
                                                                                            "src": "9771:1:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "9754:19:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 1768,
                                                                                        "name": "operatorFee",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1435,
                                                                                        "src": "9775:11:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "id": 1760,
                                                                                                "name": "token",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1402,
                                                                                                "src": "9738:5:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            ],
                                                                                            "id": 1759,
                                                                                            "name": "IERC20",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 819,
                                                                                            "src": "9731:6:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                                "typeString": "type(contract IERC20)"
                                                                                            }
                                                                                        },
                                                                                        "id": 1761,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "typeConversion",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "9731:13:6",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                                                            "typeString": "contract IERC20"
                                                                                        }
                                                                                    },
                                                                                    "id": 1762,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "transfer",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 768,
                                                                                    "src": "9731:22:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                                                    }
                                                                                },
                                                                                "id": 1769,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "9731:56:6",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bool",
                                                                                    "typeString": "bool"
                                                                                }
                                                                            },
                                                                            "id": 1770,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "9731:56:6"
                                                                        },
                                                                        {
                                                                            "eventCall": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "hexValue": "4f70657261746f72",
                                                                                        "id": 1772,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "string",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "9828:10:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_stringliteral_71b43d66088715f0148d07b45a38f510fffe2d5fd108ee7701691e554738d61b",
                                                                                            "typeString": "literal_string \"Operator\""
                                                                                        },
                                                                                        "value": "Operator"
                                                                                    },
                                                                                    {
                                                                                        "baseExpression": {
                                                                                            "baseExpression": {
                                                                                                "id": 1773,
                                                                                                "name": "operators",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 905,
                                                                                                "src": "9840:9:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                                }
                                                                                            },
                                                                                            "id": 1775,
                                                                                            "indexExpression": {
                                                                                                "id": 1774,
                                                                                                "name": "token",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1402,
                                                                                                "src": "9850:5:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "9840:16:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                                "typeString": "address[] storage ref"
                                                                                            }
                                                                                        },
                                                                                        "id": 1777,
                                                                                        "indexExpression": {
                                                                                            "id": 1776,
                                                                                            "name": "j",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1747,
                                                                                            "src": "9857:1:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "9840:19:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 1778,
                                                                                        "name": "token",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1402,
                                                                                        "src": "9861:5:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 1779,
                                                                                        "name": "operatorFee",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1435,
                                                                                        "src": "9868:11:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "expression": {
                                                                                            "id": 1780,
                                                                                            "name": "block",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 4294967292,
                                                                                            "src": "9881:5:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_magic_block",
                                                                                                "typeString": "block"
                                                                                            }
                                                                                        },
                                                                                        "id": 1781,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "timestamp",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "src": "9881:15:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_stringliteral_71b43d66088715f0148d07b45a38f510fffe2d5fd108ee7701691e554738d61b",
                                                                                            "typeString": "literal_string \"Operator\""
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "id": 1771,
                                                                                    "name": "RevenueShare",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 935,
                                                                                    "src": "9815:12:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                                    }
                                                                                },
                                                                                "id": 1782,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "9815:82:6",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_tuple$__$",
                                                                                    "typeString": "tuple()"
                                                                                }
                                                                            },
                                                                            "id": 1783,
                                                                            "nodeType": "EmitStatement",
                                                                            "src": "9810:87:6"
                                                                        }
                                                                    ]
                                                                },
                                                                "condition": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1755,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1750,
                                                                        "name": "j",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1747,
                                                                        "src": "9677:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "<",
                                                                    "rightExpression": {
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1751,
                                                                                "name": "operators",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 905,
                                                                                "src": "9679:9:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                }
                                                                            },
                                                                            "id": 1753,
                                                                            "indexExpression": {
                                                                                "id": 1752,
                                                                                "name": "token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1402,
                                                                                "src": "9689:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "9679:16:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                "typeString": "address[] storage ref"
                                                                            }
                                                                        },
                                                                        "id": 1754,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "length",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "9679:23:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "9677:25:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "id": 1785,
                                                                "initializationExpression": {
                                                                    "assignments": [
                                                                        1747
                                                                    ],
                                                                    "declarations": [
                                                                        {
                                                                            "constant": false,
                                                                            "id": 1747,
                                                                            "mutability": "mutable",
                                                                            "name": "j",
                                                                            "nodeType": "VariableDeclaration",
                                                                            "scope": 1785,
                                                                            "src": "9667:6:6",
                                                                            "stateVariable": false,
                                                                            "storageLocation": "default",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 1746,
                                                                                "name": "uint",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "9667:4:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "visibility": "internal"
                                                                        }
                                                                    ],
                                                                    "id": 1749,
                                                                    "initialValue": {
                                                                        "hexValue": "30",
                                                                        "id": 1748,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "9674:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    },
                                                                    "nodeType": "VariableDeclarationStatement",
                                                                    "src": "9667:8:6"
                                                                },
                                                                "loopExpression": {
                                                                    "expression": {
                                                                        "id": 1757,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "UnaryOperation",
                                                                        "operator": "++",
                                                                        "prefix": false,
                                                                        "src": "9704:3:6",
                                                                        "subExpression": {
                                                                            "id": 1756,
                                                                            "name": "j",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1747,
                                                                            "src": "9704:1:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "id": 1758,
                                                                    "nodeType": "ExpressionStatement",
                                                                    "src": "9704:3:6"
                                                                },
                                                                "nodeType": "ForStatement",
                                                                "src": "9663:254:6"
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    "id": 1790,
                                    "nodeType": "IfStatement",
                                    "src": "6416:3527:6",
                                    "trueBody": {
                                        "id": 1614,
                                        "nodeType": "Block",
                                        "src": "6441:1587:6",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1487,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1485,
                                                        "name": "businessFee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1419,
                                                        "src": "6459:11:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1486,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "6471:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "6459:13:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1506,
                                                "nodeType": "IfStatement",
                                                "src": "6456:300:6",
                                                "trueBody": {
                                                    "id": 1505,
                                                    "nodeType": "Block",
                                                    "src": "6473:283:6",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 1492,
                                                                        "name": "liquidityContract",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 915,
                                                                        "src": "6605:17:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1493,
                                                                        "name": "businessFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1419,
                                                                        "src": "6624:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1489,
                                                                                "name": "token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1402,
                                                                                "src": "6589:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 1488,
                                                                            "name": "IERC20",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 819,
                                                                            "src": "6582:6:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                "typeString": "type(contract IERC20)"
                                                                            }
                                                                        },
                                                                        "id": 1490,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "6582:13:6",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                                            "typeString": "contract IERC20"
                                                                        }
                                                                    },
                                                                    "id": 1491,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "transfer",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 768,
                                                                    "src": "6582:22:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                                    }
                                                                },
                                                                "id": 1494,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "6582:54:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 1495,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "6582:54:6"
                                                        },
                                                        {
                                                            "eventCall": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "496e766573746f72",
                                                                        "id": 1497,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "6673:10:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_b07dd01d1f7a644c8997d56b1401edb5cd2a9325d84a45f67e4069218a103b86",
                                                                            "typeString": "literal_string \"Investor\""
                                                                        },
                                                                        "value": "Investor"
                                                                    },
                                                                    {
                                                                        "id": 1498,
                                                                        "name": "liquidityContract",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 915,
                                                                        "src": "6685:17:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1499,
                                                                        "name": "token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1402,
                                                                        "src": "6704:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1500,
                                                                        "name": "businessFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1419,
                                                                        "src": "6711:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 1501,
                                                                            "name": "block",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4294967292,
                                                                            "src": "6724:5:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_block",
                                                                                "typeString": "block"
                                                                            }
                                                                        },
                                                                        "id": 1502,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "timestamp",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "6724:15:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_b07dd01d1f7a644c8997d56b1401edb5cd2a9325d84a45f67e4069218a103b86",
                                                                            "typeString": "literal_string \"Investor\""
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 1496,
                                                                    "name": "RevenueShare",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 935,
                                                                    "src": "6660:12:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                    }
                                                                },
                                                                "id": 1503,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "6660:80:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 1504,
                                                            "nodeType": "EmitStatement",
                                                            "src": "6655:85:6"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 1516,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1509,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1507,
                                                            "name": "founderFee",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1451,
                                                            "src": "6773:10:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 1508,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6784:1:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "6773:12:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1515,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 1510,
                                                                    "name": "businesses",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 896,
                                                                    "src": "6789:10:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                        "typeString": "mapping(address => address[] storage ref)"
                                                                    }
                                                                },
                                                                "id": 1512,
                                                                "indexExpression": {
                                                                    "id": 1511,
                                                                    "name": "token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1402,
                                                                    "src": "6800:5:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "6789:17:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                    "typeString": "address[] storage ref"
                                                                }
                                                            },
                                                            "id": 1513,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "length",
                                                            "nodeType": "MemberAccess",
                                                            "src": "6789:24:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 1514,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6814:1:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "6789:26:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "6773:42:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1569,
                                                "nodeType": "IfStatement",
                                                "src": "6770:678:6",
                                                "trueBody": {
                                                    "id": 1568,
                                                    "nodeType": "Block",
                                                    "src": "6816:632:6",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 1526,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 1517,
                                                                    "name": "founderFee",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1451,
                                                                    "src": "7096:10:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 1520,
                                                                            "name": "founderFee",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1451,
                                                                            "src": "7122:10:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "baseExpression": {
                                                                                    "id": 1521,
                                                                                    "name": "businesses",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 896,
                                                                                    "src": "7134:10:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                        "typeString": "mapping(address => address[] storage ref)"
                                                                                    }
                                                                                },
                                                                                "id": 1523,
                                                                                "indexExpression": {
                                                                                    "id": 1522,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1402,
                                                                                    "src": "7145:5:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "IndexAccess",
                                                                                "src": "7134:17:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                    "typeString": "address[] storage ref"
                                                                                }
                                                                            },
                                                                            "id": 1524,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "length",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "7134:24:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "id": 1518,
                                                                            "name": "Math",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5333,
                                                                            "src": "7109:4:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_Math_$5333_$",
                                                                                "typeString": "type(library Math)"
                                                                            }
                                                                        },
                                                                        "id": 1519,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "divDown",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 5297,
                                                                        "src": "7109:12:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1525,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "7109:50:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "7096:63:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1527,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "7096:63:6"
                                                        },
                                                        {
                                                            "body": {
                                                                "id": 1566,
                                                                "nodeType": "Block",
                                                                "src": "7224:209:6",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "baseExpression": {
                                                                                        "baseExpression": {
                                                                                            "id": 1545,
                                                                                            "name": "businesses",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 896,
                                                                                            "src": "7270:10:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                                "typeString": "mapping(address => address[] storage ref)"
                                                                                            }
                                                                                        },
                                                                                        "id": 1547,
                                                                                        "indexExpression": {
                                                                                            "id": 1546,
                                                                                            "name": "token",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1402,
                                                                                            "src": "7281:5:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "7270:17:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                            "typeString": "address[] storage ref"
                                                                                        }
                                                                                    },
                                                                                    "id": 1549,
                                                                                    "indexExpression": {
                                                                                        "id": 1548,
                                                                                        "name": "j",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1529,
                                                                                        "src": "7288:1:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "7270:20:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 1550,
                                                                                    "name": "founderFee",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1451,
                                                                                    "src": "7292:10:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "id": 1542,
                                                                                            "name": "token",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1402,
                                                                                            "src": "7254:5:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        ],
                                                                                        "id": 1541,
                                                                                        "name": "IERC20",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 819,
                                                                                        "src": "7247:6:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                            "typeString": "type(contract IERC20)"
                                                                                        }
                                                                                    },
                                                                                    "id": 1543,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "typeConversion",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "7247:13:6",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_contract$_IERC20_$819",
                                                                                        "typeString": "contract IERC20"
                                                                                    }
                                                                                },
                                                                                "id": 1544,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "transfer",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 768,
                                                                                "src": "7247:22:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                                    "typeString": "function (address,uint256) external returns (bool)"
                                                                                }
                                                                            },
                                                                            "id": 1551,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "7247:56:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                            }
                                                                        },
                                                                        "id": 1552,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "7247:56:6"
                                                                    },
                                                                    {
                                                                        "eventCall": {
                                                                            "arguments": [
                                                                                {
                                                                                    "hexValue": "427573696e657373",
                                                                                    "id": 1554,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "string",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "7344:10:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_stringliteral_da4fd9fa774c576c08e67dcb6bb94d647b4bc97f62502f1e2b62c2ba20f879cc",
                                                                                        "typeString": "literal_string \"Business\""
                                                                                    },
                                                                                    "value": "Business"
                                                                                },
                                                                                {
                                                                                    "baseExpression": {
                                                                                        "baseExpression": {
                                                                                            "id": 1555,
                                                                                            "name": "businesses",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 896,
                                                                                            "src": "7356:10:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                                "typeString": "mapping(address => address[] storage ref)"
                                                                                            }
                                                                                        },
                                                                                        "id": 1557,
                                                                                        "indexExpression": {
                                                                                            "id": 1556,
                                                                                            "name": "token",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1402,
                                                                                            "src": "7367:5:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "7356:17:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                            "typeString": "address[] storage ref"
                                                                                        }
                                                                                    },
                                                                                    "id": 1559,
                                                                                    "indexExpression": {
                                                                                        "id": 1558,
                                                                                        "name": "j",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1529,
                                                                                        "src": "7374:1:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "7356:20:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 1560,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1402,
                                                                                    "src": "7378:5:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 1561,
                                                                                    "name": "founderFee",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1451,
                                                                                    "src": "7385:10:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "expression": {
                                                                                        "id": 1562,
                                                                                        "name": "block",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 4294967292,
                                                                                        "src": "7397:5:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_magic_block",
                                                                                            "typeString": "block"
                                                                                        }
                                                                                    },
                                                                                    "id": 1563,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "timestamp",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "src": "7397:15:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_stringliteral_da4fd9fa774c576c08e67dcb6bb94d647b4bc97f62502f1e2b62c2ba20f879cc",
                                                                                        "typeString": "literal_string \"Business\""
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                ],
                                                                                "id": 1553,
                                                                                "name": "RevenueShare",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 935,
                                                                                "src": "7331:12:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                                    "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                                }
                                                                            },
                                                                            "id": 1564,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "7331:82:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 1565,
                                                                        "nodeType": "EmitStatement",
                                                                        "src": "7326:87:6"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1537,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 1532,
                                                                    "name": "j",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1529,
                                                                    "src": "7192:1:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "<",
                                                                "rightExpression": {
                                                                    "expression": {
                                                                        "baseExpression": {
                                                                            "id": 1533,
                                                                            "name": "businesses",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 896,
                                                                            "src": "7194:10:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                "typeString": "mapping(address => address[] storage ref)"
                                                                            }
                                                                        },
                                                                        "id": 1535,
                                                                        "indexExpression": {
                                                                            "id": 1534,
                                                                            "name": "token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1402,
                                                                            "src": "7205:5:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "7194:17:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                            "typeString": "address[] storage ref"
                                                                        }
                                                                    },
                                                                    "id": 1536,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "length",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "7194:24:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "7192:26:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 1567,
                                                            "initializationExpression": {
                                                                "assignments": [
                                                                    1529
                                                                ],
                                                                "declarations": [
                                                                    {
                                                                        "constant": false,
                                                                        "id": 1529,
                                                                        "mutability": "mutable",
                                                                        "name": "j",
                                                                        "nodeType": "VariableDeclaration",
                                                                        "scope": 1567,
                                                                        "src": "7182:6:6",
                                                                        "stateVariable": false,
                                                                        "storageLocation": "default",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 1528,
                                                                            "name": "uint",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "7182:4:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "visibility": "internal"
                                                                    }
                                                                ],
                                                                "id": 1531,
                                                                "initialValue": {
                                                                    "hexValue": "30",
                                                                    "id": 1530,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "7189:1:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                },
                                                                "nodeType": "VariableDeclarationStatement",
                                                                "src": "7182:8:6"
                                                            },
                                                            "loopExpression": {
                                                                "expression": {
                                                                    "id": 1539,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "UnaryOperation",
                                                                    "operator": "++",
                                                                    "prefix": false,
                                                                    "src": "7220:3:6",
                                                                    "subExpression": {
                                                                        "id": 1538,
                                                                        "name": "j",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1529,
                                                                        "src": "7220:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 1540,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "7220:3:6"
                                                            },
                                                            "nodeType": "ForStatement",
                                                            "src": "7178:255:6"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1572,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1570,
                                                        "name": "investorFee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1467,
                                                        "src": "7465:11:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1571,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7477:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "7465:13:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1591,
                                                "nodeType": "IfStatement",
                                                "src": "7462:264:6",
                                                "trueBody": {
                                                    "id": 1590,
                                                    "nodeType": "Block",
                                                    "src": "7479:247:6",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 1577,
                                                                        "name": "founder",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 911,
                                                                        "src": "7596:7:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1578,
                                                                        "name": "investorFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1467,
                                                                        "src": "7605:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1574,
                                                                                "name": "token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1402,
                                                                                "src": "7580:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 1573,
                                                                            "name": "IERC20",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 819,
                                                                            "src": "7573:6:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                "typeString": "type(contract IERC20)"
                                                                            }
                                                                        },
                                                                        "id": 1575,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "7573:13:6",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                                            "typeString": "contract IERC20"
                                                                        }
                                                                    },
                                                                    "id": 1576,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "transfer",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 768,
                                                                    "src": "7573:22:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                                    }
                                                                },
                                                                "id": 1579,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7573:44:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 1580,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "7573:44:6"
                                                        },
                                                        {
                                                            "eventCall": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "526f79616c7479",
                                                                        "id": 1582,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7654:9:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_7d8f7b384f374c06a8518b8661abf73fb708e0b379400613e4d1e5084c993c46",
                                                                            "typeString": "literal_string \"Royalty\""
                                                                        },
                                                                        "value": "Royalty"
                                                                    },
                                                                    {
                                                                        "id": 1583,
                                                                        "name": "founder",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 911,
                                                                        "src": "7665:7:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1584,
                                                                        "name": "token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1402,
                                                                        "src": "7674:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1585,
                                                                        "name": "investorFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1467,
                                                                        "src": "7681:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 1586,
                                                                            "name": "block",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4294967292,
                                                                            "src": "7694:5:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_block",
                                                                                "typeString": "block"
                                                                            }
                                                                        },
                                                                        "id": 1587,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "timestamp",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "7694:15:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_7d8f7b384f374c06a8518b8661abf73fb708e0b379400613e4d1e5084c993c46",
                                                                            "typeString": "literal_string \"Royalty\""
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 1581,
                                                                    "name": "RevenueShare",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 935,
                                                                    "src": "7641:12:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                    }
                                                                },
                                                                "id": 1588,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7641:69:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 1589,
                                                            "nodeType": "EmitStatement",
                                                            "src": "7636:74:6"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1594,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1592,
                                                        "name": "operatorFee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1435,
                                                        "src": "7743:11:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1593,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7755:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "7743:13:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1613,
                                                "nodeType": "IfStatement",
                                                "src": "7740:277:6",
                                                "trueBody": {
                                                    "id": 1612,
                                                    "nodeType": "Block",
                                                    "src": "7757:260:6",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 1599,
                                                                        "name": "treasury",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 913,
                                                                        "src": "7884:8:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1600,
                                                                        "name": "operatorFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1435,
                                                                        "src": "7894:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1596,
                                                                                "name": "token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1402,
                                                                                "src": "7868:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 1595,
                                                                            "name": "IERC20",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 819,
                                                                            "src": "7861:6:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                "typeString": "type(contract IERC20)"
                                                                            }
                                                                        },
                                                                        "id": 1597,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "7861:13:6",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                                            "typeString": "contract IERC20"
                                                                        }
                                                                    },
                                                                    "id": 1598,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "transfer",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 768,
                                                                    "src": "7861:22:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                                    }
                                                                },
                                                                "id": 1601,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7861:45:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 1602,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "7861:45:6"
                                                        },
                                                        {
                                                            "eventCall": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "5472656173757279",
                                                                        "id": 1604,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7943:10:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_6efca2866b731ee4984990bacad4cde10f1ef764fb54a5206bdfd291695b1a9b",
                                                                            "typeString": "literal_string \"Treasury\""
                                                                        },
                                                                        "value": "Treasury"
                                                                    },
                                                                    {
                                                                        "id": 1605,
                                                                        "name": "treasury",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 913,
                                                                        "src": "7955:8:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1606,
                                                                        "name": "token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1402,
                                                                        "src": "7965:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1607,
                                                                        "name": "operatorFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1435,
                                                                        "src": "7972:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 1608,
                                                                            "name": "block",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4294967292,
                                                                            "src": "7985:5:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_block",
                                                                                "typeString": "block"
                                                                            }
                                                                        },
                                                                        "id": 1609,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "timestamp",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "7985:15:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_6efca2866b731ee4984990bacad4cde10f1ef764fb54a5206bdfd291695b1a9b",
                                                                            "typeString": "literal_string \"Treasury\""
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 1603,
                                                                    "name": "RevenueShare",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 935,
                                                                    "src": "7930:12:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                    }
                                                                },
                                                                "id": 1610,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7930:71:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 1611,
                                                            "nodeType": "EmitStatement",
                                                            "src": "7925:76:6"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "id": 1792,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "transfer",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1405,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1400,
                                    "mutability": "mutable",
                                    "name": "fee",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1792,
                                    "src": "5757:11:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1399,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5757:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1402,
                                    "mutability": "mutable",
                                    "name": "token",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1792,
                                    "src": "5770:13:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1401,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5770:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1404,
                                    "mutability": "mutable",
                                    "name": "sharing",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1792,
                                    "src": "5785:15:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 1403,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5785:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5756:45:6"
                        },
                        "returnParameters": {
                            "id": 1406,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5810:0:6"
                        },
                        "scope": 1863,
                        "src": "5739:4211:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 1827,
                            "nodeType": "Block",
                            "src": "10201:347:6",
                            "statements": [
                                {
                                    "assignments": [
                                        1802
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1802,
                                            "mutability": "mutable",
                                            "name": "tokenDecimals",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1827,
                                            "src": "10293:21:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1801,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "10293:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1811,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 1806,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1796,
                                                                "src": "10331:5:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$819",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_contract$_IERC20_$819",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            ],
                                                            "id": 1805,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "10323:7:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 1804,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "10323:7:6",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 1807,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "10323:14:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 1803,
                                                    "name": "ERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 741,
                                                    "src": "10317:5:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_ERC20_$741_$",
                                                        "typeString": "type(contract ERC20)"
                                                    }
                                                },
                                                "id": 1808,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "10317:21:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ERC20_$741",
                                                    "typeString": "contract ERC20"
                                                }
                                            },
                                            "id": 1809,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "decimals",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 270,
                                            "src": "10317:30:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                                                "typeString": "function () view external returns (uint8)"
                                            }
                                        },
                                        "id": 1810,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10317:32:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "10293:56:6"
                                },
                                {
                                    "assignments": [
                                        1813
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1813,
                                            "mutability": "mutable",
                                            "name": "decimalsDifference",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1827,
                                            "src": "10427:26:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1812,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "10427:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1819,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "hexValue": "3138",
                                                "id": 1816,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10465:2:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_18_by_1",
                                                    "typeString": "int_const 18"
                                                },
                                                "value": "18"
                                            },
                                            {
                                                "id": 1817,
                                                "name": "tokenDecimals",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1802,
                                                "src": "10469:13:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_rational_18_by_1",
                                                    "typeString": "int_const 18"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1814,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5333,
                                                "src": "10456:4:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$5333_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 1815,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5143,
                                            "src": "10456:8:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1818,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10456:27:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "10427:56:6"
                                },
                                {
                                    "expression": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 1825,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "id": 1820,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3723,
                                                "src": "10501:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 1821,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "ONE",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3308,
                                            "src": "10501:14:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 1824,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "hexValue": "3130",
                                                "id": 1822,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10518:2:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                },
                                                "value": "10"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "**",
                                            "rightExpression": {
                                                "id": 1823,
                                                "name": "decimalsDifference",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1813,
                                                "src": "10522:18:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "10518:22:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "10501:39:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 1800,
                                    "id": 1826,
                                    "nodeType": "Return",
                                    "src": "10494:46:6"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1793,
                            "nodeType": "StructuredDocumentation",
                            "src": "9958:160:6",
                            "text": " @dev Returns a scaling factor that, when multiplied to a token amount for `token`, normalizes its balance as if\n it had 18 decimals."
                        },
                        "id": 1828,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_computeScalingFactor",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1797,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1796,
                                    "mutability": "mutable",
                                    "name": "token",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1828,
                                    "src": "10155:12:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$819",
                                        "typeString": "contract IERC20"
                                    },
                                    "typeName": {
                                        "id": 1795,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 1794,
                                            "name": "IERC20",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 819,
                                            "src": "10155:6:6"
                                        },
                                        "referencedDeclaration": 819,
                                        "src": "10155:6:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "10154:14:6"
                        },
                        "returnParameters": {
                            "id": 1800,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1799,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1828,
                                    "src": "10192:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1798,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10192:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "10191:9:6"
                        },
                        "scope": 1863,
                        "src": "10124:424:6",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 1844,
                            "nodeType": "Block",
                            "src": "10853:67:6",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 1840,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1831,
                                                "src": "10890:6:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 1841,
                                                "name": "scalingFactor",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1833,
                                                "src": "10898:13:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1838,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3723,
                                                "src": "10871:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 1839,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "divDown",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3504,
                                            "src": "10871:18:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1842,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10871:41:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 1837,
                                    "id": 1843,
                                    "nodeType": "Return",
                                    "src": "10864:48:6"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1829,
                            "nodeType": "StructuredDocumentation",
                            "src": "10556:196:6",
                            "text": " @dev Reverses the `scalingFactor` applied to `amount`, resulting in a smaller or equal value depending on\n whether it needed scaling or not. The result is rounded down."
                        },
                        "id": 1845,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_downscaleDown",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1834,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1831,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1845,
                                    "src": "10782:14:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1830,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10782:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1833,
                                    "mutability": "mutable",
                                    "name": "scalingFactor",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1845,
                                    "src": "10798:21:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1832,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10798:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "10781:39:6"
                        },
                        "returnParameters": {
                            "id": 1837,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1836,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1845,
                                    "src": "10844:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1835,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10844:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "10843:9:6"
                        },
                        "scope": 1863,
                        "src": "10758:162:6",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 1861,
                            "nodeType": "Block",
                            "src": "11177:496:6",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 1857,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1848,
                                                "src": "11643:6:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 1858,
                                                "name": "scalingFactor",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1850,
                                                "src": "11651:13:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1855,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3723,
                                                "src": "11624:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 1856,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mulDown",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3410,
                                            "src": "11624:18:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1859,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11624:41:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 1854,
                                    "id": 1860,
                                    "nodeType": "Return",
                                    "src": "11617:48:6"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1846,
                            "nodeType": "StructuredDocumentation",
                            "src": "10928:154:6",
                            "text": " @dev Applies `scalingFactor` to `amount`, resulting in a larger or equal value depending on whether it needed\n scaling or not."
                        },
                        "id": 1862,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_upscale",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1851,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1848,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1862,
                                    "src": "11106:14:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1847,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11106:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1850,
                                    "mutability": "mutable",
                                    "name": "scalingFactor",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1862,
                                    "src": "11122:21:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1849,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11122:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "11105:39:6"
                        },
                        "returnParameters": {
                            "id": 1854,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1853,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1862,
                                    "src": "11168:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1852,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11168:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "11167:9:6"
                        },
                        "scope": 1863,
                        "src": "11088:585:6",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    }
                ],
                "scope": 1864,
                "src": "584:11094:6"
            }
        ],
        "src": "110:11570:6"
    },
    "legacyAST": {
        "absolutePath": "project:/contracts/Distribution.sol",
        "exportedSymbols": {
            "Context": [
                866
            ],
            "Distribution": [
                1863
            ],
            "ERC20": [
                741
            ],
            "Errors": [
                3301
            ],
            "FixedPoint": [
                3723
            ],
            "IERC20": [
                819
            ],
            "IERC20Metadata": [
                844
            ],
            "ILiquidity": [
                2155
            ],
            "IMarketMaker": [
                2410
            ],
            "IOrder": [
                2476
            ],
            "ISettlor": [
                2583
            ],
            "ITrade": [
                2620
            ],
            "LogExpMath": [
                5021
            ],
            "Math": [
                5333
            ],
            "Ownable": [
                103
            ],
            "Pausable": [
                195
            ],
            "ViaFactory": [
                2745
            ],
            "_require": [
                2763,
                2782
            ],
            "_revert": [
                2794,
                2814
            ]
        },
        "id": 1864,
        "license": "UNLICENSED",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 868,
                "literals": [
                    "solidity",
                    "0.8",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "110:22:6"
            },
            {
                "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
                "file": "@openzeppelin/contracts/access/Ownable.sol",
                "id": 869,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 104,
                "src": "136:52:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/security/Pausable.sol",
                "file": "@openzeppelin/contracts/security/Pausable.sol",
                "id": 870,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 196,
                "src": "190:55:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                "id": 871,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 820,
                "src": "247:56:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                "id": 872,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 742,
                "src": "305:55:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/ViaFactory.sol",
                "file": "./interfaces/ViaFactory.sol",
                "id": 873,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 2746,
                "src": "364:37:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/ISettlor.sol",
                "file": "./interfaces/ISettlor.sol",
                "id": 874,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 2584,
                "src": "403:35:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/ILiquidity.sol",
                "file": "./interfaces/ILiquidity.sol",
                "id": 875,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 2156,
                "src": "440:37:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/IMarketMaker.sol",
                "file": "./interfaces/IMarketMaker.sol",
                "id": 876,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 2411,
                "src": "479:39:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/math/FixedPoint.sol",
                "file": "./math/FixedPoint.sol",
                "id": 877,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 3724,
                "src": "522:31:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/math/Math.sol",
                "file": "./math/Math.sol",
                "id": 878,
                "nodeType": "ImportDirective",
                "scope": 1864,
                "sourceUnit": 5334,
                "src": "555:25:6",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 879,
                            "name": "Ownable",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 103,
                            "src": "609:7:6"
                        },
                        "id": 880,
                        "nodeType": "InheritanceSpecifier",
                        "src": "609:7:6"
                    },
                    {
                        "baseName": {
                            "id": 881,
                            "name": "Pausable",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 195,
                            "src": "618:8:6"
                        },
                        "id": 882,
                        "nodeType": "InheritanceSpecifier",
                        "src": "618:8:6"
                    }
                ],
                "contractDependencies": [
                    103,
                    195,
                    866
                ],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 1863,
                "linearizedBaseContracts": [
                    1863,
                    195,
                    103,
                    866
                ],
                "name": "Distribution",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "id": 885,
                        "libraryName": {
                            "id": 883,
                            "name": "FixedPoint",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3723,
                            "src": "642:10:6"
                        },
                        "nodeType": "UsingForDirective",
                        "src": "636:29:6",
                        "typeName": {
                            "id": 884,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "657:7:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        }
                    },
                    {
                        "constant": false,
                        "id": 888,
                        "mutability": "mutable",
                        "name": "factory",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "673:26:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ViaFactory_$2745",
                            "typeString": "contract ViaFactory"
                        },
                        "typeName": {
                            "id": 887,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                                "id": 886,
                                "name": "ViaFactory",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2745,
                                "src": "673:10:6"
                            },
                            "referencedDeclaration": 2745,
                            "src": "673:10:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                "typeString": "contract ViaFactory"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 891,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "706:28:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ILiquidity_$2155",
                            "typeString": "contract ILiquidity"
                        },
                        "typeName": {
                            "id": 890,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                                "id": 889,
                                "name": "ILiquidity",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2155,
                                "src": "706:10:6"
                            },
                            "referencedDeclaration": 2155,
                            "src": "706:10:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidity_$2155",
                                "typeString": "contract ILiquidity"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 896,
                        "mutability": "mutable",
                        "name": "businesses",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "747:48:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(address => address[])"
                        },
                        "typeName": {
                            "id": 895,
                            "keyType": {
                                "id": 892,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "755:7:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "747:29:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                "typeString": "mapping(address => address[])"
                            },
                            "valueType": {
                                "baseType": {
                                    "id": 893,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "766:7:6",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "id": 894,
                                "nodeType": "ArrayTypeName",
                                "src": "766:9:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                    "typeString": "address[]"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 900,
                        "mutability": "mutable",
                        "name": "businessIndex",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "802:49:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                        },
                        "typeName": {
                            "id": 899,
                            "keyType": {
                                "id": 897,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "810:7:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "802:27:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                            },
                            "valueType": {
                                "id": 898,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "821:7:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 905,
                        "mutability": "mutable",
                        "name": "operators",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "858:47:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                            "typeString": "mapping(address => address[])"
                        },
                        "typeName": {
                            "id": 904,
                            "keyType": {
                                "id": 901,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "866:7:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "858:29:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                "typeString": "mapping(address => address[])"
                            },
                            "valueType": {
                                "baseType": {
                                    "id": 902,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "877:7:6",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "id": 903,
                                "nodeType": "ArrayTypeName",
                                "src": "877:9:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                    "typeString": "address[]"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 909,
                        "mutability": "mutable",
                        "name": "operatorIndex",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "912:49:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                        },
                        "typeName": {
                            "id": 908,
                            "keyType": {
                                "id": 906,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "920:7:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "912:27:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                            },
                            "valueType": {
                                "id": 907,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "931:7:6",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 911,
                        "mutability": "mutable",
                        "name": "founder",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "974:23:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 910,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "974:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 913,
                        "mutability": "mutable",
                        "name": "treasury",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "1004:24:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 912,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1004:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 915,
                        "mutability": "mutable",
                        "name": "liquidityContract",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "1035:33:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 914,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1035:7:6",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 917,
                        "mutability": "immutable",
                        "name": "businessShare",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "1077:39:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 916,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1077:7:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 919,
                        "mutability": "immutable",
                        "name": "founderShare",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "1123:38:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 918,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1123:7:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 921,
                        "mutability": "immutable",
                        "name": "investorShare",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "1168:39:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 920,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1168:7:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 923,
                        "mutability": "immutable",
                        "name": "operatorShare",
                        "nodeType": "VariableDeclaration",
                        "scope": 1863,
                        "src": "1214:39:6",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 922,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1214:7:6",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "anonymous": false,
                        "id": 935,
                        "name": "RevenueShare",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 934,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 925,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "shareholderType",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 935,
                                    "src": "1281:23:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 924,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1281:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 927,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "shareholder",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 935,
                                    "src": "1306:27:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 926,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1306:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 929,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "token",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 935,
                                    "src": "1335:13:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 928,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1335:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 931,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 935,
                                    "src": "1350:14:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 930,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1350:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 933,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "timestamp",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 935,
                                    "src": "1366:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 932,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1366:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1280:104:6"
                        },
                        "src": "1262:123:6"
                    },
                    {
                        "body": {
                            "id": 962,
                            "nodeType": "Block",
                            "src": "1501:151:6",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 948,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 946,
                                            "name": "businessShare",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 917,
                                            "src": "1513:13:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 947,
                                            "name": "_business",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 937,
                                            "src": "1529:9:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1513:25:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 949,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1513:25:6"
                                },
                                {
                                    "expression": {
                                        "id": 952,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 950,
                                            "name": "founderShare",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 919,
                                            "src": "1549:12:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 951,
                                            "name": "_royalty",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 939,
                                            "src": "1564:8:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1549:23:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 953,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1549:23:6"
                                },
                                {
                                    "expression": {
                                        "id": 956,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 954,
                                            "name": "investorShare",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 921,
                                            "src": "1583:13:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 955,
                                            "name": "_investor",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 941,
                                            "src": "1599:9:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1583:25:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 957,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1583:25:6"
                                },
                                {
                                    "expression": {
                                        "id": 960,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 958,
                                            "name": "operatorShare",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 923,
                                            "src": "1619:13:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 959,
                                            "name": "_operator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 943,
                                            "src": "1635:9:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "1619:25:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 961,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1619:25:6"
                                }
                            ]
                        },
                        "id": 963,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [],
                        "name": "",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 944,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 937,
                                    "mutability": "mutable",
                                    "name": "_business",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 963,
                                    "src": "1427:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 936,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1427:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 939,
                                    "mutability": "mutable",
                                    "name": "_royalty",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 963,
                                    "src": "1446:16:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 938,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1446:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 941,
                                    "mutability": "mutable",
                                    "name": "_investor",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 963,
                                    "src": "1464:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 940,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1464:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 943,
                                    "mutability": "mutable",
                                    "name": "_operator",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 963,
                                    "src": "1483:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 942,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1483:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1426:75:6"
                        },
                        "returnParameters": {
                            "id": 945,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1501:0:6"
                        },
                        "scope": 1863,
                        "src": "1415:237:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 980,
                            "nodeType": "Block",
                            "src": "1745:85:6",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "id": 974,
                                                "name": "businessShare",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 917,
                                                "src": "1764:13:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 975,
                                                "name": "founderShare",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 919,
                                                "src": "1779:12:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 976,
                                                "name": "investorShare",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 921,
                                                "src": "1793:13:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 977,
                                                "name": "operatorShare",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 923,
                                                "src": "1808:13:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "id": 978,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1763:59:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                            "typeString": "tuple(uint256,uint256,uint256,uint256)"
                                        }
                                    },
                                    "functionReturnParameters": 973,
                                    "id": 979,
                                    "nodeType": "Return",
                                    "src": "1756:66:6"
                                }
                            ]
                        },
                        "functionSelector": "7d8e9831",
                        "id": 981,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getRevenueShares",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 964,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1685:2:6"
                        },
                        "returnParameters": {
                            "id": 973,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 966,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 981,
                                    "src": "1710:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 965,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1710:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 968,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 981,
                                    "src": "1719:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 967,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1719:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 970,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 981,
                                    "src": "1728:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 969,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1728:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 972,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 981,
                                    "src": "1737:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 971,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1737:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1709:36:6"
                        },
                        "scope": 1863,
                        "src": "1660:170:6",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1018,
                            "nodeType": "Block",
                            "src": "1953:198:6",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 998,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 994,
                                            "name": "factory",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 888,
                                            "src": "1964:7:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                                "typeString": "contract ViaFactory"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "id": 996,
                                                    "name": "_viaFactory",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 983,
                                                    "src": "1985:11:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                ],
                                                "id": 995,
                                                "name": "ViaFactory",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2745,
                                                "src": "1974:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_ViaFactory_$2745_$",
                                                    "typeString": "type(contract ViaFactory)"
                                                }
                                            },
                                            "id": 997,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1974:23:6",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                                "typeString": "contract ViaFactory"
                                            }
                                        },
                                        "src": "1964:33:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                            "typeString": "contract ViaFactory"
                                        }
                                    },
                                    "id": 999,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1964:33:6"
                                },
                                {
                                    "expression": {
                                        "id": 1002,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 1000,
                                            "name": "founder",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 911,
                                            "src": "2008:7:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1001,
                                            "name": "_founder",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 985,
                                            "src": "2018:8:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2008:18:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1003,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2008:18:6"
                                },
                                {
                                    "expression": {
                                        "id": 1006,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 1004,
                                            "name": "treasury",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 913,
                                            "src": "2037:8:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1005,
                                            "name": "_treasury",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 987,
                                            "src": "2048:9:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2037:20:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1007,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2037:20:6"
                                },
                                {
                                    "expression": {
                                        "id": 1010,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 1008,
                                            "name": "liquidityContract",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 915,
                                            "src": "2068:17:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 1009,
                                            "name": "_liquidity",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 989,
                                            "src": "2088:10:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2068:30:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 1011,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2068:30:6"
                                },
                                {
                                    "expression": {
                                        "id": 1016,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 1012,
                                            "name": "liquidity",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 891,
                                            "src": "2109:9:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ILiquidity_$2155",
                                                "typeString": "contract ILiquidity"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "id": 1014,
                                                    "name": "_liquidity",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 989,
                                                    "src": "2132:10:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                ],
                                                "id": 1013,
                                                "name": "ILiquidity",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2155,
                                                "src": "2121:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_ILiquidity_$2155_$",
                                                    "typeString": "type(contract ILiquidity)"
                                                }
                                            },
                                            "id": 1015,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2121:22:6",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_ILiquidity_$2155",
                                                "typeString": "contract ILiquidity"
                                            }
                                        },
                                        "src": "2109:34:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ILiquidity_$2155",
                                            "typeString": "contract ILiquidity"
                                        }
                                    },
                                    "id": 1017,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2109:34:6"
                                }
                            ]
                        },
                        "functionSelector": "f8c8765e",
                        "id": 1019,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 992,
                                "modifierName": {
                                    "id": 991,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "1943:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "1943:9:6"
                            }
                        ],
                        "name": "initialize",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 990,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 983,
                                    "mutability": "mutable",
                                    "name": "_viaFactory",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1019,
                                    "src": "1858:19:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 982,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1858:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 985,
                                    "mutability": "mutable",
                                    "name": "_founder",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1019,
                                    "src": "1879:16:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 984,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1879:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 987,
                                    "mutability": "mutable",
                                    "name": "_treasury",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1019,
                                    "src": "1897:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 986,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1897:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 989,
                                    "mutability": "mutable",
                                    "name": "_liquidity",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1019,
                                    "src": "1916:18:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 988,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1916:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1857:78:6"
                        },
                        "returnParameters": {
                            "id": 993,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1953:0:6"
                        },
                        "scope": 1863,
                        "src": "1838:313:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 1086,
                            "nodeType": "Block",
                            "src": "2357:505:6",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        },
                                        "id": 1032,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1030,
                                            "name": "_type",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1021,
                                            "src": "2371:5:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "427573696e657373",
                                            "id": 1031,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2378:10:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_da4fd9fa774c576c08e67dcb6bb94d647b4bc97f62502f1e2b62c2ba20f879cc",
                                                "typeString": "literal_string \"Business\""
                                            },
                                            "value": "Business"
                                        },
                                        "src": "2371:17:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "id": 1059,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 1057,
                                                "name": "_type",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1021,
                                                "src": "2621:5:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "hexValue": "4f70657261746f72",
                                                "id": 1058,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2628:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_71b43d66088715f0148d07b45a38f510fffe2d5fd108ee7701691e554738d61b",
                                                    "typeString": "literal_string \"Operator\""
                                                },
                                                "value": "Operator"
                                            },
                                            "src": "2621:17:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "id": 1084,
                                        "nodeType": "IfStatement",
                                        "src": "2618:233:6",
                                        "trueBody": {
                                            "id": 1083,
                                            "nodeType": "Block",
                                            "src": "2639:212:6",
                                            "statements": [
                                                {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1064,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "baseExpression": {
                                                                "id": 1060,
                                                                "name": "operatorIndex",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 909,
                                                                "src": "2657:13:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                    "typeString": "mapping(address => uint256)"
                                                                }
                                                            },
                                                            "id": 1062,
                                                            "indexExpression": {
                                                                "id": 1061,
                                                                "name": "_shareholder",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1023,
                                                                "src": "2671:12:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "2657:27:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 1063,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2688:1:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "2657:32:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "id": 1082,
                                                    "nodeType": "IfStatement",
                                                    "src": "2654:186:6",
                                                    "trueBody": {
                                                        "id": 1081,
                                                        "nodeType": "Block",
                                                        "src": "2690:150:6",
                                                        "statements": [
                                                            {
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 1069,
                                                                            "name": "_shareholder",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1023,
                                                                            "src": "2735:12:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1065,
                                                                                "name": "operators",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 905,
                                                                                "src": "2709:9:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                }
                                                                            },
                                                                            "id": 1067,
                                                                            "indexExpression": {
                                                                                "id": 1066,
                                                                                "name": "_currency",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1025,
                                                                                "src": "2719:9:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "2709:20:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                "typeString": "address[] storage ref"
                                                                            }
                                                                        },
                                                                        "id": 1068,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "push",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "2709:25:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                                                                            "typeString": "function (address)"
                                                                        }
                                                                    },
                                                                    "id": 1070,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "2709:39:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_tuple$__$",
                                                                        "typeString": "tuple()"
                                                                    }
                                                                },
                                                                "id": 1071,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "2709:39:6"
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 1079,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftHandSide": {
                                                                        "baseExpression": {
                                                                            "id": 1072,
                                                                            "name": "operatorIndex",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 909,
                                                                            "src": "2767:13:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                                "typeString": "mapping(address => uint256)"
                                                                            }
                                                                        },
                                                                        "id": 1074,
                                                                        "indexExpression": {
                                                                            "id": 1073,
                                                                            "name": "_shareholder",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1023,
                                                                            "src": "2781:12:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": true,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "2767:27:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "Assignment",
                                                                    "operator": "=",
                                                                    "rightHandSide": {
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1075,
                                                                                "name": "operators",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 905,
                                                                                "src": "2797:9:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                }
                                                                            },
                                                                            "id": 1077,
                                                                            "indexExpression": {
                                                                                "id": 1076,
                                                                                "name": "_currency",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1025,
                                                                                "src": "2807:9:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "2797:20:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                "typeString": "address[] storage ref"
                                                                            }
                                                                        },
                                                                        "id": 1078,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "length",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "2797:27:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "2767:57:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 1080,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "2767:57:6"
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    "id": 1085,
                                    "nodeType": "IfStatement",
                                    "src": "2368:483:6",
                                    "trueBody": {
                                        "id": 1056,
                                        "nodeType": "Block",
                                        "src": "2389:214:6",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1037,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "baseExpression": {
                                                            "id": 1033,
                                                            "name": "businessIndex",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 900,
                                                            "src": "2407:13:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 1035,
                                                        "indexExpression": {
                                                            "id": 1034,
                                                            "name": "_shareholder",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1023,
                                                            "src": "2421:12:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "2407:27:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1036,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "2438:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "2407:32:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1055,
                                                "nodeType": "IfStatement",
                                                "src": "2404:188:6",
                                                "trueBody": {
                                                    "id": 1054,
                                                    "nodeType": "Block",
                                                    "src": "2440:152:6",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 1042,
                                                                        "name": "_shareholder",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1023,
                                                                        "src": "2486:12:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "baseExpression": {
                                                                            "id": 1038,
                                                                            "name": "businesses",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 896,
                                                                            "src": "2459:10:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                "typeString": "mapping(address => address[] storage ref)"
                                                                            }
                                                                        },
                                                                        "id": 1040,
                                                                        "indexExpression": {
                                                                            "id": 1039,
                                                                            "name": "_currency",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1025,
                                                                            "src": "2470:9:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "2459:21:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                            "typeString": "address[] storage ref"
                                                                        }
                                                                    },
                                                                    "id": 1041,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "push",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "2459:26:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                                                                        "typeString": "function (address)"
                                                                    }
                                                                },
                                                                "id": 1043,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "2459:40:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 1044,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "2459:40:6"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 1052,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "id": 1045,
                                                                        "name": "businessIndex",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 900,
                                                                        "src": "2518:13:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                            "typeString": "mapping(address => uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1047,
                                                                    "indexExpression": {
                                                                        "id": 1046,
                                                                        "name": "_shareholder",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1023,
                                                                        "src": "2532:12:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "2518:27:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "expression": {
                                                                        "baseExpression": {
                                                                            "id": 1048,
                                                                            "name": "businesses",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 896,
                                                                            "src": "2548:10:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                "typeString": "mapping(address => address[] storage ref)"
                                                                            }
                                                                        },
                                                                        "id": 1050,
                                                                        "indexExpression": {
                                                                            "id": 1049,
                                                                            "name": "_currency",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1025,
                                                                            "src": "2559:9:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "2548:21:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                            "typeString": "address[] storage ref"
                                                                        }
                                                                    },
                                                                    "id": 1051,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "length",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "2548:28:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "2518:58:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1053,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "2518:58:6"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "functionSelector": "0ab36de2",
                        "id": 1087,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1028,
                                "modifierName": {
                                    "id": 1027,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "2347:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "2347:9:6"
                            }
                        ],
                        "name": "addRevenueShareholder",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1026,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1021,
                                    "mutability": "mutable",
                                    "name": "_type",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1087,
                                    "src": "2282:13:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 1020,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2282:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1023,
                                    "mutability": "mutable",
                                    "name": "_shareholder",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1087,
                                    "src": "2297:20:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1022,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2297:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1025,
                                    "mutability": "mutable",
                                    "name": "_currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1087,
                                    "src": "2319:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1024,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2319:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2281:56:6"
                        },
                        "returnParameters": {
                            "id": 1029,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2357:0:6"
                        },
                        "scope": 1863,
                        "src": "2251:611:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1115,
                            "nodeType": "Block",
                            "src": "3026:160:6",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        },
                                        "id": 1101,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1099,
                                            "name": "_type",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1089,
                                            "src": "3040:5:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "427573696e657373",
                                            "id": 1100,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3047:10:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_da4fd9fa774c576c08e67dcb6bb94d647b4bc97f62502f1e2b62c2ba20f879cc",
                                                "typeString": "literal_string \"Business\""
                                            },
                                            "value": "Business"
                                        },
                                        "src": "3040:17:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "id": 1108,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 1106,
                                                "name": "_type",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1089,
                                                "src": "3119:5:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "hexValue": "4f70657261746f72",
                                                "id": 1107,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3126:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_71b43d66088715f0148d07b45a38f510fffe2d5fd108ee7701691e554738d61b",
                                                    "typeString": "literal_string \"Operator\""
                                                },
                                                "value": "Operator"
                                            },
                                            "src": "3119:17:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "id": 1113,
                                        "nodeType": "IfStatement",
                                        "src": "3116:62:6",
                                        "trueBody": {
                                            "expression": {
                                                "baseExpression": {
                                                    "id": 1109,
                                                    "name": "operators",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 905,
                                                    "src": "3158:9:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                        "typeString": "mapping(address => address[] storage ref)"
                                                    }
                                                },
                                                "id": 1111,
                                                "indexExpression": {
                                                    "id": 1110,
                                                    "name": "_currency",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1091,
                                                    "src": "3168:9:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "3158:20:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                    "typeString": "address[] storage ref"
                                                }
                                            },
                                            "functionReturnParameters": 1098,
                                            "id": 1112,
                                            "nodeType": "Return",
                                            "src": "3151:27:6"
                                        }
                                    },
                                    "id": 1114,
                                    "nodeType": "IfStatement",
                                    "src": "3037:141:6",
                                    "trueBody": {
                                        "expression": {
                                            "baseExpression": {
                                                "id": 1102,
                                                "name": "businesses",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 896,
                                                "src": "3079:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                    "typeString": "mapping(address => address[] storage ref)"
                                                }
                                            },
                                            "id": 1104,
                                            "indexExpression": {
                                                "id": 1103,
                                                "name": "_currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1091,
                                                "src": "3090:9:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "3079:21:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                "typeString": "address[] storage ref"
                                            }
                                        },
                                        "functionReturnParameters": 1098,
                                        "id": 1105,
                                        "nodeType": "Return",
                                        "src": "3072:28:6"
                                    }
                                }
                            ]
                        },
                        "functionSelector": "e081d92f",
                        "id": 1116,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1094,
                                "modifierName": {
                                    "id": 1093,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "2978:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "2978:9:6"
                            }
                        ],
                        "name": "getRevenueShareholders",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1092,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1089,
                                    "mutability": "mutable",
                                    "name": "_type",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1116,
                                    "src": "2930:13:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 1088,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2930:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1091,
                                    "mutability": "mutable",
                                    "name": "_currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1116,
                                    "src": "2945:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1090,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2945:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2929:34:6"
                        },
                        "returnParameters": {
                            "id": 1098,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1097,
                                    "mutability": "mutable",
                                    "name": "shareholders",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1116,
                                    "src": "2996:29:6",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 1095,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2996:7:6",
                                            "stateMutability": "nonpayable",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "id": 1096,
                                        "nodeType": "ArrayTypeName",
                                        "src": "2996:9:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                            "typeString": "address[]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2995:31:6"
                        },
                        "scope": 1863,
                        "src": "2898:288:6",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1153,
                            "nodeType": "Block",
                            "src": "3313:218:6",
                            "statements": [
                                {
                                    "assignments": [
                                        1126
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1126,
                                            "mutability": "mutable",
                                            "name": "cashToken",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1153,
                                            "src": "3324:17:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 1125,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3324:7:6",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1132,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "hexValue": "56696143617368",
                                                "id": 1129,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3362:9:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_3c30a0e8e1c782e31ccb8fae07c6066a8040aa799f508e8cb657fa62c08db465",
                                                    "typeString": "literal_string \"ViaCash\""
                                                },
                                                "value": "ViaCash"
                                            },
                                            {
                                                "id": 1130,
                                                "name": "_currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1118,
                                                "src": "3373:9:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_3c30a0e8e1c782e31ccb8fae07c6066a8040aa799f508e8cb657fa62c08db465",
                                                    "typeString": "literal_string \"ViaCash\""
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1127,
                                                "name": "factory",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 888,
                                                "src": "3344:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                                    "typeString": "contract ViaFactory"
                                                }
                                            },
                                            "id": 1128,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getIssuer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2666,
                                            "src": "3344:17:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                                "typeString": "function (bytes32,bytes32) view external returns (address)"
                                            }
                                        },
                                        "id": 1131,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3344:39:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3324:59:6"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 1138,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1133,
                                            "name": "cashToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1126,
                                            "src": "3397:9:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "hexValue": "307830",
                                                    "id": 1136,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3416:3:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0x0"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    }
                                                ],
                                                "id": 1135,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "3408:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 1134,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3408:7:6",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 1137,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3408:12:6",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "3397:23:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "expression": {
                                            "hexValue": "30",
                                            "id": 1150,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3522:1:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "functionReturnParameters": 1124,
                                        "id": 1151,
                                        "nodeType": "Return",
                                        "src": "3515:8:6"
                                    },
                                    "id": 1152,
                                    "nodeType": "IfStatement",
                                    "src": "3394:129:6",
                                    "trueBody": {
                                        "expression": {
                                            "components": [
                                                {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1145,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967268,
                                                                    "src": "3479:4:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                        "typeString": "contract Distribution"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                        "typeString": "contract Distribution"
                                                                    }
                                                                ],
                                                                "id": 1144,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "3471:7:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1143,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "3471:7:6",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1146,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3471:13:6",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 1140,
                                                                    "name": "cashToken",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1126,
                                                                    "src": "3450:9:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 1139,
                                                                "name": "IERC20",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 819,
                                                                "src": "3443:6:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                    "typeString": "type(contract IERC20)"
                                                                }
                                                            },
                                                            "id": 1141,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3443:17:6",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$819",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "id": 1142,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "balanceOf",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 758,
                                                        "src": "3443:27:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                            "typeString": "function (address) view external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 1147,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3443:42:6",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 1148,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "3442:44:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "functionReturnParameters": 1124,
                                        "id": 1149,
                                        "nodeType": "Return",
                                        "src": "3435:51:6"
                                    }
                                }
                            ]
                        },
                        "functionSelector": "4fb0b304",
                        "id": 1154,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1121,
                                "modifierName": {
                                    "id": 1120,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "3287:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "3287:9:6"
                            }
                        ],
                        "name": "getPaymentFeeCollected",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1119,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1118,
                                    "mutability": "mutable",
                                    "name": "_currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1154,
                                    "src": "3254:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 1117,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3254:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3253:19:6"
                        },
                        "returnParameters": {
                            "id": 1124,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1123,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1154,
                                    "src": "3305:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1122,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3305:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3304:9:6"
                        },
                        "scope": 1863,
                        "src": "3222:309:6",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1191,
                            "nodeType": "Block",
                            "src": "3665:218:6",
                            "statements": [
                                {
                                    "assignments": [
                                        1164
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1164,
                                            "mutability": "mutable",
                                            "name": "bondToken",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1191,
                                            "src": "3676:17:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 1163,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "3676:7:6",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1170,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "hexValue": "566961426f6e64",
                                                "id": 1167,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3714:9:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_52973aa3d1d0b9b2038bddf6fa0399136f1ab1c5f89b7edd623ff24875d0ed1f",
                                                    "typeString": "literal_string \"ViaBond\""
                                                },
                                                "value": "ViaBond"
                                            },
                                            {
                                                "id": 1168,
                                                "name": "_currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1156,
                                                "src": "3725:9:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_52973aa3d1d0b9b2038bddf6fa0399136f1ab1c5f89b7edd623ff24875d0ed1f",
                                                    "typeString": "literal_string \"ViaBond\""
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1165,
                                                "name": "factory",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 888,
                                                "src": "3696:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                                    "typeString": "contract ViaFactory"
                                                }
                                            },
                                            "id": 1166,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getIssuer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2666,
                                            "src": "3696:17:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                                "typeString": "function (bytes32,bytes32) view external returns (address)"
                                            }
                                        },
                                        "id": 1169,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3696:39:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3676:59:6"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 1176,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1171,
                                            "name": "bondToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1164,
                                            "src": "3749:9:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "hexValue": "307830",
                                                    "id": 1174,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3768:3:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0x0"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    }
                                                ],
                                                "id": 1173,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "3760:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 1172,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3760:7:6",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 1175,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3760:12:6",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "3749:23:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "expression": {
                                            "hexValue": "30",
                                            "id": 1188,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3874:1:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "functionReturnParameters": 1162,
                                        "id": 1189,
                                        "nodeType": "Return",
                                        "src": "3867:8:6"
                                    },
                                    "id": 1190,
                                    "nodeType": "IfStatement",
                                    "src": "3746:129:6",
                                    "trueBody": {
                                        "expression": {
                                            "components": [
                                                {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1183,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4294967268,
                                                                    "src": "3831:4:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                        "typeString": "contract Distribution"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                        "typeString": "contract Distribution"
                                                                    }
                                                                ],
                                                                "id": 1182,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "3823:7:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1181,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "3823:7:6",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1184,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3823:13:6",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 1178,
                                                                    "name": "bondToken",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1164,
                                                                    "src": "3802:9:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 1177,
                                                                "name": "IERC20",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 819,
                                                                "src": "3795:6:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                    "typeString": "type(contract IERC20)"
                                                                }
                                                            },
                                                            "id": 1179,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3795:17:6",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$819",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "id": 1180,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "balanceOf",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 758,
                                                        "src": "3795:27:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                            "typeString": "function (address) view external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 1185,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3795:42:6",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 1186,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "3794:44:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "functionReturnParameters": 1162,
                                        "id": 1187,
                                        "nodeType": "Return",
                                        "src": "3787:51:6"
                                    }
                                }
                            ]
                        },
                        "functionSelector": "3d66d8a8",
                        "id": 1192,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1159,
                                "modifierName": {
                                    "id": 1158,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "3639:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "3639:9:6"
                            }
                        ],
                        "name": "getLoanFeeCollected",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1157,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1156,
                                    "mutability": "mutable",
                                    "name": "_currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1192,
                                    "src": "3606:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 1155,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3606:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3605:19:6"
                        },
                        "returnParameters": {
                            "id": 1162,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1161,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1192,
                                    "src": "3657:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1160,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3657:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3656:9:6"
                        },
                        "scope": 1863,
                        "src": "3577:306:6",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1211,
                            "nodeType": "Block",
                            "src": "4030:82:6",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 1207,
                                                        "name": "_token",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1196,
                                                        "src": "4096:6:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 1204,
                                                                "name": "_platform",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1194,
                                                                "src": "4062:9:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1203,
                                                            "name": "IMarketMaker",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2410,
                                                            "src": "4049:12:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IMarketMaker_$2410_$",
                                                                "typeString": "type(contract IMarketMaker)"
                                                            }
                                                        },
                                                        "id": 1205,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4049:23:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IMarketMaker_$2410",
                                                            "typeString": "contract IMarketMaker"
                                                        }
                                                    },
                                                    "id": 1206,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "getIssuingFeeCollected",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2409,
                                                    "src": "4049:46:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                                                        "typeString": "function (address) external returns (uint256)"
                                                    }
                                                },
                                                "id": 1208,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4049:54:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "id": 1209,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "4048:56:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 1202,
                                    "id": 1210,
                                    "nodeType": "Return",
                                    "src": "4041:63:6"
                                }
                            ]
                        },
                        "functionSelector": "50ed5a0b",
                        "id": 1212,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1199,
                                "modifierName": {
                                    "id": 1198,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "4004:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4004:9:6"
                            }
                        ],
                        "name": "getIssuingFeeCollected",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1197,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1194,
                                    "mutability": "mutable",
                                    "name": "_platform",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1212,
                                    "src": "3960:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1193,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3960:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1196,
                                    "mutability": "mutable",
                                    "name": "_token",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1212,
                                    "src": "3979:14:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1195,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3979:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3959:35:6"
                        },
                        "returnParameters": {
                            "id": 1202,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1201,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1212,
                                    "src": "4022:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1200,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4022:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4021:9:6"
                        },
                        "scope": 1863,
                        "src": "3928:184:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1231,
                            "nodeType": "Block",
                            "src": "4260:78:6",
                            "statements": [
                                {
                                    "expression": {
                                        "components": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 1227,
                                                        "name": "_token",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1216,
                                                        "src": "4322:6:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 1224,
                                                                "name": "_platform",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1214,
                                                                "src": "4288:9:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1223,
                                                            "name": "ISettlor",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2583,
                                                            "src": "4279:8:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_ISettlor_$2583_$",
                                                                "typeString": "type(contract ISettlor)"
                                                            }
                                                        },
                                                        "id": 1225,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4279:19:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_ISettlor_$2583",
                                                            "typeString": "contract ISettlor"
                                                        }
                                                    },
                                                    "id": 1226,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "getTradingFeeCollected",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2582,
                                                    "src": "4279:42:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                                                        "typeString": "function (address) external returns (uint256)"
                                                    }
                                                },
                                                "id": 1228,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4279:50:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "id": 1229,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "4278:52:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 1222,
                                    "id": 1230,
                                    "nodeType": "Return",
                                    "src": "4271:59:6"
                                }
                            ]
                        },
                        "functionSelector": "7507f8d0",
                        "id": 1232,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1219,
                                "modifierName": {
                                    "id": 1218,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "4234:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4234:9:6"
                            }
                        ],
                        "name": "getTradingFeeCollected",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1217,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1214,
                                    "mutability": "mutable",
                                    "name": "_platform",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1232,
                                    "src": "4190:17:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1213,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4190:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1216,
                                    "mutability": "mutable",
                                    "name": "_token",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1232,
                                    "src": "4209:14:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1215,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4209:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4189:35:6"
                        },
                        "returnParameters": {
                            "id": 1222,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1221,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1232,
                                    "src": "4252:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1220,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4252:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4251:9:6"
                        },
                        "scope": 1863,
                        "src": "4158:180:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1303,
                            "nodeType": "Block",
                            "src": "4446:452:6",
                            "statements": [
                                {
                                    "assignments": [
                                        1242
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1242,
                                            "mutability": "mutable",
                                            "name": "tokens",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1303,
                                            "src": "4457:32:6",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct ILiquidity.token[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 1240,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 1239,
                                                        "name": "ILiquidity.token",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1979,
                                                        "src": "4457:16:6"
                                                    },
                                                    "referencedDeclaration": 1979,
                                                    "src": "4457:16:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_token_$1979_storage_ptr",
                                                        "typeString": "struct ILiquidity.token"
                                                    }
                                                },
                                                "id": 1241,
                                                "nodeType": "ArrayTypeName",
                                                "src": "4457:18:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_token_$1979_storage_$dyn_storage_ptr",
                                                    "typeString": "struct ILiquidity.token[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1246,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "id": 1243,
                                                "name": "liquidity",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 891,
                                                "src": "4492:9:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ILiquidity_$2155",
                                                    "typeString": "contract ILiquidity"
                                                }
                                            },
                                            "id": 1244,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getSupportedTokens",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2019,
                                            "src": "4492:28:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr_$",
                                                "typeString": "function () view external returns (struct ILiquidity.token memory[] memory)"
                                            }
                                        },
                                        "id": 1245,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4492:30:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct ILiquidity.token memory[] memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4457:65:6"
                                },
                                {
                                    "body": {
                                        "id": 1301,
                                        "nodeType": "Block",
                                        "src": "4579:312:6",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1259
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1259,
                                                        "mutability": "mutable",
                                                        "name": "fee",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1301,
                                                        "src": "4594:11:6",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1258,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4594:7:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1260,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4594:11:6"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "id": 1269,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 1261,
                                                                "name": "tokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1242,
                                                                "src": "4623:6:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr",
                                                                    "typeString": "struct ILiquidity.token memory[] memory"
                                                                }
                                                            },
                                                            "id": 1263,
                                                            "indexExpression": {
                                                                "id": 1262,
                                                                "name": "i",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1248,
                                                                "src": "4630:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "4623:9:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_token_$1979_memory_ptr",
                                                                "typeString": "struct ILiquidity.token memory"
                                                            }
                                                        },
                                                        "id": 1264,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "tokenAddress",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1978,
                                                        "src": "4623:22:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "307830",
                                                                "id": 1267,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "4657:3:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0x0"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                }
                                                            ],
                                                            "id": 1266,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "4649:7:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 1265,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "4649:7:6",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 1268,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4649:12:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "4623:38:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1300,
                                                "nodeType": "IfStatement",
                                                "src": "4620:260:6",
                                                "trueBody": {
                                                    "id": 1299,
                                                    "nodeType": "Block",
                                                    "src": "4662:218:6",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 1283,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 1270,
                                                                    "name": "fee",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1259,
                                                                    "src": "4681:3:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1280,
                                                                                    "name": "this",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 4294967268,
                                                                                    "src": "4736:4:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                                        "typeString": "contract Distribution"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                                        "typeString": "contract Distribution"
                                                                                    }
                                                                                ],
                                                                                "id": 1279,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                "src": "4728:7:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                                    "typeString": "type(address)"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 1278,
                                                                                    "name": "address",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "4728:7:6",
                                                                                    "typeDescriptions": {}
                                                                                }
                                                                            },
                                                                            "id": 1281,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "4728:13:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "expression": {
                                                                                        "baseExpression": {
                                                                                            "id": 1272,
                                                                                            "name": "tokens",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1242,
                                                                                            "src": "4694:6:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr",
                                                                                                "typeString": "struct ILiquidity.token memory[] memory"
                                                                                            }
                                                                                        },
                                                                                        "id": 1274,
                                                                                        "indexExpression": {
                                                                                            "id": 1273,
                                                                                            "name": "i",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1248,
                                                                                            "src": "4701:1:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "4694:9:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_struct$_token_$1979_memory_ptr",
                                                                                            "typeString": "struct ILiquidity.token memory"
                                                                                        }
                                                                                    },
                                                                                    "id": 1275,
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "tokenAddress",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 1978,
                                                                                    "src": "4694:22:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                ],
                                                                                "id": 1271,
                                                                                "name": "IERC20",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 819,
                                                                                "src": "4687:6:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                    "typeString": "type(contract IERC20)"
                                                                                }
                                                                            },
                                                                            "id": 1276,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "4687:30:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$819",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 1277,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "balanceOf",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 758,
                                                                        "src": "4687:40:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                                            "typeString": "function (address) view external returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1282,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "4687:55:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "4681:61:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1284,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4681:61:6"
                                                        },
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1287,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 1285,
                                                                    "name": "fee",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1259,
                                                                    "src": "4764:3:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "!=",
                                                                "rightExpression": {
                                                                    "hexValue": "30",
                                                                    "id": 1286,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "4769:1:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                },
                                                                "src": "4764:6:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 1298,
                                                            "nodeType": "IfStatement",
                                                            "src": "4761:104:6",
                                                            "trueBody": {
                                                                "id": 1297,
                                                                "nodeType": "Block",
                                                                "src": "4771:94:6",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1289,
                                                                                    "name": "fee",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1259,
                                                                                    "src": "4803:3:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "expression": {
                                                                                        "baseExpression": {
                                                                                            "id": 1290,
                                                                                            "name": "tokens",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1242,
                                                                                            "src": "4808:6:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr",
                                                                                                "typeString": "struct ILiquidity.token memory[] memory"
                                                                                            }
                                                                                        },
                                                                                        "id": 1292,
                                                                                        "indexExpression": {
                                                                                            "id": 1291,
                                                                                            "name": "i",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1248,
                                                                                            "src": "4815:1:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "4808:9:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_struct$_token_$1979_memory_ptr",
                                                                                            "typeString": "struct ILiquidity.token memory"
                                                                                        }
                                                                                    },
                                                                                    "id": 1293,
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "tokenAddress",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 1978,
                                                                                    "src": "4808:22:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "hexValue": "636f6c6c656374696f6e",
                                                                                    "id": 1294,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "string",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "4832:12:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_stringliteral_a77d3cda10319ef1453ed69bfa8aef4c4c554a589d68a43d2e3eb63639bb3d85",
                                                                                        "typeString": "literal_string \"collection\""
                                                                                    },
                                                                                    "value": "collection"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_stringliteral_a77d3cda10319ef1453ed69bfa8aef4c4c554a589d68a43d2e3eb63639bb3d85",
                                                                                        "typeString": "literal_string \"collection\""
                                                                                    }
                                                                                ],
                                                                                "id": 1288,
                                                                                "name": "transfer",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1792,
                                                                                "src": "4794:8:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$__$",
                                                                                    "typeString": "function (uint256,address,bytes32)"
                                                                                }
                                                                            },
                                                                            "id": 1295,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "4794:51:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 1296,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "4794:51:6"
                                                                    }
                                                                ]
                                                            }
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 1254,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1251,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1248,
                                            "src": "4558:1:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 1252,
                                                "name": "tokens",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1242,
                                                "src": "4560:6:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_token_$1979_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct ILiquidity.token memory[] memory"
                                                }
                                            },
                                            "id": 1253,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "4560:13:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "4558:15:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1302,
                                    "initializationExpression": {
                                        "assignments": [
                                            1248
                                        ],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 1248,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1302,
                                                "src": "4545:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1247,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4545:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 1250,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 1249,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4555:1:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "4545:11:6"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 1256,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "4575:3:6",
                                            "subExpression": {
                                                "id": 1255,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1248,
                                                "src": "4575:1:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 1257,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4575:3:6"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "4541:350:6"
                                }
                            ]
                        },
                        "functionSelector": "ff43df4e",
                        "id": 1304,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1235,
                                "modifierName": {
                                    "id": 1234,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "4436:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4436:9:6"
                            }
                        ],
                        "name": "shareCollection",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1233,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4424:2:6"
                        },
                        "returnParameters": {
                            "id": 1236,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4446:0:6"
                        },
                        "scope": 1863,
                        "src": "4400:498:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1397,
                            "nodeType": "Block",
                            "src": "4990:702:6",
                            "statements": [
                                {
                                    "assignments": [
                                        1310
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1310,
                                            "mutability": "mutable",
                                            "name": "tokenCount",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1397,
                                            "src": "5001:18:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1309,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5001:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1314,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "id": 1311,
                                                "name": "factory",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 888,
                                                "src": "5022:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                                    "typeString": "contract ViaFactory"
                                                }
                                            },
                                            "id": 1312,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getTokenCount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2627,
                                            "src": "5022:21:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                "typeString": "function () view external returns (uint256)"
                                            }
                                        },
                                        "id": 1313,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5022:23:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5001:44:6"
                                },
                                {
                                    "body": {
                                        "id": 1395,
                                        "nodeType": "Block",
                                        "src": "5088:597:6",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1326
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1326,
                                                        "mutability": "mutable",
                                                        "name": "token",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1395,
                                                        "src": "5103:13:6",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 1325,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5103:7:6",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1331,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1329,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1316,
                                                            "src": "5136:1:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1327,
                                                            "name": "factory",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 888,
                                                            "src": "5119:7:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                                                "typeString": "contract ViaFactory"
                                                            }
                                                        },
                                                        "id": 1328,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "getToken",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2634,
                                                        "src": "5119:16:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                                                            "typeString": "function (uint256) view external returns (address)"
                                                        }
                                                    },
                                                    "id": 1330,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5119:19:6",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5103:35:6"
                                            },
                                            {
                                                "assignments": [
                                                    null,
                                                    1333
                                                ],
                                                "declarations": [
                                                    null,
                                                    {
                                                        "constant": false,
                                                        "id": 1333,
                                                        "mutability": "mutable",
                                                        "name": "tokenType",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1395,
                                                        "src": "5157:17:6",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 1332,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5157:7:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1338,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1336,
                                                            "name": "token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1326,
                                                            "src": "5201:5:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1334,
                                                            "name": "factory",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 888,
                                                            "src": "5178:7:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ViaFactory_$2745",
                                                                "typeString": "contract ViaFactory"
                                                            }
                                                        },
                                                        "id": 1335,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "getNameAndType",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2657,
                                                        "src": "5178:22:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bytes32_$_t_bytes32_$",
                                                            "typeString": "function (address) view external returns (bytes32,bytes32)"
                                                        }
                                                    },
                                                    "id": 1337,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5178:29:6",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                                                        "typeString": "tuple(bytes32,bytes32)"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5153:54:6"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    },
                                                    "id": 1341,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1339,
                                                        "name": "tokenType",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1333,
                                                        "src": "5238:9:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "hexValue": "56696143617368",
                                                        "id": 1340,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "string",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "5249:9:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_stringliteral_3c30a0e8e1c782e31ccb8fae07c6066a8040aa799f508e8cb657fa62c08db465",
                                                            "typeString": "literal_string \"ViaCash\""
                                                        },
                                                        "value": "ViaCash"
                                                    },
                                                    "src": "5238:20:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "id": 1368,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1366,
                                                            "name": "tokenType",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1333,
                                                            "src": "5467:9:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "hexValue": "566961426f6e64",
                                                            "id": 1367,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5478:9:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_52973aa3d1d0b9b2038bddf6fa0399136f1ab1c5f89b7edd623ff24875d0ed1f",
                                                                "typeString": "literal_string \"ViaBond\""
                                                            },
                                                            "value": "ViaBond"
                                                        },
                                                        "src": "5467:20:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "id": 1393,
                                                    "nodeType": "IfStatement",
                                                    "src": "5464:210:6",
                                                    "trueBody": {
                                                        "id": 1392,
                                                        "nodeType": "Block",
                                                        "src": "5488:186:6",
                                                        "statements": [
                                                            {
                                                                "assignments": [
                                                                    1370
                                                                ],
                                                                "declarations": [
                                                                    {
                                                                        "constant": false,
                                                                        "id": 1370,
                                                                        "mutability": "mutable",
                                                                        "name": "fee",
                                                                        "nodeType": "VariableDeclaration",
                                                                        "scope": 1392,
                                                                        "src": "5507:11:6",
                                                                        "stateVariable": false,
                                                                        "storageLocation": "default",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 1369,
                                                                            "name": "uint256",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "5507:7:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "visibility": "internal"
                                                                    }
                                                                ],
                                                                "id": 1380,
                                                                "initialValue": {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1377,
                                                                                    "name": "this",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 4294967268,
                                                                                    "src": "5553:4:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                                        "typeString": "contract Distribution"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                                        "typeString": "contract Distribution"
                                                                                    }
                                                                                ],
                                                                                "id": 1376,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                "src": "5545:7:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                                    "typeString": "type(address)"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 1375,
                                                                                    "name": "address",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "5545:7:6",
                                                                                    "typeDescriptions": {}
                                                                                }
                                                                            },
                                                                            "id": 1378,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "5545:13:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1372,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1326,
                                                                                    "src": "5528:5:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                ],
                                                                                "id": 1371,
                                                                                "name": "IERC20",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 819,
                                                                                "src": "5521:6:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                    "typeString": "type(contract IERC20)"
                                                                                }
                                                                            },
                                                                            "id": 1373,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "5521:13:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$819",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 1374,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "balanceOf",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 758,
                                                                        "src": "5521:23:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                                            "typeString": "function (address) view external returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1379,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "5521:38:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "VariableDeclarationStatement",
                                                                "src": "5507:52:6"
                                                            },
                                                            {
                                                                "condition": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1383,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1381,
                                                                        "name": "fee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1370,
                                                                        "src": "5581:3:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "!=",
                                                                    "rightExpression": {
                                                                        "hexValue": "30",
                                                                        "id": 1382,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "5586:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    },
                                                                    "src": "5581:6:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "id": 1391,
                                                                "nodeType": "IfStatement",
                                                                "src": "5578:81:6",
                                                                "trueBody": {
                                                                    "id": 1390,
                                                                    "nodeType": "Block",
                                                                    "src": "5588:71:6",
                                                                    "statements": [
                                                                        {
                                                                            "expression": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "id": 1385,
                                                                                        "name": "fee",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1370,
                                                                                        "src": "5620:3:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 1386,
                                                                                        "name": "token",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1326,
                                                                                        "src": "5625:5:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "hexValue": "66656573",
                                                                                        "id": 1387,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "string",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "5632:6:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_stringliteral_5a3cb893d297939fd527ec3d496cfd17f9907b89b1ea2a8c10ebfda20c4119de",
                                                                                            "typeString": "literal_string \"fees\""
                                                                                        },
                                                                                        "value": "fees"
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_stringliteral_5a3cb893d297939fd527ec3d496cfd17f9907b89b1ea2a8c10ebfda20c4119de",
                                                                                            "typeString": "literal_string \"fees\""
                                                                                        }
                                                                                    ],
                                                                                    "id": 1384,
                                                                                    "name": "transfer",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1792,
                                                                                    "src": "5611:8:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$__$",
                                                                                        "typeString": "function (uint256,address,bytes32)"
                                                                                    }
                                                                                },
                                                                                "id": 1388,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "5611:28:6",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_tuple$__$",
                                                                                    "typeString": "tuple()"
                                                                                }
                                                                            },
                                                                            "id": 1389,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "5611:28:6"
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                "id": 1394,
                                                "nodeType": "IfStatement",
                                                "src": "5235:439:6",
                                                "trueBody": {
                                                    "id": 1365,
                                                    "nodeType": "Block",
                                                    "src": "5259:186:6",
                                                    "statements": [
                                                        {
                                                            "assignments": [
                                                                1343
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 1343,
                                                                    "mutability": "mutable",
                                                                    "name": "fee",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 1365,
                                                                    "src": "5278:11:6",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1342,
                                                                        "name": "uint256",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "5278:7:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 1353,
                                                            "initialValue": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1350,
                                                                                "name": "this",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4294967268,
                                                                                "src": "5324:4:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                                    "typeString": "contract Distribution"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_contract$_Distribution_$1863",
                                                                                    "typeString": "contract Distribution"
                                                                                }
                                                                            ],
                                                                            "id": 1349,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                            "src": "5316:7:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                                "typeString": "type(address)"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 1348,
                                                                                "name": "address",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "5316:7:6",
                                                                                "typeDescriptions": {}
                                                                            }
                                                                        },
                                                                        "id": 1351,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "5316:13:6",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1345,
                                                                                "name": "token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1326,
                                                                                "src": "5299:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 1344,
                                                                            "name": "IERC20",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 819,
                                                                            "src": "5292:6:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                "typeString": "type(contract IERC20)"
                                                                            }
                                                                        },
                                                                        "id": 1346,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "5292:13:6",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                                            "typeString": "contract IERC20"
                                                                        }
                                                                    },
                                                                    "id": 1347,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "balanceOf",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 758,
                                                                    "src": "5292:23:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                                        "typeString": "function (address) view external returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 1352,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "5292:38:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "5278:52:6"
                                                        },
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1356,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 1354,
                                                                    "name": "fee",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1343,
                                                                    "src": "5352:3:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "!=",
                                                                "rightExpression": {
                                                                    "hexValue": "30",
                                                                    "id": 1355,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "5357:1:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                },
                                                                "src": "5352:6:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 1364,
                                                            "nodeType": "IfStatement",
                                                            "src": "5349:81:6",
                                                            "trueBody": {
                                                                "id": 1363,
                                                                "nodeType": "Block",
                                                                "src": "5359:71:6",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1358,
                                                                                    "name": "fee",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1343,
                                                                                    "src": "5391:3:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 1359,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1326,
                                                                                    "src": "5396:5:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "hexValue": "66656573",
                                                                                    "id": 1360,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "string",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "5403:6:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_stringliteral_5a3cb893d297939fd527ec3d496cfd17f9907b89b1ea2a8c10ebfda20c4119de",
                                                                                        "typeString": "literal_string \"fees\""
                                                                                    },
                                                                                    "value": "fees"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_stringliteral_5a3cb893d297939fd527ec3d496cfd17f9907b89b1ea2a8c10ebfda20c4119de",
                                                                                        "typeString": "literal_string \"fees\""
                                                                                    }
                                                                                ],
                                                                                "id": 1357,
                                                                                "name": "transfer",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1792,
                                                                                "src": "5382:8:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$__$",
                                                                                    "typeString": "function (uint256,address,bytes32)"
                                                                                }
                                                                            },
                                                                            "id": 1361,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "5382:28:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 1362,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "5382:28:6"
                                                                    }
                                                                ]
                                                            }
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 1321,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1319,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1316,
                                            "src": "5070:1:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "id": 1320,
                                            "name": "tokenCount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1310,
                                            "src": "5072:10:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "5070:12:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 1396,
                                    "initializationExpression": {
                                        "assignments": [
                                            1316
                                        ],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 1316,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1396,
                                                "src": "5060:6:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1315,
                                                    "name": "uint",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5060:4:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 1318,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 1317,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5067:1:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "5060:8:6"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 1323,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "5084:3:6",
                                            "subExpression": {
                                                "id": 1322,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1316,
                                                "src": "5084:1:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 1324,
                                        "nodeType": "ExpressionStatement",
                                        "src": "5084:3:6"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "5056:629:6"
                                }
                            ]
                        },
                        "functionSelector": "b069bbbb",
                        "id": 1398,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 1307,
                                "modifierName": {
                                    "id": 1306,
                                    "name": "onlyOwner",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 46,
                                    "src": "4980:9:6"
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4980:9:6"
                            }
                        ],
                        "name": "shareFee",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1305,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4968:2:6"
                        },
                        "returnParameters": {
                            "id": 1308,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4990:0:6"
                        },
                        "scope": 1863,
                        "src": "4951:741:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 1791,
                            "nodeType": "Block",
                            "src": "5810:4140:6",
                            "statements": [
                                {
                                    "assignments": [
                                        1408
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1408,
                                            "mutability": "mutable",
                                            "name": "fees",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1791,
                                            "src": "5821:12:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1407,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5821:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1417,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 1410,
                                                "name": "fee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1400,
                                                "src": "5845:3:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 1413,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1402,
                                                                "src": "5879:5:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1412,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 819,
                                                            "src": "5872:6:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 1414,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "5872:13:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    ],
                                                    "id": 1411,
                                                    "name": "_computeScalingFactor",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1828,
                                                    "src": "5850:21:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$819_$returns$_t_uint256_$",
                                                        "typeString": "function (contract IERC20) view returns (uint256)"
                                                    }
                                                },
                                                "id": 1415,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5850:36:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 1409,
                                            "name": "_upscale",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1862,
                                            "src": "5836:8:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1416,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5836:51:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5821:66:6"
                                },
                                {
                                    "assignments": [
                                        1419
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1419,
                                            "mutability": "mutable",
                                            "name": "businessFee",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1791,
                                            "src": "5898:19:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1418,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5898:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1433,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 1424,
                                                        "name": "fees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1408,
                                                        "src": "5958:4:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "id": 1425,
                                                        "name": "businessShare",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 917,
                                                        "src": "5964:13:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 1422,
                                                        "name": "FixedPoint",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3723,
                                                        "src": "5939:10:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                            "typeString": "type(library FixedPoint)"
                                                        }
                                                    },
                                                    "id": 1423,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mulDown",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 3410,
                                                    "src": "5939:18:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 1426,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5939:39:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 1429,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1402,
                                                                "src": "6009:5:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1428,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 819,
                                                            "src": "6002:6:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 1430,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6002:13:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    ],
                                                    "id": 1427,
                                                    "name": "_computeScalingFactor",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1828,
                                                    "src": "5980:21:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$819_$returns$_t_uint256_$",
                                                        "typeString": "function (contract IERC20) view returns (uint256)"
                                                    }
                                                },
                                                "id": 1431,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5980:36:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1420,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3723,
                                                "src": "5920:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 1421,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "divDown",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3504,
                                            "src": "5920:18:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1432,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5920:97:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5898:119:6"
                                },
                                {
                                    "assignments": [
                                        1435
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1435,
                                            "mutability": "mutable",
                                            "name": "operatorFee",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1791,
                                            "src": "6028:19:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1434,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6028:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1449,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 1440,
                                                        "name": "fees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1408,
                                                        "src": "6088:4:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "id": 1441,
                                                        "name": "operatorShare",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 923,
                                                        "src": "6094:13:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 1438,
                                                        "name": "FixedPoint",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3723,
                                                        "src": "6069:10:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                            "typeString": "type(library FixedPoint)"
                                                        }
                                                    },
                                                    "id": 1439,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mulDown",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 3410,
                                                    "src": "6069:18:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 1442,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6069:39:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 1445,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1402,
                                                                "src": "6139:5:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1444,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 819,
                                                            "src": "6132:6:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 1446,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6132:13:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    ],
                                                    "id": 1443,
                                                    "name": "_computeScalingFactor",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1828,
                                                    "src": "6110:21:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$819_$returns$_t_uint256_$",
                                                        "typeString": "function (contract IERC20) view returns (uint256)"
                                                    }
                                                },
                                                "id": 1447,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6110:36:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1436,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3723,
                                                "src": "6050:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 1437,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "divDown",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3504,
                                            "src": "6050:18:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1448,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6050:97:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6028:119:6"
                                },
                                {
                                    "assignments": [
                                        1451
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1451,
                                            "mutability": "mutable",
                                            "name": "founderFee",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1791,
                                            "src": "6158:18:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1450,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6158:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1465,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 1456,
                                                        "name": "fees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1408,
                                                        "src": "6217:4:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "id": 1457,
                                                        "name": "founderShare",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 919,
                                                        "src": "6223:12:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 1454,
                                                        "name": "FixedPoint",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3723,
                                                        "src": "6198:10:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                            "typeString": "type(library FixedPoint)"
                                                        }
                                                    },
                                                    "id": 1455,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mulDown",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 3410,
                                                    "src": "6198:18:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 1458,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6198:38:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 1461,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1402,
                                                                "src": "6267:5:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1460,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 819,
                                                            "src": "6260:6:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 1462,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6260:13:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    ],
                                                    "id": 1459,
                                                    "name": "_computeScalingFactor",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1828,
                                                    "src": "6238:21:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$819_$returns$_t_uint256_$",
                                                        "typeString": "function (contract IERC20) view returns (uint256)"
                                                    }
                                                },
                                                "id": 1463,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6238:36:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1452,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3723,
                                                "src": "6179:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 1453,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "divDown",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3504,
                                            "src": "6179:18:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1464,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6179:96:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6158:117:6"
                                },
                                {
                                    "assignments": [
                                        1467
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1467,
                                            "mutability": "mutable",
                                            "name": "investorFee",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1791,
                                            "src": "6286:19:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1466,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6286:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1481,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 1472,
                                                        "name": "fees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1408,
                                                        "src": "6346:4:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "id": 1473,
                                                        "name": "investorShare",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 921,
                                                        "src": "6352:13:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 1470,
                                                        "name": "FixedPoint",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3723,
                                                        "src": "6327:10:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                            "typeString": "type(library FixedPoint)"
                                                        }
                                                    },
                                                    "id": 1471,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mulDown",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 3410,
                                                    "src": "6327:18:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 1474,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6327:39:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 1477,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1402,
                                                                "src": "6397:5:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 1476,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 819,
                                                            "src": "6390:6:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 1478,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "6390:13:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    ],
                                                    "id": 1475,
                                                    "name": "_computeScalingFactor",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1828,
                                                    "src": "6368:21:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$819_$returns$_t_uint256_$",
                                                        "typeString": "function (contract IERC20) view returns (uint256)"
                                                    }
                                                },
                                                "id": 1479,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6368:36:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1468,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3723,
                                                "src": "6308:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 1469,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "divDown",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3504,
                                            "src": "6308:18:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1480,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6308:97:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6286:119:6"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        },
                                        "id": 1484,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 1482,
                                            "name": "sharing",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1404,
                                            "src": "6419:7:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "636f6c6c656374696f6e",
                                            "id": 1483,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6428:12:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_a77d3cda10319ef1453ed69bfa8aef4c4c554a589d68a43d2e3eb63639bb3d85",
                                                "typeString": "literal_string \"collection\""
                                            },
                                            "value": "collection"
                                        },
                                        "src": "6419:21:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "id": 1617,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 1615,
                                                "name": "sharing",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1404,
                                                "src": "8046:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                                "hexValue": "66656573",
                                                "id": 1616,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8055:6:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_5a3cb893d297939fd527ec3d496cfd17f9907b89b1ea2a8c10ebfda20c4119de",
                                                    "typeString": "literal_string \"fees\""
                                                },
                                                "value": "fees"
                                            },
                                            "src": "8046:15:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "id": 1789,
                                        "nodeType": "IfStatement",
                                        "src": "8043:1900:6",
                                        "trueBody": {
                                            "id": 1788,
                                            "nodeType": "Block",
                                            "src": "8062:1881:6",
                                            "statements": [
                                                {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1620,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1618,
                                                            "name": "founderFee",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1451,
                                                            "src": "8435:10:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 1619,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8446:1:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "8435:12:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "id": 1639,
                                                    "nodeType": "IfStatement",
                                                    "src": "8432:235:6",
                                                    "trueBody": {
                                                        "id": 1638,
                                                        "nodeType": "Block",
                                                        "src": "8448:219:6",
                                                        "statements": [
                                                            {
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 1625,
                                                                            "name": "founder",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 911,
                                                                            "src": "8539:7:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 1626,
                                                                            "name": "founderFee",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1451,
                                                                            "src": "8548:10:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1622,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1402,
                                                                                    "src": "8523:5:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                ],
                                                                                "id": 1621,
                                                                                "name": "IERC20",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 819,
                                                                                "src": "8516:6:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                    "typeString": "type(contract IERC20)"
                                                                                }
                                                                            },
                                                                            "id": 1623,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "8516:13:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$819",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 1624,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "transfer",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 768,
                                                                        "src": "8516:22:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                            "typeString": "function (address,uint256) external returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 1627,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "8516:43:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "id": 1628,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "8516:43:6"
                                                            },
                                                            {
                                                                "eventCall": {
                                                                    "arguments": [
                                                                        {
                                                                            "hexValue": "526f79616c7479",
                                                                            "id": 1630,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "string",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "8596:9:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_stringliteral_7d8f7b384f374c06a8518b8661abf73fb708e0b379400613e4d1e5084c993c46",
                                                                                "typeString": "literal_string \"Royalty\""
                                                                            },
                                                                            "value": "Royalty"
                                                                        },
                                                                        {
                                                                            "id": 1631,
                                                                            "name": "founder",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 911,
                                                                            "src": "8607:7:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 1632,
                                                                            "name": "token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1402,
                                                                            "src": "8616:5:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 1633,
                                                                            "name": "founderFee",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1451,
                                                                            "src": "8623:10:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "id": 1634,
                                                                                "name": "block",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4294967292,
                                                                                "src": "8635:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_magic_block",
                                                                                    "typeString": "block"
                                                                                }
                                                                            },
                                                                            "id": 1635,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "timestamp",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "8635:15:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_stringliteral_7d8f7b384f374c06a8518b8661abf73fb708e0b379400613e4d1e5084c993c46",
                                                                                "typeString": "literal_string \"Royalty\""
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "id": 1629,
                                                                        "name": "RevenueShare",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 935,
                                                                        "src": "8583:12:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                            "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1636,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "8583:68:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_tuple$__$",
                                                                        "typeString": "tuple()"
                                                                    }
                                                                },
                                                                "id": 1637,
                                                                "nodeType": "EmitStatement",
                                                                "src": "8578:73:6"
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1642,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1640,
                                                            "name": "investorFee",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1467,
                                                            "src": "8684:11:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 1641,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8696:1:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "8684:13:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "id": 1661,
                                                    "nodeType": "IfStatement",
                                                    "src": "8681:280:6",
                                                    "trueBody": {
                                                        "id": 1660,
                                                        "nodeType": "Block",
                                                        "src": "8698:263:6",
                                                        "statements": [
                                                            {
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 1647,
                                                                            "name": "liquidityContract",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 915,
                                                                            "src": "8810:17:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 1648,
                                                                            "name": "investorFee",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1467,
                                                                            "src": "8829:11:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1644,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1402,
                                                                                    "src": "8794:5:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                ],
                                                                                "id": 1643,
                                                                                "name": "IERC20",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 819,
                                                                                "src": "8787:6:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                    "typeString": "type(contract IERC20)"
                                                                                }
                                                                            },
                                                                            "id": 1645,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "8787:13:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$819",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 1646,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "transfer",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 768,
                                                                        "src": "8787:22:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                            "typeString": "function (address,uint256) external returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 1649,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "8787:54:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "id": 1650,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "8787:54:6"
                                                            },
                                                            {
                                                                "eventCall": {
                                                                    "arguments": [
                                                                        {
                                                                            "hexValue": "496e766573746f72",
                                                                            "id": 1652,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "string",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "8878:10:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_stringliteral_b07dd01d1f7a644c8997d56b1401edb5cd2a9325d84a45f67e4069218a103b86",
                                                                                "typeString": "literal_string \"Investor\""
                                                                            },
                                                                            "value": "Investor"
                                                                        },
                                                                        {
                                                                            "id": 1653,
                                                                            "name": "liquidityContract",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 915,
                                                                            "src": "8890:17:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 1654,
                                                                            "name": "token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1402,
                                                                            "src": "8909:5:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 1655,
                                                                            "name": "investorFee",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1467,
                                                                            "src": "8916:11:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "id": 1656,
                                                                                "name": "block",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4294967292,
                                                                                "src": "8929:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_magic_block",
                                                                                    "typeString": "block"
                                                                                }
                                                                            },
                                                                            "id": 1657,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "timestamp",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "8929:15:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_stringliteral_b07dd01d1f7a644c8997d56b1401edb5cd2a9325d84a45f67e4069218a103b86",
                                                                                "typeString": "literal_string \"Investor\""
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "id": 1651,
                                                                        "name": "RevenueShare",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 935,
                                                                        "src": "8865:12:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                            "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1658,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "8865:80:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_tuple$__$",
                                                                        "typeString": "tuple()"
                                                                    }
                                                                },
                                                                "id": 1659,
                                                                "nodeType": "EmitStatement",
                                                                "src": "8860:85:6"
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "id": 1671,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1664,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1662,
                                                                "name": "businessFee",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1419,
                                                                "src": "8978:11:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 1663,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "8990:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "8978:13:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&&",
                                                        "rightExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1670,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 1665,
                                                                        "name": "businesses",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 896,
                                                                        "src": "8995:10:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                            "typeString": "mapping(address => address[] storage ref)"
                                                                        }
                                                                    },
                                                                    "id": 1667,
                                                                    "indexExpression": {
                                                                        "id": 1666,
                                                                        "name": "token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1402,
                                                                        "src": "9006:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "8995:17:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                        "typeString": "address[] storage ref"
                                                                    }
                                                                },
                                                                "id": 1668,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "length",
                                                                "nodeType": "MemberAccess",
                                                                "src": "8995:24:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 1669,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "9020:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "8995:26:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "src": "8978:43:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "id": 1724,
                                                    "nodeType": "IfStatement",
                                                    "src": "8975:468:6",
                                                    "trueBody": {
                                                        "id": 1723,
                                                        "nodeType": "Block",
                                                        "src": "9022:421:6",
                                                        "statements": [
                                                            {
                                                                "expression": {
                                                                    "id": 1681,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftHandSide": {
                                                                        "id": 1672,
                                                                        "name": "businessFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1419,
                                                                        "src": "9081:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "Assignment",
                                                                    "operator": "=",
                                                                    "rightHandSide": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1675,
                                                                                "name": "businessFee",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1419,
                                                                                "src": "9114:11:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            {
                                                                                "expression": {
                                                                                    "baseExpression": {
                                                                                        "id": 1676,
                                                                                        "name": "businesses",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 896,
                                                                                        "src": "9127:10:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                            "typeString": "mapping(address => address[] storage ref)"
                                                                                        }
                                                                                    },
                                                                                    "id": 1678,
                                                                                    "indexExpression": {
                                                                                        "id": 1677,
                                                                                        "name": "token",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1402,
                                                                                        "src": "9138:5:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "9127:17:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                        "typeString": "address[] storage ref"
                                                                                    }
                                                                                },
                                                                                "id": 1679,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "length",
                                                                                "nodeType": "MemberAccess",
                                                                                "src": "9127:24:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 1673,
                                                                                "name": "FixedPoint",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3723,
                                                                                "src": "9095:10:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                                                    "typeString": "type(library FixedPoint)"
                                                                                }
                                                                            },
                                                                            "id": 1674,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "divDown",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 3504,
                                                                            "src": "9095:18:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 1680,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "9095:57:6",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "9081:71:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 1682,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "9081:71:6"
                                                            },
                                                            {
                                                                "body": {
                                                                    "id": 1721,
                                                                    "nodeType": "Block",
                                                                    "src": "9217:211:6",
                                                                    "statements": [
                                                                        {
                                                                            "expression": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "baseExpression": {
                                                                                            "baseExpression": {
                                                                                                "id": 1700,
                                                                                                "name": "businesses",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 896,
                                                                                                "src": "9263:10:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                                }
                                                                                            },
                                                                                            "id": 1702,
                                                                                            "indexExpression": {
                                                                                                "id": 1701,
                                                                                                "name": "token",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1402,
                                                                                                "src": "9274:5:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "9263:17:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                                "typeString": "address[] storage ref"
                                                                                            }
                                                                                        },
                                                                                        "id": 1704,
                                                                                        "indexExpression": {
                                                                                            "id": 1703,
                                                                                            "name": "j",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1684,
                                                                                            "src": "9281:1:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "9263:20:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 1705,
                                                                                        "name": "businessFee",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1419,
                                                                                        "src": "9285:11:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "id": 1697,
                                                                                                "name": "token",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1402,
                                                                                                "src": "9247:5:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            ],
                                                                                            "id": 1696,
                                                                                            "name": "IERC20",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 819,
                                                                                            "src": "9240:6:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                                "typeString": "type(contract IERC20)"
                                                                                            }
                                                                                        },
                                                                                        "id": 1698,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "typeConversion",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "9240:13:6",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                                                            "typeString": "contract IERC20"
                                                                                        }
                                                                                    },
                                                                                    "id": 1699,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "transfer",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 768,
                                                                                    "src": "9240:22:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                                                    }
                                                                                },
                                                                                "id": 1706,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "9240:57:6",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bool",
                                                                                    "typeString": "bool"
                                                                                }
                                                                            },
                                                                            "id": 1707,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "9240:57:6"
                                                                        },
                                                                        {
                                                                            "eventCall": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "hexValue": "427573696e657373",
                                                                                        "id": 1709,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "string",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "9338:10:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_stringliteral_da4fd9fa774c576c08e67dcb6bb94d647b4bc97f62502f1e2b62c2ba20f879cc",
                                                                                            "typeString": "literal_string \"Business\""
                                                                                        },
                                                                                        "value": "Business"
                                                                                    },
                                                                                    {
                                                                                        "baseExpression": {
                                                                                            "baseExpression": {
                                                                                                "id": 1710,
                                                                                                "name": "businesses",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 896,
                                                                                                "src": "9350:10:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                                }
                                                                                            },
                                                                                            "id": 1712,
                                                                                            "indexExpression": {
                                                                                                "id": 1711,
                                                                                                "name": "token",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1402,
                                                                                                "src": "9361:5:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "9350:17:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                                "typeString": "address[] storage ref"
                                                                                            }
                                                                                        },
                                                                                        "id": 1714,
                                                                                        "indexExpression": {
                                                                                            "id": 1713,
                                                                                            "name": "j",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1684,
                                                                                            "src": "9368:1:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "9350:20:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 1715,
                                                                                        "name": "token",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1402,
                                                                                        "src": "9372:5:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 1716,
                                                                                        "name": "businessFee",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1419,
                                                                                        "src": "9379:11:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "expression": {
                                                                                            "id": 1717,
                                                                                            "name": "block",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 4294967292,
                                                                                            "src": "9392:5:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_magic_block",
                                                                                                "typeString": "block"
                                                                                            }
                                                                                        },
                                                                                        "id": 1718,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "timestamp",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "src": "9392:15:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_stringliteral_da4fd9fa774c576c08e67dcb6bb94d647b4bc97f62502f1e2b62c2ba20f879cc",
                                                                                            "typeString": "literal_string \"Business\""
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "id": 1708,
                                                                                    "name": "RevenueShare",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 935,
                                                                                    "src": "9325:12:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                                    }
                                                                                },
                                                                                "id": 1719,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "9325:83:6",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_tuple$__$",
                                                                                    "typeString": "tuple()"
                                                                                }
                                                                            },
                                                                            "id": 1720,
                                                                            "nodeType": "EmitStatement",
                                                                            "src": "9320:88:6"
                                                                        }
                                                                    ]
                                                                },
                                                                "condition": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1692,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1687,
                                                                        "name": "j",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1684,
                                                                        "src": "9185:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "<",
                                                                    "rightExpression": {
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1688,
                                                                                "name": "businesses",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 896,
                                                                                "src": "9187:10:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                }
                                                                            },
                                                                            "id": 1690,
                                                                            "indexExpression": {
                                                                                "id": 1689,
                                                                                "name": "token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1402,
                                                                                "src": "9198:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "9187:17:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                "typeString": "address[] storage ref"
                                                                            }
                                                                        },
                                                                        "id": 1691,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "length",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "9187:24:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "9185:26:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "id": 1722,
                                                                "initializationExpression": {
                                                                    "assignments": [
                                                                        1684
                                                                    ],
                                                                    "declarations": [
                                                                        {
                                                                            "constant": false,
                                                                            "id": 1684,
                                                                            "mutability": "mutable",
                                                                            "name": "j",
                                                                            "nodeType": "VariableDeclaration",
                                                                            "scope": 1722,
                                                                            "src": "9175:6:6",
                                                                            "stateVariable": false,
                                                                            "storageLocation": "default",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 1683,
                                                                                "name": "uint",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "9175:4:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "visibility": "internal"
                                                                        }
                                                                    ],
                                                                    "id": 1686,
                                                                    "initialValue": {
                                                                        "hexValue": "30",
                                                                        "id": 1685,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "9182:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    },
                                                                    "nodeType": "VariableDeclarationStatement",
                                                                    "src": "9175:8:6"
                                                                },
                                                                "loopExpression": {
                                                                    "expression": {
                                                                        "id": 1694,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "UnaryOperation",
                                                                        "operator": "++",
                                                                        "prefix": false,
                                                                        "src": "9213:3:6",
                                                                        "subExpression": {
                                                                            "id": 1693,
                                                                            "name": "j",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1684,
                                                                            "src": "9213:1:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "id": 1695,
                                                                    "nodeType": "ExpressionStatement",
                                                                    "src": "9213:3:6"
                                                                },
                                                                "nodeType": "ForStatement",
                                                                "src": "9171:257:6"
                                                            }
                                                        ]
                                                    }
                                                },
                                                {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "id": 1734,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1727,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1725,
                                                                "name": "operatorFee",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1435,
                                                                "src": "9460:11:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 1726,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "9472:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "9460:13:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&&",
                                                        "rightExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1733,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 1728,
                                                                        "name": "operators",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 905,
                                                                        "src": "9477:9:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                            "typeString": "mapping(address => address[] storage ref)"
                                                                        }
                                                                    },
                                                                    "id": 1730,
                                                                    "indexExpression": {
                                                                        "id": 1729,
                                                                        "name": "token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1402,
                                                                        "src": "9487:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "9477:16:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                        "typeString": "address[] storage ref"
                                                                    }
                                                                },
                                                                "id": 1731,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "length",
                                                                "nodeType": "MemberAccess",
                                                                "src": "9477:23:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 1732,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "9501:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "9477:25:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "src": "9460:42:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "id": 1787,
                                                    "nodeType": "IfStatement",
                                                    "src": "9457:475:6",
                                                    "trueBody": {
                                                        "id": 1786,
                                                        "nodeType": "Block",
                                                        "src": "9503:429:6",
                                                        "statements": [
                                                            {
                                                                "expression": {
                                                                    "id": 1744,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftHandSide": {
                                                                        "id": 1735,
                                                                        "name": "operatorFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1435,
                                                                        "src": "9574:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "Assignment",
                                                                    "operator": "=",
                                                                    "rightHandSide": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1738,
                                                                                "name": "operatorFee",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1435,
                                                                                "src": "9607:11:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            {
                                                                                "expression": {
                                                                                    "baseExpression": {
                                                                                        "id": 1739,
                                                                                        "name": "operators",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 905,
                                                                                        "src": "9620:9:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                            "typeString": "mapping(address => address[] storage ref)"
                                                                                        }
                                                                                    },
                                                                                    "id": 1741,
                                                                                    "indexExpression": {
                                                                                        "id": 1740,
                                                                                        "name": "token",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1402,
                                                                                        "src": "9630:5:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "9620:16:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                        "typeString": "address[] storage ref"
                                                                                    }
                                                                                },
                                                                                "id": 1742,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "length",
                                                                                "nodeType": "MemberAccess",
                                                                                "src": "9620:23:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 1736,
                                                                                "name": "FixedPoint",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3723,
                                                                                "src": "9588:10:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                                                    "typeString": "type(library FixedPoint)"
                                                                                }
                                                                            },
                                                                            "id": 1737,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "divDown",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 3504,
                                                                            "src": "9588:18:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 1743,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "9588:56:6",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "9574:70:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 1745,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "9574:70:6"
                                                            },
                                                            {
                                                                "body": {
                                                                    "id": 1784,
                                                                    "nodeType": "Block",
                                                                    "src": "9708:209:6",
                                                                    "statements": [
                                                                        {
                                                                            "expression": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "baseExpression": {
                                                                                            "baseExpression": {
                                                                                                "id": 1763,
                                                                                                "name": "operators",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 905,
                                                                                                "src": "9754:9:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                                }
                                                                                            },
                                                                                            "id": 1765,
                                                                                            "indexExpression": {
                                                                                                "id": 1764,
                                                                                                "name": "token",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1402,
                                                                                                "src": "9764:5:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "9754:16:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                                "typeString": "address[] storage ref"
                                                                                            }
                                                                                        },
                                                                                        "id": 1767,
                                                                                        "indexExpression": {
                                                                                            "id": 1766,
                                                                                            "name": "j",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1747,
                                                                                            "src": "9771:1:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "9754:19:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 1768,
                                                                                        "name": "operatorFee",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1435,
                                                                                        "src": "9775:11:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "id": 1760,
                                                                                                "name": "token",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1402,
                                                                                                "src": "9738:5:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            ],
                                                                                            "id": 1759,
                                                                                            "name": "IERC20",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 819,
                                                                                            "src": "9731:6:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                                "typeString": "type(contract IERC20)"
                                                                                            }
                                                                                        },
                                                                                        "id": 1761,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "typeConversion",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "9731:13:6",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                                                            "typeString": "contract IERC20"
                                                                                        }
                                                                                    },
                                                                                    "id": 1762,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "transfer",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 768,
                                                                                    "src": "9731:22:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                                                    }
                                                                                },
                                                                                "id": 1769,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "9731:56:6",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bool",
                                                                                    "typeString": "bool"
                                                                                }
                                                                            },
                                                                            "id": 1770,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "9731:56:6"
                                                                        },
                                                                        {
                                                                            "eventCall": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "hexValue": "4f70657261746f72",
                                                                                        "id": 1772,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "string",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "9828:10:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_stringliteral_71b43d66088715f0148d07b45a38f510fffe2d5fd108ee7701691e554738d61b",
                                                                                            "typeString": "literal_string \"Operator\""
                                                                                        },
                                                                                        "value": "Operator"
                                                                                    },
                                                                                    {
                                                                                        "baseExpression": {
                                                                                            "baseExpression": {
                                                                                                "id": 1773,
                                                                                                "name": "operators",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 905,
                                                                                                "src": "9840:9:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                                }
                                                                                            },
                                                                                            "id": 1775,
                                                                                            "indexExpression": {
                                                                                                "id": 1774,
                                                                                                "name": "token",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 1402,
                                                                                                "src": "9850:5:6",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "9840:16:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                                "typeString": "address[] storage ref"
                                                                                            }
                                                                                        },
                                                                                        "id": 1777,
                                                                                        "indexExpression": {
                                                                                            "id": 1776,
                                                                                            "name": "j",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1747,
                                                                                            "src": "9857:1:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "9840:19:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 1778,
                                                                                        "name": "token",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1402,
                                                                                        "src": "9861:5:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 1779,
                                                                                        "name": "operatorFee",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1435,
                                                                                        "src": "9868:11:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "expression": {
                                                                                            "id": 1780,
                                                                                            "name": "block",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 4294967292,
                                                                                            "src": "9881:5:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_magic_block",
                                                                                                "typeString": "block"
                                                                                            }
                                                                                        },
                                                                                        "id": 1781,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "timestamp",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "src": "9881:15:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_stringliteral_71b43d66088715f0148d07b45a38f510fffe2d5fd108ee7701691e554738d61b",
                                                                                            "typeString": "literal_string \"Operator\""
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "id": 1771,
                                                                                    "name": "RevenueShare",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 935,
                                                                                    "src": "9815:12:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                                    }
                                                                                },
                                                                                "id": 1782,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "9815:82:6",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_tuple$__$",
                                                                                    "typeString": "tuple()"
                                                                                }
                                                                            },
                                                                            "id": 1783,
                                                                            "nodeType": "EmitStatement",
                                                                            "src": "9810:87:6"
                                                                        }
                                                                    ]
                                                                },
                                                                "condition": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1755,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1750,
                                                                        "name": "j",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1747,
                                                                        "src": "9677:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "<",
                                                                    "rightExpression": {
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 1751,
                                                                                "name": "operators",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 905,
                                                                                "src": "9679:9:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                    "typeString": "mapping(address => address[] storage ref)"
                                                                                }
                                                                            },
                                                                            "id": 1753,
                                                                            "indexExpression": {
                                                                                "id": 1752,
                                                                                "name": "token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1402,
                                                                                "src": "9689:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "9679:16:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                "typeString": "address[] storage ref"
                                                                            }
                                                                        },
                                                                        "id": 1754,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "length",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "9679:23:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "9677:25:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "id": 1785,
                                                                "initializationExpression": {
                                                                    "assignments": [
                                                                        1747
                                                                    ],
                                                                    "declarations": [
                                                                        {
                                                                            "constant": false,
                                                                            "id": 1747,
                                                                            "mutability": "mutable",
                                                                            "name": "j",
                                                                            "nodeType": "VariableDeclaration",
                                                                            "scope": 1785,
                                                                            "src": "9667:6:6",
                                                                            "stateVariable": false,
                                                                            "storageLocation": "default",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 1746,
                                                                                "name": "uint",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "9667:4:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "visibility": "internal"
                                                                        }
                                                                    ],
                                                                    "id": 1749,
                                                                    "initialValue": {
                                                                        "hexValue": "30",
                                                                        "id": 1748,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "9674:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    },
                                                                    "nodeType": "VariableDeclarationStatement",
                                                                    "src": "9667:8:6"
                                                                },
                                                                "loopExpression": {
                                                                    "expression": {
                                                                        "id": 1757,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "UnaryOperation",
                                                                        "operator": "++",
                                                                        "prefix": false,
                                                                        "src": "9704:3:6",
                                                                        "subExpression": {
                                                                            "id": 1756,
                                                                            "name": "j",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1747,
                                                                            "src": "9704:1:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "id": 1758,
                                                                    "nodeType": "ExpressionStatement",
                                                                    "src": "9704:3:6"
                                                                },
                                                                "nodeType": "ForStatement",
                                                                "src": "9663:254:6"
                                                            }
                                                        ]
                                                    }
                                                }
                                            ]
                                        }
                                    },
                                    "id": 1790,
                                    "nodeType": "IfStatement",
                                    "src": "6416:3527:6",
                                    "trueBody": {
                                        "id": 1614,
                                        "nodeType": "Block",
                                        "src": "6441:1587:6",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1487,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1485,
                                                        "name": "businessFee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1419,
                                                        "src": "6459:11:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1486,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "6471:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "6459:13:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1506,
                                                "nodeType": "IfStatement",
                                                "src": "6456:300:6",
                                                "trueBody": {
                                                    "id": 1505,
                                                    "nodeType": "Block",
                                                    "src": "6473:283:6",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 1492,
                                                                        "name": "liquidityContract",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 915,
                                                                        "src": "6605:17:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1493,
                                                                        "name": "businessFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1419,
                                                                        "src": "6624:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1489,
                                                                                "name": "token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1402,
                                                                                "src": "6589:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 1488,
                                                                            "name": "IERC20",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 819,
                                                                            "src": "6582:6:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                "typeString": "type(contract IERC20)"
                                                                            }
                                                                        },
                                                                        "id": 1490,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "6582:13:6",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                                            "typeString": "contract IERC20"
                                                                        }
                                                                    },
                                                                    "id": 1491,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "transfer",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 768,
                                                                    "src": "6582:22:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                                    }
                                                                },
                                                                "id": 1494,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "6582:54:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 1495,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "6582:54:6"
                                                        },
                                                        {
                                                            "eventCall": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "496e766573746f72",
                                                                        "id": 1497,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "6673:10:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_b07dd01d1f7a644c8997d56b1401edb5cd2a9325d84a45f67e4069218a103b86",
                                                                            "typeString": "literal_string \"Investor\""
                                                                        },
                                                                        "value": "Investor"
                                                                    },
                                                                    {
                                                                        "id": 1498,
                                                                        "name": "liquidityContract",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 915,
                                                                        "src": "6685:17:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1499,
                                                                        "name": "token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1402,
                                                                        "src": "6704:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1500,
                                                                        "name": "businessFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1419,
                                                                        "src": "6711:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 1501,
                                                                            "name": "block",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4294967292,
                                                                            "src": "6724:5:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_block",
                                                                                "typeString": "block"
                                                                            }
                                                                        },
                                                                        "id": 1502,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "timestamp",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "6724:15:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_b07dd01d1f7a644c8997d56b1401edb5cd2a9325d84a45f67e4069218a103b86",
                                                                            "typeString": "literal_string \"Investor\""
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 1496,
                                                                    "name": "RevenueShare",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 935,
                                                                    "src": "6660:12:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                    }
                                                                },
                                                                "id": 1503,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "6660:80:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 1504,
                                                            "nodeType": "EmitStatement",
                                                            "src": "6655:85:6"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 1516,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1509,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1507,
                                                            "name": "founderFee",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1451,
                                                            "src": "6773:10:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 1508,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6784:1:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "6773:12:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1515,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 1510,
                                                                    "name": "businesses",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 896,
                                                                    "src": "6789:10:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                        "typeString": "mapping(address => address[] storage ref)"
                                                                    }
                                                                },
                                                                "id": 1512,
                                                                "indexExpression": {
                                                                    "id": 1511,
                                                                    "name": "token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1402,
                                                                    "src": "6800:5:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "6789:17:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                    "typeString": "address[] storage ref"
                                                                }
                                                            },
                                                            "id": 1513,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "length",
                                                            "nodeType": "MemberAccess",
                                                            "src": "6789:24:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 1514,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6814:1:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "6789:26:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "6773:42:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1569,
                                                "nodeType": "IfStatement",
                                                "src": "6770:678:6",
                                                "trueBody": {
                                                    "id": 1568,
                                                    "nodeType": "Block",
                                                    "src": "6816:632:6",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 1526,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 1517,
                                                                    "name": "founderFee",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1451,
                                                                    "src": "7096:10:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 1520,
                                                                            "name": "founderFee",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1451,
                                                                            "src": "7122:10:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "baseExpression": {
                                                                                    "id": 1521,
                                                                                    "name": "businesses",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 896,
                                                                                    "src": "7134:10:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                        "typeString": "mapping(address => address[] storage ref)"
                                                                                    }
                                                                                },
                                                                                "id": 1523,
                                                                                "indexExpression": {
                                                                                    "id": 1522,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1402,
                                                                                    "src": "7145:5:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "IndexAccess",
                                                                                "src": "7134:17:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                    "typeString": "address[] storage ref"
                                                                                }
                                                                            },
                                                                            "id": 1524,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "length",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "7134:24:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "id": 1518,
                                                                            "name": "Math",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5333,
                                                                            "src": "7109:4:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_Math_$5333_$",
                                                                                "typeString": "type(library Math)"
                                                                            }
                                                                        },
                                                                        "id": 1519,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "divDown",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 5297,
                                                                        "src": "7109:12:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 1525,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "7109:50:6",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "7096:63:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1527,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "7096:63:6"
                                                        },
                                                        {
                                                            "body": {
                                                                "id": 1566,
                                                                "nodeType": "Block",
                                                                "src": "7224:209:6",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "baseExpression": {
                                                                                        "baseExpression": {
                                                                                            "id": 1545,
                                                                                            "name": "businesses",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 896,
                                                                                            "src": "7270:10:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                                "typeString": "mapping(address => address[] storage ref)"
                                                                                            }
                                                                                        },
                                                                                        "id": 1547,
                                                                                        "indexExpression": {
                                                                                            "id": 1546,
                                                                                            "name": "token",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1402,
                                                                                            "src": "7281:5:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "7270:17:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                            "typeString": "address[] storage ref"
                                                                                        }
                                                                                    },
                                                                                    "id": 1549,
                                                                                    "indexExpression": {
                                                                                        "id": 1548,
                                                                                        "name": "j",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1529,
                                                                                        "src": "7288:1:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "7270:20:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 1550,
                                                                                    "name": "founderFee",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1451,
                                                                                    "src": "7292:10:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "id": 1542,
                                                                                            "name": "token",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1402,
                                                                                            "src": "7254:5:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        ],
                                                                                        "id": 1541,
                                                                                        "name": "IERC20",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 819,
                                                                                        "src": "7247:6:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                            "typeString": "type(contract IERC20)"
                                                                                        }
                                                                                    },
                                                                                    "id": 1543,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "typeConversion",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "7247:13:6",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_contract$_IERC20_$819",
                                                                                        "typeString": "contract IERC20"
                                                                                    }
                                                                                },
                                                                                "id": 1544,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "transfer",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 768,
                                                                                "src": "7247:22:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                                    "typeString": "function (address,uint256) external returns (bool)"
                                                                                }
                                                                            },
                                                                            "id": 1551,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "7247:56:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                            }
                                                                        },
                                                                        "id": 1552,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "7247:56:6"
                                                                    },
                                                                    {
                                                                        "eventCall": {
                                                                            "arguments": [
                                                                                {
                                                                                    "hexValue": "427573696e657373",
                                                                                    "id": 1554,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "string",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "7344:10:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_stringliteral_da4fd9fa774c576c08e67dcb6bb94d647b4bc97f62502f1e2b62c2ba20f879cc",
                                                                                        "typeString": "literal_string \"Business\""
                                                                                    },
                                                                                    "value": "Business"
                                                                                },
                                                                                {
                                                                                    "baseExpression": {
                                                                                        "baseExpression": {
                                                                                            "id": 1555,
                                                                                            "name": "businesses",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 896,
                                                                                            "src": "7356:10:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                                "typeString": "mapping(address => address[] storage ref)"
                                                                                            }
                                                                                        },
                                                                                        "id": 1557,
                                                                                        "indexExpression": {
                                                                                            "id": 1556,
                                                                                            "name": "token",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1402,
                                                                                            "src": "7367:5:6",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "7356:17:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                            "typeString": "address[] storage ref"
                                                                                        }
                                                                                    },
                                                                                    "id": 1559,
                                                                                    "indexExpression": {
                                                                                        "id": 1558,
                                                                                        "name": "j",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1529,
                                                                                        "src": "7374:1:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "7356:20:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 1560,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1402,
                                                                                    "src": "7378:5:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 1561,
                                                                                    "name": "founderFee",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1451,
                                                                                    "src": "7385:10:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "expression": {
                                                                                        "id": 1562,
                                                                                        "name": "block",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 4294967292,
                                                                                        "src": "7397:5:6",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_magic_block",
                                                                                            "typeString": "block"
                                                                                        }
                                                                                    },
                                                                                    "id": 1563,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "timestamp",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "src": "7397:15:6",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_stringliteral_da4fd9fa774c576c08e67dcb6bb94d647b4bc97f62502f1e2b62c2ba20f879cc",
                                                                                        "typeString": "literal_string \"Business\""
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                ],
                                                                                "id": 1553,
                                                                                "name": "RevenueShare",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 935,
                                                                                "src": "7331:12:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                                    "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                                }
                                                                            },
                                                                            "id": 1564,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "7331:82:6",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 1565,
                                                                        "nodeType": "EmitStatement",
                                                                        "src": "7326:87:6"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1537,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 1532,
                                                                    "name": "j",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1529,
                                                                    "src": "7192:1:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "<",
                                                                "rightExpression": {
                                                                    "expression": {
                                                                        "baseExpression": {
                                                                            "id": 1533,
                                                                            "name": "businesses",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 896,
                                                                            "src": "7194:10:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                                                "typeString": "mapping(address => address[] storage ref)"
                                                                            }
                                                                        },
                                                                        "id": 1535,
                                                                        "indexExpression": {
                                                                            "id": 1534,
                                                                            "name": "token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1402,
                                                                            "src": "7205:5:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "7194:17:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                            "typeString": "address[] storage ref"
                                                                        }
                                                                    },
                                                                    "id": 1536,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "length",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "7194:24:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "7192:26:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 1567,
                                                            "initializationExpression": {
                                                                "assignments": [
                                                                    1529
                                                                ],
                                                                "declarations": [
                                                                    {
                                                                        "constant": false,
                                                                        "id": 1529,
                                                                        "mutability": "mutable",
                                                                        "name": "j",
                                                                        "nodeType": "VariableDeclaration",
                                                                        "scope": 1567,
                                                                        "src": "7182:6:6",
                                                                        "stateVariable": false,
                                                                        "storageLocation": "default",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 1528,
                                                                            "name": "uint",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "7182:4:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "visibility": "internal"
                                                                    }
                                                                ],
                                                                "id": 1531,
                                                                "initialValue": {
                                                                    "hexValue": "30",
                                                                    "id": 1530,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "7189:1:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                },
                                                                "nodeType": "VariableDeclarationStatement",
                                                                "src": "7182:8:6"
                                                            },
                                                            "loopExpression": {
                                                                "expression": {
                                                                    "id": 1539,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "UnaryOperation",
                                                                    "operator": "++",
                                                                    "prefix": false,
                                                                    "src": "7220:3:6",
                                                                    "subExpression": {
                                                                        "id": 1538,
                                                                        "name": "j",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1529,
                                                                        "src": "7220:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 1540,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "7220:3:6"
                                                            },
                                                            "nodeType": "ForStatement",
                                                            "src": "7178:255:6"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1572,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1570,
                                                        "name": "investorFee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1467,
                                                        "src": "7465:11:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1571,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7477:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "7465:13:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1591,
                                                "nodeType": "IfStatement",
                                                "src": "7462:264:6",
                                                "trueBody": {
                                                    "id": 1590,
                                                    "nodeType": "Block",
                                                    "src": "7479:247:6",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 1577,
                                                                        "name": "founder",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 911,
                                                                        "src": "7596:7:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1578,
                                                                        "name": "investorFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1467,
                                                                        "src": "7605:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1574,
                                                                                "name": "token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1402,
                                                                                "src": "7580:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 1573,
                                                                            "name": "IERC20",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 819,
                                                                            "src": "7573:6:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                "typeString": "type(contract IERC20)"
                                                                            }
                                                                        },
                                                                        "id": 1575,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "7573:13:6",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                                            "typeString": "contract IERC20"
                                                                        }
                                                                    },
                                                                    "id": 1576,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "transfer",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 768,
                                                                    "src": "7573:22:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                                    }
                                                                },
                                                                "id": 1579,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7573:44:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 1580,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "7573:44:6"
                                                        },
                                                        {
                                                            "eventCall": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "526f79616c7479",
                                                                        "id": 1582,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7654:9:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_7d8f7b384f374c06a8518b8661abf73fb708e0b379400613e4d1e5084c993c46",
                                                                            "typeString": "literal_string \"Royalty\""
                                                                        },
                                                                        "value": "Royalty"
                                                                    },
                                                                    {
                                                                        "id": 1583,
                                                                        "name": "founder",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 911,
                                                                        "src": "7665:7:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1584,
                                                                        "name": "token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1402,
                                                                        "src": "7674:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1585,
                                                                        "name": "investorFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1467,
                                                                        "src": "7681:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 1586,
                                                                            "name": "block",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4294967292,
                                                                            "src": "7694:5:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_block",
                                                                                "typeString": "block"
                                                                            }
                                                                        },
                                                                        "id": 1587,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "timestamp",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "7694:15:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_7d8f7b384f374c06a8518b8661abf73fb708e0b379400613e4d1e5084c993c46",
                                                                            "typeString": "literal_string \"Royalty\""
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 1581,
                                                                    "name": "RevenueShare",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 935,
                                                                    "src": "7641:12:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                    }
                                                                },
                                                                "id": 1588,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7641:69:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 1589,
                                                            "nodeType": "EmitStatement",
                                                            "src": "7636:74:6"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1594,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1592,
                                                        "name": "operatorFee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1435,
                                                        "src": "7743:11:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1593,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7755:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "7743:13:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1613,
                                                "nodeType": "IfStatement",
                                                "src": "7740:277:6",
                                                "trueBody": {
                                                    "id": 1612,
                                                    "nodeType": "Block",
                                                    "src": "7757:260:6",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 1599,
                                                                        "name": "treasury",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 913,
                                                                        "src": "7884:8:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1600,
                                                                        "name": "operatorFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1435,
                                                                        "src": "7894:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1596,
                                                                                "name": "token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1402,
                                                                                "src": "7868:5:6",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 1595,
                                                                            "name": "IERC20",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 819,
                                                                            "src": "7861:6:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$819_$",
                                                                                "typeString": "type(contract IERC20)"
                                                                            }
                                                                        },
                                                                        "id": 1597,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "7861:13:6",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                                                            "typeString": "contract IERC20"
                                                                        }
                                                                    },
                                                                    "id": 1598,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "transfer",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 768,
                                                                    "src": "7861:22:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                                    }
                                                                },
                                                                "id": 1601,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7861:45:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 1602,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "7861:45:6"
                                                        },
                                                        {
                                                            "eventCall": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "5472656173757279",
                                                                        "id": 1604,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7943:10:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_6efca2866b731ee4984990bacad4cde10f1ef764fb54a5206bdfd291695b1a9b",
                                                                            "typeString": "literal_string \"Treasury\""
                                                                        },
                                                                        "value": "Treasury"
                                                                    },
                                                                    {
                                                                        "id": 1605,
                                                                        "name": "treasury",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 913,
                                                                        "src": "7955:8:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1606,
                                                                        "name": "token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1402,
                                                                        "src": "7965:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 1607,
                                                                        "name": "operatorFee",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1435,
                                                                        "src": "7972:11:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 1608,
                                                                            "name": "block",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4294967292,
                                                                            "src": "7985:5:6",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_block",
                                                                                "typeString": "block"
                                                                            }
                                                                        },
                                                                        "id": 1609,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "timestamp",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "7985:15:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_6efca2866b731ee4984990bacad4cde10f1ef764fb54a5206bdfd291695b1a9b",
                                                                            "typeString": "literal_string \"Treasury\""
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 1603,
                                                                    "name": "RevenueShare",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 935,
                                                                    "src": "7930:12:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                                                                    }
                                                                },
                                                                "id": 1610,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7930:71:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 1611,
                                                            "nodeType": "EmitStatement",
                                                            "src": "7925:76:6"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "id": 1792,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "transfer",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1405,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1400,
                                    "mutability": "mutable",
                                    "name": "fee",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1792,
                                    "src": "5757:11:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1399,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5757:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1402,
                                    "mutability": "mutable",
                                    "name": "token",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1792,
                                    "src": "5770:13:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 1401,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5770:7:6",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1404,
                                    "mutability": "mutable",
                                    "name": "sharing",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1792,
                                    "src": "5785:15:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 1403,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5785:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5756:45:6"
                        },
                        "returnParameters": {
                            "id": 1406,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5810:0:6"
                        },
                        "scope": 1863,
                        "src": "5739:4211:6",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 1827,
                            "nodeType": "Block",
                            "src": "10201:347:6",
                            "statements": [
                                {
                                    "assignments": [
                                        1802
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1802,
                                            "mutability": "mutable",
                                            "name": "tokenDecimals",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1827,
                                            "src": "10293:21:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1801,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "10293:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1811,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 1806,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1796,
                                                                "src": "10331:5:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$819",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_contract$_IERC20_$819",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            ],
                                                            "id": 1805,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "10323:7:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 1804,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "10323:7:6",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 1807,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "10323:14:6",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 1803,
                                                    "name": "ERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 741,
                                                    "src": "10317:5:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_ERC20_$741_$",
                                                        "typeString": "type(contract ERC20)"
                                                    }
                                                },
                                                "id": 1808,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "10317:21:6",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ERC20_$741",
                                                    "typeString": "contract ERC20"
                                                }
                                            },
                                            "id": 1809,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "decimals",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 270,
                                            "src": "10317:30:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                                                "typeString": "function () view external returns (uint8)"
                                            }
                                        },
                                        "id": 1810,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10317:32:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "10293:56:6"
                                },
                                {
                                    "assignments": [
                                        1813
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 1813,
                                            "mutability": "mutable",
                                            "name": "decimalsDifference",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1827,
                                            "src": "10427:26:6",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1812,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "10427:7:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 1819,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "hexValue": "3138",
                                                "id": 1816,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10465:2:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_18_by_1",
                                                    "typeString": "int_const 18"
                                                },
                                                "value": "18"
                                            },
                                            {
                                                "id": 1817,
                                                "name": "tokenDecimals",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1802,
                                                "src": "10469:13:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_rational_18_by_1",
                                                    "typeString": "int_const 18"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1814,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5333,
                                                "src": "10456:4:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$5333_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 1815,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5143,
                                            "src": "10456:8:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1818,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10456:27:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "10427:56:6"
                                },
                                {
                                    "expression": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 1825,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "id": 1820,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3723,
                                                "src": "10501:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 1821,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "ONE",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3308,
                                            "src": "10501:14:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 1824,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "hexValue": "3130",
                                                "id": 1822,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10518:2:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                },
                                                "value": "10"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "**",
                                            "rightExpression": {
                                                "id": 1823,
                                                "name": "decimalsDifference",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1813,
                                                "src": "10522:18:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "10518:22:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "10501:39:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 1800,
                                    "id": 1826,
                                    "nodeType": "Return",
                                    "src": "10494:46:6"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1793,
                            "nodeType": "StructuredDocumentation",
                            "src": "9958:160:6",
                            "text": " @dev Returns a scaling factor that, when multiplied to a token amount for `token`, normalizes its balance as if\n it had 18 decimals."
                        },
                        "id": 1828,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_computeScalingFactor",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1797,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1796,
                                    "mutability": "mutable",
                                    "name": "token",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1828,
                                    "src": "10155:12:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$819",
                                        "typeString": "contract IERC20"
                                    },
                                    "typeName": {
                                        "id": 1795,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 1794,
                                            "name": "IERC20",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 819,
                                            "src": "10155:6:6"
                                        },
                                        "referencedDeclaration": 819,
                                        "src": "10155:6:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$819",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "10154:14:6"
                        },
                        "returnParameters": {
                            "id": 1800,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1799,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1828,
                                    "src": "10192:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1798,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10192:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "10191:9:6"
                        },
                        "scope": 1863,
                        "src": "10124:424:6",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 1844,
                            "nodeType": "Block",
                            "src": "10853:67:6",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 1840,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1831,
                                                "src": "10890:6:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 1841,
                                                "name": "scalingFactor",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1833,
                                                "src": "10898:13:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1838,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3723,
                                                "src": "10871:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 1839,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "divDown",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3504,
                                            "src": "10871:18:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1842,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10871:41:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 1837,
                                    "id": 1843,
                                    "nodeType": "Return",
                                    "src": "10864:48:6"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1829,
                            "nodeType": "StructuredDocumentation",
                            "src": "10556:196:6",
                            "text": " @dev Reverses the `scalingFactor` applied to `amount`, resulting in a smaller or equal value depending on\n whether it needed scaling or not. The result is rounded down."
                        },
                        "id": 1845,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_downscaleDown",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1834,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1831,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1845,
                                    "src": "10782:14:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1830,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10782:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1833,
                                    "mutability": "mutable",
                                    "name": "scalingFactor",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1845,
                                    "src": "10798:21:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1832,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10798:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "10781:39:6"
                        },
                        "returnParameters": {
                            "id": 1837,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1836,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1845,
                                    "src": "10844:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1835,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10844:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "10843:9:6"
                        },
                        "scope": 1863,
                        "src": "10758:162:6",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 1861,
                            "nodeType": "Block",
                            "src": "11177:496:6",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 1857,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1848,
                                                "src": "11643:6:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 1858,
                                                "name": "scalingFactor",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1850,
                                                "src": "11651:13:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 1855,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3723,
                                                "src": "11624:10:6",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$3723_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 1856,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mulDown",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3410,
                                            "src": "11624:18:6",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 1859,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11624:41:6",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 1854,
                                    "id": 1860,
                                    "nodeType": "Return",
                                    "src": "11617:48:6"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 1846,
                            "nodeType": "StructuredDocumentation",
                            "src": "10928:154:6",
                            "text": " @dev Applies `scalingFactor` to `amount`, resulting in a larger or equal value depending on whether it needed\n scaling or not."
                        },
                        "id": 1862,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_upscale",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 1851,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1848,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1862,
                                    "src": "11106:14:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1847,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11106:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 1850,
                                    "mutability": "mutable",
                                    "name": "scalingFactor",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1862,
                                    "src": "11122:21:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1849,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11122:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "11105:39:6"
                        },
                        "returnParameters": {
                            "id": 1854,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 1853,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1862,
                                    "src": "11168:7:6",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1852,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11168:7:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "11167:9:6"
                        },
                        "scope": 1863,
                        "src": "11088:585:6",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    }
                ],
                "scope": 1864,
                "src": "584:11094:6"
            }
        ],
        "src": "110:11570:6"
    },
    "compiler": {
        "name": "solc",
        "version": "0.8.0+commit.c7dfd78e.Emscripten.clang"
    },
    "networks": {
        "100": {
            "events": {},
            "links": {},
            "address": "0x812cD96Bd1D9C35EaCD3F09Dc504B2d30e63EFe5",
            "transactionHash": "0xc85913762a1560b4d8ccb9d43e7338373052b2a5413b70607f1b3267c3d6dd93"
        },
        "8453": {
            "events": {},
            "links": {},
            "address": "0x3C0Da71292F095182b06e2f3c1527E2DF6aEa583",
            "transactionHash": "0x91ef6f0fcb79083befb7021b58634f708c21898de8beb5df47b7853ccc6ddddb"
        },
        "11155111": {
            "events": {},
            "links": {},
            "address": "0x5c3171AFEC854f8B6FD138ee9533629ABd8A5365",
            "transactionHash": "0x340ece2d64994827f8bb13206be0261874e7050306cf9a5ab0b5b3da62330d6c"
        }
    },
    "schemaVersion": "3.4.3",
    "updatedAt": "2024-07-28T09:24:40.660Z",
    "networkType": "ethereum",
    "devdoc": {
        "kind": "dev",
        "methods": {
            "owner()": {
                "details": "Returns the address of the current owner."
            },
            "paused()": {
                "details": "Returns true if the contract is paused, and false otherwise."
            },
            "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
            },
            "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
            }
        },
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
    }
}
