{
  "contractName": "JCCChainList",
  "abi": [
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "transferAdministrator",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "admin",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "Add",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "Remove",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousAdmin",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "AdministratorTransferred",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "uint256"
        },
        {
          "name": "_symbol",
          "type": "string"
        }
      ],
      "name": "insert",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_id",
          "type": "uint256"
        }
      ],
      "name": "remove",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_idx",
          "type": "uint256"
        }
      ],
      "name": "get",
      "outputs": [
        {
          "components": [
            {
              "name": "idx",
              "type": "uint256"
            },
            {
              "name": "id",
              "type": "uint256"
            },
            {
              "name": "symbol",
              "type": "string"
            }
          ],
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_id",
          "type": "uint256"
        }
      ],
      "name": "getById",
      "outputs": [
        {
          "components": [
            {
              "name": "idx",
              "type": "uint256"
            },
            {
              "name": "id",
              "type": "uint256"
            },
            {
              "name": "symbol",
              "type": "string"
            }
          ],
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_symbol",
          "type": "string"
        }
      ],
      "name": "getBySymbol",
      "outputs": [
        {
          "components": [
            {
              "name": "idx",
              "type": "uint256"
            },
            {
              "name": "id",
              "type": "uint256"
            },
            {
              "name": "symbol",
              "type": "string"
            }
          ],
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "from",
          "type": "uint256"
        },
        {
          "name": "_count",
          "type": "uint256"
        }
      ],
      "name": "getList",
      "outputs": [
        {
          "components": [
            {
              "name": "idx",
              "type": "uint256"
            },
            {
              "name": "id",
              "type": "uint256"
            },
            {
              "name": "symbol",
              "type": "string"
            }
          ],
          "name": "",
          "type": "tuple[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "count",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"count\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"remove\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_idx\",\"type\":\"uint256\"}],\"name\":\"get\",\"outputs\":[{\"components\":[{\"name\":\"idx\",\"type\":\"uint256\"},{\"name\":\"id\",\"type\":\"uint256\"},{\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"from\",\"type\":\"uint256\"},{\"name\":\"_count\",\"type\":\"uint256\"}],\"name\":\"getList\",\"outputs\":[{\"components\":[{\"name\":\"idx\",\"type\":\"uint256\"},{\"name\":\"id\",\"type\":\"uint256\"},{\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"transferAdministrator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_id\",\"type\":\"uint256\"},{\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"insert\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"getBySymbol\",\"outputs\":[{\"components\":[{\"name\":\"idx\",\"type\":\"uint256\"},{\"name\":\"id\",\"type\":\"uint256\"},{\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"getById\",\"outputs\":[{\"components\":[{\"name\":\"idx\",\"type\":\"uint256\"},{\"name\":\"id\",\"type\":\"uint256\"},{\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"Add\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"Remove\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdministratorTransferred\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"renounceOwnership()\":{\"details\":\"\\u653e\\u5f03\\u5408\\u7ea6\\u7684\\u6240\\u6709\\u6743\\uff0c\\u6ce8\\u610f\\uff0c\\u5408\\u7ea6\\u6ca1\\u6709\\u4efb\\u4f55\\u4eba\\u53ef\\u4ee5\\u62e5\\u6709\\u4e86\\uff0c\\u90a3\\u4e48\\u5f88\\u591a\\u62e5\\u6709\\u8005\\u5e94\\u8be5\\u6709\\u7684\\u80fd\\u529b\\uff0c\\u90fd\\u4e0d\\u80fd\\u8bbf\\u95ee\\u4e86\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/utils/JCCChainList.sol\":\"JCCChainList\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/list/ChainList.sol\":{\"keccak256\":\"0x89f2e8957412795e5e4296a8f83b787736a043280dcf1d032170838a849e461c\",\"urls\":[\"bzzr://2787c91383da9eabe221e7058451a9e7ed6c75b44e656b0a235888701ed836e6\"]},\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x239546071316c89d3bbc9e61b2ccae270a4493bbd2f7c240052f533807d50ab7\",\"urls\":[\"bzzr://267bf48e0a30f7b671aa3c98a6b27ffe7bc64efd6533f49e54188b520baa94c5\"]},\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/owner/Administrative.sol\":{\"keccak256\":\"0xca1f191b7611b7fec06b5c299eaf62dcca56dbbf9f6e3d3eaa7114466df35440\",\"urls\":[\"bzzr://74c8c8a8d3e19a60d6bfe9c7dc3b4c4b037876d5fc4b842ddce6c894e3f0f575\"]},\"/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/utils/JCCChainList.sol\":{\"keccak256\":\"0x5f97efa3e0dfc7592494748bc362b0484636e287b65fbad32993829ce87e411b\",\"urls\":[\"bzzr://67dd917c77c98ea2664a8436f866070b00e8353392f1310306cfb53d16eb56db\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b506000805433600160a060020a0319918216811780845560018054909316909117909155604051600160a060020a0390911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600154604051600160a060020a03909116906000907f399b55200f7f639a63d76efe3dcfa9156ce367058d6b673041b84a628885f5a7908290a3611831806100b26000396000f3006080604052600436106100b95763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306661abd81146100be5780634cc82215146100e9578063715018a6146101165780638da5cb5b1461012d5780639507d39a1461014f578063a9816b081461017c578063c648a3a2146101a9578063d6026510146101c9578063dd93eafc146101e9578063f2fde38b14610209578063f4f4d23714610229578063f851a44014610249575b600080fd5b3480156100ca57600080fd5b506100d361025e565b6040516100e09190611739565b60405180910390f35b3480156100f557600080fd5b50610109610104366004611218565b610270565b6040516100e0919061167a565b34801561012257600080fd5b5061012b610323565b005b34801561013957600080fd5b506101426103a7565b6040516100e0919061165b565b34801561015b57600080fd5b5061016f61016a366004611218565b6103b6565b6040516100e09190611728565b34801561018857600080fd5b5061019c610197366004611288565b6103d5565b6040516100e09190611669565b3480156101b557600080fd5b5061012b6101c43660046111bd565b6103f0565b3480156101d557600080fd5b506101096101e4366004611236565b6104c8565b3480156101f557600080fd5b5061016f6102043660046111e3565b610574565b34801561021557600080fd5b5061012b6102243660046111bd565b61058d565b34801561023557600080fd5b5061016f610244366004611218565b61064d565b34801561025557600080fd5b50610142610666565b600061026a6002610675565b90505b90565b60008054600160a060020a03163314806102945750600154600160a060020a031633145b15156102be5760405160e560020a62461bcd0281526004016102b590611688565b60405180910390fd5b6102cf60028363ffffffff61067c16565b15156102f05760405160e560020a62461bcd0281526004016102b590611718565b60405182907f476e4aa4bb19dbdea8700b4db99d81ad2fefcf51924ba5d493b7be6393f8220190600090a2506001919050565b600054600160a060020a031633146103505760405160e560020a62461bcd0281526004016102b5906116a8565b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031690565b6103be610f7a565b6103cf60028363ffffffff61082b16565b92915050565b60606103e96002848463ffffffff61094116565b9392505050565b600054600160a060020a03163314806104135750600154600160a060020a031633145b15156104345760405160e560020a62461bcd0281526004016102b590611688565b600160a060020a038116151561045f5760405160e560020a62461bcd0281526004016102b590611698565b600154604051600160a060020a038084169216907f399b55200f7f639a63d76efe3dcfa9156ce367058d6b673041b84a628885f5a790600090a36001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008054600160a060020a03163314806104ec5750600154600160a060020a031633145b151561050d5760405160e560020a62461bcd0281526004016102b590611688565b61051f6002848463ffffffff610ae016565b15156105405760405160e560020a62461bcd0281526004016102b5906116e8565b60405183907f90f1f758f0e2b40929b1fd48df7ebe10afc272a362e1f0d63a90b8b4715d799f90600090a250600192915050565b61057c610f7a565b6103cf60028363ffffffff610bab16565b600054600160a060020a031633146105ba5760405160e560020a62461bcd0281526004016102b5906116a8565b600160a060020a03811615156105e55760405160e560020a62461bcd0281526004016102b5906116b8565b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b610655610f7a565b6103cf60028363ffffffff610cee16565b600154600160a060020a031690565b6002015490565b600080600061068b8585610d41565b151561069a5760009250610823565b600084815260208690526040902054600286018054919350906106c490600163ffffffff610e5d16565b815481106106ce57fe5b906000526020600020906003020190508085600201838154811015156106f057fe5b9060005260206000209060030201600082015481600001556001820154816001015560028201816002019080546001816001161561010002031660029004610739929190610f9c565b50505060018181015460009081526020878152604080832086905560028086018054835181881615610100026000190190911692909204601f810185900485028301850190935282825287958b0194936107e993908301828280156107df5780601f106107b4576101008083540402835291602001916107df565b820191906000526020600020905b8154815290600101906020018083116107c257829003601f168201915b5050505050610e6f565b8152602081019190915260400160002055600285015461081090600163ffffffff610e5d16565b61081d6002870182611021565b50600192505b505092915050565b610833610f7a565b600283015482106108595760405160e560020a62461bcd0281526004016102b590611708565b6002830180548390811061086957fe5b9060005260206000209060030201606060405190810160405290816000820154815260200160018201548152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109305780601f1061090557610100808354040283529160200191610930565b820191906000526020600020905b81548152906001019060200180831161091357829003601f168201915b505050505081525050905092915050565b6060600081818085116109695760405160e560020a62461bcd0281526004016102b5906116d8565b846040519080825280602002602001820160405280156109a357816020015b610990610f7a565b8152602001906001900390816109885790505b5091508590505b6002870154811015610ad657848314156109c357610ad6565b600287018054829081106109d357fe5b9060005260206000209060030201606060405190810160405290816000820154815260200160018201548152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a9a5780601f10610a6f57610100808354040283529160200191610a9a565b820191906000526020600020905b815481529060010190602001808311610a7d57829003601f168201915b5050505050815250508284815181101515610ab157fe5b60209081029091010152610acc83600163ffffffff610f3916565b92506001016109aa565b5095945050505050565b6000610aea610f7a565b610af48585610d41565b15610b025760009150610ba3565b506040805160608101825260028087018054808452602080850189815295850188815260018084018086556000958652948390208751600390950201938455965196830196909655945180519495929486949293610b64938501920190611052565b5050825160008781526020899052604081209190915583519250600188019150610b8d86610e6f565b8152602081019190915260400160002055600191505b509392505050565b610bb3610f7a565b600083600201846001016000610bc886610e6f565b815260208101919091526040016000205481548110610be357fe5b90600052602060002090600302019050610c01848260010154610d41565b1515610c225760405160e560020a62461bcd0281526004016102b5906116c8565b80606060405190810160405290816000820154815260200160018201548152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cdc5780601f10610cb157610100808354040283529160200191610cdc565b820191906000526020600020905b815481529060010190602001808311610cbf57829003601f168201915b50505050508152505091505092915050565b610cf6610f7a565b610d008383610d41565b1515610d215760405160e560020a62461bcd0281526004016102b5906116c8565b600082815260208490526040902054600284018054909190811061086957fe5b60028201546000901515610d57575060006103cf565b6000828152602084905260409020546002840180548492908110610d7757fe5b9060005260206000209060030201600101541480156103e95750600082815260208490526040812054600285018054610e5592908110610db357fe5b600091825260209182902060026003909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015610e4b5780601f10610e2057610100808354040283529160200191610e4b565b820191906000526020600020905b815481529060010190602001808311610e2e57829003601f168201915b5050505050610f48565b119392505050565b600082821115610e6957fe5b50900390565b6000816040516020018082805190602001908083835b60208310610ea45780518252601f199092019160209182019101610e85565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610f075780518252601f199092019160209182019101610ee8565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b6000828201838110156103e957fe5b805160009082906104001015610f735760405160e560020a62461bcd0281526004016102b5906116f8565b5192915050565b6060604051908101604052806000815260200160008152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610fd55780548555611011565b8280016001018555821561101157600052602060002091601f016020900482015b82811115611011578254825591600101919060010190610ff6565b5061101d9291506110c0565b5090565b81548183558181111561104d5760030281600302836000526020600020918201910161104d91906110da565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061109357805160ff1916838001178555611011565b82800160010185558215611011579182015b828111156110115782518255916020019190600101906110a5565b61026d91905b8082111561101d57600081556001016110c6565b61026d91905b8082111561101d57600080825560018201819055611101600283018261110a565b506003016110e0565b50805460018160011615610100020316600290046000825580601f10611130575061114e565b601f01602090049060005260206000209081019061114e91906110c0565b50565b60006103e982356117a0565b6000601f8201831361116e57600080fd5b813561118161117c8261176e565b611747565b9150808252602083016020830185838301111561119d57600080fd5b6111a88382846117b1565b50505092915050565b60006103e9823561026d565b6000602082840312156111cf57600080fd5b60006111db8484611151565b949350505050565b6000602082840312156111f557600080fd5b813567ffffffffffffffff81111561120c57600080fd5b6111db8482850161115d565b60006020828403121561122a57600080fd5b60006111db84846111b1565b6000806040838503121561124957600080fd5b600061125585856111b1565b925050602083013567ffffffffffffffff81111561127257600080fd5b61127e8582860161115d565b9150509250929050565b6000806040838503121561129b57600080fd5b60006112a785856111b1565b925050602061127e858286016111b1565b6112c1816117a0565b82525050565b60006112d28261179c565b808452602084019350836020820285016112eb85611796565b60005b8481101561132257838303885261130683835161160a565b925061131182611796565b6020989098019791506001016112ee565b50909695505050505050565b6112c1816117ac565b60006113428261179c565b8084526113568160208601602086016117bd565b61135f816117ed565b9093016020019392505050565b602b81527f6f6e6c79206f776e6572206f722061646d696e6973747261746f722063616e2060208201527f6d6f646966792074686973000000000000000000000000000000000000000000604082015260600190565b602e81527f43616e206e6f74207472616e736665722061646d696e6973747261746f72207460208201527f6f207a65726f2061646472657373000000000000000000000000000000000000604082015260600190565b601a81527f6f6e6c79206f776e65722063616e206d6f646966792074686973000000000000602082015260400190565b602681527f43616e206e6f74207472616e73666572206f776e657220746f207a65726f206160208201527f6464726573730000000000000000000000000000000000000000000000000000604082015260600190565b601581527f636861696e2064617461206d7573742065786973740000000000000000000000602082015260400190565b60208082527f72657475726e206e756d626572206d75737420626967676572207468616e20309082015260400190565b601181527f61646420636861696e2073756363657373000000000000000000000000000000602082015260400190565b602381527f746f6f206c6172676520737472696e67206d616b65206f766572666c6f77207260208201527f69736b0000000000000000000000000000000000000000000000000000000000604082015260600190565b602381527f696e646578206d75737420736d616c6c207468616e2063757272656e7420636f60208201527f756e740000000000000000000000000000000000000000000000000000000000604082015260600190565b601481527f72656d6f766520636861696e2073756363657373000000000000000000000000602082015260400190565b8051600090606084019061161e8582611652565b5060208301516116316020860182611652565b50604083015184820360408601526116498282611337565b95945050505050565b6112c18161026d565b602081016103cf82846112b8565b602080825281016103e981846112c7565b602081016103cf828461132e565b602080825281016103cf8161136c565b602080825281016103cf816113c2565b602080825281016103cf81611418565b602080825281016103cf81611448565b602080825281016103cf8161149e565b602080825281016103cf816114ce565b602080825281016103cf816114fe565b602080825281016103cf8161152e565b602080825281016103cf81611584565b602080825281016103cf816115da565b602080825281016103e9818461160a565b602081016103cf8284611652565b60405181810167ffffffffffffffff8111828210171561176657600080fd5b604052919050565b600067ffffffffffffffff82111561178557600080fd5b506020601f91909101601f19160190565b60200190565b5190565b600160a060020a031690565b151590565b82818337506000910152565b60005b838110156117d85781810151838201526020016117c0565b838111156117e7576000848401525b50505050565b601f01601f1916905600a265627a7a723058202bf6409ada9c79bfe8d6c317694c7e19b41d785de693cc8e6c14da53b22ca94e6c6578706572696d656e74616cf50037",
  "deployedBytecode": "0x6080604052600436106100b95763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306661abd81146100be5780634cc82215146100e9578063715018a6146101165780638da5cb5b1461012d5780639507d39a1461014f578063a9816b081461017c578063c648a3a2146101a9578063d6026510146101c9578063dd93eafc146101e9578063f2fde38b14610209578063f4f4d23714610229578063f851a44014610249575b600080fd5b3480156100ca57600080fd5b506100d361025e565b6040516100e09190611739565b60405180910390f35b3480156100f557600080fd5b50610109610104366004611218565b610270565b6040516100e0919061167a565b34801561012257600080fd5b5061012b610323565b005b34801561013957600080fd5b506101426103a7565b6040516100e0919061165b565b34801561015b57600080fd5b5061016f61016a366004611218565b6103b6565b6040516100e09190611728565b34801561018857600080fd5b5061019c610197366004611288565b6103d5565b6040516100e09190611669565b3480156101b557600080fd5b5061012b6101c43660046111bd565b6103f0565b3480156101d557600080fd5b506101096101e4366004611236565b6104c8565b3480156101f557600080fd5b5061016f6102043660046111e3565b610574565b34801561021557600080fd5b5061012b6102243660046111bd565b61058d565b34801561023557600080fd5b5061016f610244366004611218565b61064d565b34801561025557600080fd5b50610142610666565b600061026a6002610675565b90505b90565b60008054600160a060020a03163314806102945750600154600160a060020a031633145b15156102be5760405160e560020a62461bcd0281526004016102b590611688565b60405180910390fd5b6102cf60028363ffffffff61067c16565b15156102f05760405160e560020a62461bcd0281526004016102b590611718565b60405182907f476e4aa4bb19dbdea8700b4db99d81ad2fefcf51924ba5d493b7be6393f8220190600090a2506001919050565b600054600160a060020a031633146103505760405160e560020a62461bcd0281526004016102b5906116a8565b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031690565b6103be610f7a565b6103cf60028363ffffffff61082b16565b92915050565b60606103e96002848463ffffffff61094116565b9392505050565b600054600160a060020a03163314806104135750600154600160a060020a031633145b15156104345760405160e560020a62461bcd0281526004016102b590611688565b600160a060020a038116151561045f5760405160e560020a62461bcd0281526004016102b590611698565b600154604051600160a060020a038084169216907f399b55200f7f639a63d76efe3dcfa9156ce367058d6b673041b84a628885f5a790600090a36001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008054600160a060020a03163314806104ec5750600154600160a060020a031633145b151561050d5760405160e560020a62461bcd0281526004016102b590611688565b61051f6002848463ffffffff610ae016565b15156105405760405160e560020a62461bcd0281526004016102b5906116e8565b60405183907f90f1f758f0e2b40929b1fd48df7ebe10afc272a362e1f0d63a90b8b4715d799f90600090a250600192915050565b61057c610f7a565b6103cf60028363ffffffff610bab16565b600054600160a060020a031633146105ba5760405160e560020a62461bcd0281526004016102b5906116a8565b600160a060020a03811615156105e55760405160e560020a62461bcd0281526004016102b5906116b8565b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b610655610f7a565b6103cf60028363ffffffff610cee16565b600154600160a060020a031690565b6002015490565b600080600061068b8585610d41565b151561069a5760009250610823565b600084815260208690526040902054600286018054919350906106c490600163ffffffff610e5d16565b815481106106ce57fe5b906000526020600020906003020190508085600201838154811015156106f057fe5b9060005260206000209060030201600082015481600001556001820154816001015560028201816002019080546001816001161561010002031660029004610739929190610f9c565b50505060018181015460009081526020878152604080832086905560028086018054835181881615610100026000190190911692909204601f810185900485028301850190935282825287958b0194936107e993908301828280156107df5780601f106107b4576101008083540402835291602001916107df565b820191906000526020600020905b8154815290600101906020018083116107c257829003601f168201915b5050505050610e6f565b8152602081019190915260400160002055600285015461081090600163ffffffff610e5d16565b61081d6002870182611021565b50600192505b505092915050565b610833610f7a565b600283015482106108595760405160e560020a62461bcd0281526004016102b590611708565b6002830180548390811061086957fe5b9060005260206000209060030201606060405190810160405290816000820154815260200160018201548152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109305780601f1061090557610100808354040283529160200191610930565b820191906000526020600020905b81548152906001019060200180831161091357829003601f168201915b505050505081525050905092915050565b6060600081818085116109695760405160e560020a62461bcd0281526004016102b5906116d8565b846040519080825280602002602001820160405280156109a357816020015b610990610f7a565b8152602001906001900390816109885790505b5091508590505b6002870154811015610ad657848314156109c357610ad6565b600287018054829081106109d357fe5b9060005260206000209060030201606060405190810160405290816000820154815260200160018201548152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a9a5780601f10610a6f57610100808354040283529160200191610a9a565b820191906000526020600020905b815481529060010190602001808311610a7d57829003601f168201915b5050505050815250508284815181101515610ab157fe5b60209081029091010152610acc83600163ffffffff610f3916565b92506001016109aa565b5095945050505050565b6000610aea610f7a565b610af48585610d41565b15610b025760009150610ba3565b506040805160608101825260028087018054808452602080850189815295850188815260018084018086556000958652948390208751600390950201938455965196830196909655945180519495929486949293610b64938501920190611052565b5050825160008781526020899052604081209190915583519250600188019150610b8d86610e6f565b8152602081019190915260400160002055600191505b509392505050565b610bb3610f7a565b600083600201846001016000610bc886610e6f565b815260208101919091526040016000205481548110610be357fe5b90600052602060002090600302019050610c01848260010154610d41565b1515610c225760405160e560020a62461bcd0281526004016102b5906116c8565b80606060405190810160405290816000820154815260200160018201548152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cdc5780601f10610cb157610100808354040283529160200191610cdc565b820191906000526020600020905b815481529060010190602001808311610cbf57829003601f168201915b50505050508152505091505092915050565b610cf6610f7a565b610d008383610d41565b1515610d215760405160e560020a62461bcd0281526004016102b5906116c8565b600082815260208490526040902054600284018054909190811061086957fe5b60028201546000901515610d57575060006103cf565b6000828152602084905260409020546002840180548492908110610d7757fe5b9060005260206000209060030201600101541480156103e95750600082815260208490526040812054600285018054610e5592908110610db357fe5b600091825260209182902060026003909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015610e4b5780601f10610e2057610100808354040283529160200191610e4b565b820191906000526020600020905b815481529060010190602001808311610e2e57829003601f168201915b5050505050610f48565b119392505050565b600082821115610e6957fe5b50900390565b6000816040516020018082805190602001908083835b60208310610ea45780518252601f199092019160209182019101610e85565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610f075780518252601f199092019160209182019101610ee8565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b6000828201838110156103e957fe5b805160009082906104001015610f735760405160e560020a62461bcd0281526004016102b5906116f8565b5192915050565b6060604051908101604052806000815260200160008152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610fd55780548555611011565b8280016001018555821561101157600052602060002091601f016020900482015b82811115611011578254825591600101919060010190610ff6565b5061101d9291506110c0565b5090565b81548183558181111561104d5760030281600302836000526020600020918201910161104d91906110da565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061109357805160ff1916838001178555611011565b82800160010185558215611011579182015b828111156110115782518255916020019190600101906110a5565b61026d91905b8082111561101d57600081556001016110c6565b61026d91905b8082111561101d57600080825560018201819055611101600283018261110a565b506003016110e0565b50805460018160011615610100020316600290046000825580601f10611130575061114e565b601f01602090049060005260206000209081019061114e91906110c0565b50565b60006103e982356117a0565b6000601f8201831361116e57600080fd5b813561118161117c8261176e565b611747565b9150808252602083016020830185838301111561119d57600080fd5b6111a88382846117b1565b50505092915050565b60006103e9823561026d565b6000602082840312156111cf57600080fd5b60006111db8484611151565b949350505050565b6000602082840312156111f557600080fd5b813567ffffffffffffffff81111561120c57600080fd5b6111db8482850161115d565b60006020828403121561122a57600080fd5b60006111db84846111b1565b6000806040838503121561124957600080fd5b600061125585856111b1565b925050602083013567ffffffffffffffff81111561127257600080fd5b61127e8582860161115d565b9150509250929050565b6000806040838503121561129b57600080fd5b60006112a785856111b1565b925050602061127e858286016111b1565b6112c1816117a0565b82525050565b60006112d28261179c565b808452602084019350836020820285016112eb85611796565b60005b8481101561132257838303885261130683835161160a565b925061131182611796565b6020989098019791506001016112ee565b50909695505050505050565b6112c1816117ac565b60006113428261179c565b8084526113568160208601602086016117bd565b61135f816117ed565b9093016020019392505050565b602b81527f6f6e6c79206f776e6572206f722061646d696e6973747261746f722063616e2060208201527f6d6f646966792074686973000000000000000000000000000000000000000000604082015260600190565b602e81527f43616e206e6f74207472616e736665722061646d696e6973747261746f72207460208201527f6f207a65726f2061646472657373000000000000000000000000000000000000604082015260600190565b601a81527f6f6e6c79206f776e65722063616e206d6f646966792074686973000000000000602082015260400190565b602681527f43616e206e6f74207472616e73666572206f776e657220746f207a65726f206160208201527f6464726573730000000000000000000000000000000000000000000000000000604082015260600190565b601581527f636861696e2064617461206d7573742065786973740000000000000000000000602082015260400190565b60208082527f72657475726e206e756d626572206d75737420626967676572207468616e20309082015260400190565b601181527f61646420636861696e2073756363657373000000000000000000000000000000602082015260400190565b602381527f746f6f206c6172676520737472696e67206d616b65206f766572666c6f77207260208201527f69736b0000000000000000000000000000000000000000000000000000000000604082015260600190565b602381527f696e646578206d75737420736d616c6c207468616e2063757272656e7420636f60208201527f756e740000000000000000000000000000000000000000000000000000000000604082015260600190565b601481527f72656d6f766520636861696e2073756363657373000000000000000000000000602082015260400190565b8051600090606084019061161e8582611652565b5060208301516116316020860182611652565b50604083015184820360408601526116498282611337565b95945050505050565b6112c18161026d565b602081016103cf82846112b8565b602080825281016103e981846112c7565b602081016103cf828461132e565b602080825281016103cf8161136c565b602080825281016103cf816113c2565b602080825281016103cf81611418565b602080825281016103cf81611448565b602080825281016103cf8161149e565b602080825281016103cf816114ce565b602080825281016103cf816114fe565b602080825281016103cf8161152e565b602080825281016103cf81611584565b602080825281016103cf816115da565b602080825281016103e9818461160a565b602081016103cf8284611652565b60405181810167ffffffffffffffff8111828210171561176657600080fd5b604052919050565b600067ffffffffffffffff82111561178557600080fd5b506020601f91909101601f19160190565b60200190565b5190565b600160a060020a031690565b151590565b82818337506000910152565b60005b838110156117d85781810151838201526020016117c0565b838111156117e7576000848401525b50505050565b601f01601f1916905600a265627a7a723058202bf6409ada9c79bfe8d6c317694c7e19b41d785de693cc8e6c14da53b22ca94e6c6578706572696d656e74616cf50037",
  "sourceMap": "174:1199:32:-;;;371:40;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1142:6:30;:19;;1151:10;-1:-1:-1;;;;;;1142:19:30;;;;;;;;-1:-1:-1;1167:19:30;;;;;;;;;;;1197:40;;-1:-1:-1;;;;;1230:6:30;;;;1142;1197:40;;1142:6;;1197:40;1285:6;;1248:44;;-1:-1:-1;;;;;1285:6:30;;;;;;1248:44;;1285:6;;1248:44;174:1199:32;;;;;;",
  "deployedSourceMap": "174:1199:32:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1292:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1292:79:32;;;;;;;;;;;;;;;;;;;;619:167;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;619:167:32;;;;;;;;;;;;;;;;;1844:127:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1844:127:30;;;;;;2458:71;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2458:71:30;;;;;;;;;;;;790:101:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;790:101:32;;;;;;;;;;;;;;;;;1132:156;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1132:156:32;;;;;;;;;;;;;;;;;2197:257:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2197:257:30;;;;;;;;;415:200:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;415:200:32;;;;;;;;;1006:122;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1006:122:32;;;;;;;;;1975:218:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1975:218:30;;;;;;;;;895:107:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;895:107:32;;;;;;;;;2533:71:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2533:71:30;;;;1292:79:32;1330:7;1352:14;:6;:12;:14::i;:::-;1345:21;;1292:79;;:::o;619:167::-;679:4;1581:6:30;;-1:-1:-1;;;;;1581:6:30;1567:10;:20;;1566:48;;-1:-1:-1;1607:6:30;;-1:-1:-1;;;;;1607:6:30;1593:10;:20;1566:48;1551:122;;;;;;-1:-1:-1;;;;;1551:122:30;;;;;;;;;;;;;;;;;699:18:32;:6;713:3;699:18;:13;:18;:::i;:::-;691:51;;;;;;-1:-1:-1;;;;;691:51:32;;;;;;;;;753:11;;760:3;;753:11;;;;;-1:-1:-1;777:4:32;619:167;;;:::o;1844:127:30:-;1350:6;;-1:-1:-1;;;;;1350:6:30;1336:10;:20;1328:59;;;;-1:-1:-1;;;;;1328:59:30;;;;;;;;;1938:1;1922:6;;1901:40;;-1:-1:-1;;;;;1922:6:30;;;;1901:40;;1938:1;;1901:40;1964:1;1947:19;;-1:-1:-1;;1947:19:30;;;1844:127::o;2458:71::-;2496:7;2518:6;-1:-1:-1;;;;;2518:6:30;2458:71;:::o;790:101:32:-;838:17;;:::i;:::-;870:16;:6;881:4;870:16;:10;:16;:::i;:::-;863:23;790:101;-1:-1:-1;;790:101:32:o;1132:156::-;1212:19;1255:28;:6;1270:4;1276:6;1255:28;:14;:28;:::i;:::-;1248:35;1132:156;-1:-1:-1;;;1132:156:32:o;2197:257:30:-;1581:6;;-1:-1:-1;;;;;1581:6:30;1567:10;:20;;1566:48;;-1:-1:-1;1607:6:30;;-1:-1:-1;;;;;1607:6:30;1593:10;:20;1566:48;1551:122;;;;;;-1:-1:-1;;;;;1551:122:30;;;;;;;;;-1:-1:-1;;;;;2289:22:30;;;;2274:99;;;;-1:-1:-1;;;;;2274:99:30;;;;;;;;;2409:6;;2384:42;;-1:-1:-1;;;;;2384:42:30;;;;2409:6;;2384:42;;2409:6;;2384:42;2432:6;:17;;-1:-1:-1;;2432:17:30;-1:-1:-1;;;;;2432:17:30;;;;;;;;;;2197:257::o;415:200:32:-;503:4;1581:6:30;;-1:-1:-1;;;;;1581:6:30;1567:10;:20;;1566:48;;-1:-1:-1;1607:6:30;;-1:-1:-1;;;;;1607:6:30;1593:10;:20;1566:48;1551:122;;;;;;-1:-1:-1;;;;;1551:122:30;;;;;;;;;525:27:32;:6;539:3;544:7;525:27;:13;:27;:::i;:::-;517:57;;;;;;-1:-1:-1;;;;;517:57:32;;;;;;;;;585:8;;589:3;;585:8;;;;;-1:-1:-1;606:4:32;415:200;;;;:::o;1006:122::-;1064:17;;:::i;:::-;1096:27;:6;1115:7;1096:27;:18;:27;:::i;1975:218:30:-;1350:6;;-1:-1:-1;;;;;1350:6:30;1336:10;:20;1328:59;;;;-1:-1:-1;;;;;1328:59:30;;;;;;;;;-1:-1:-1;;;;;2051:22:30;;;;2043:73;;;;-1:-1:-1;;;;;2043:73:30;;;;;;;;;2148:6;;;2127:38;;-1:-1:-1;;;;;2127:38:30;;;;2148:6;;;2127:38;;;2171:6;:17;;-1:-1:-1;;2171:17:30;-1:-1:-1;;;;;2171:17:30;;;;;;;;;;1975:218::o;895:107:32:-;946:17;;:::i;:::-;978:19;:6;993:3;978:19;:14;:19;:::i;2533:71:30:-;2593:6;;-1:-1:-1;;;;;2593:6:30;2533:71;:::o;1942:104:14:-;2025:9;;:16;;1942:104::o;1495:443::-;1565:4;1633:15;1672:25;1582:16;1588:4;1594:3;1582:5;:16::i;:::-;1581:17;1577:50;;;1615:5;1608:12;;;;1577:50;1651:10;:15;;;;;;;;;;;1700:9;;;1710:16;;1651:15;;-1:-1:-1;1700:9:14;1710:23;;1731:1;1710:23;:20;:23;:::i;:::-;1700:34;;;;;;;;;;;;;;;;;;1672:62;;1761:9;1740:4;:9;;1750:7;1740:18;;;;;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;1787:12:14;;;;;1776:10;:24;;;;;;;;;;;:34;;;1839:16;;;;1831:25;;;;;;;;;;-1:-1:-1;;1831:25:14;;;;;;;;;;;;;;;;;;;;;;;;;;1776:34;;1816:14;;;1776:10;1831:25;;;;;1839:16;1831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;:25::i;:::-;1816:41;;;;;;;;;;;;;:51;1892:9;;;:16;:23;;1913:1;1892:23;:20;:23;:::i;:::-;1873:42;:9;;;:42;;:::i;:::-;;1929:4;1922:11;;1495:443;;;;;;;:::o;2050:219::-;2136:17;;:::i;:::-;2179:9;;;:16;2171:24;;2163:72;;;;-1:-1:-1;;;;;2163:72:14;;;;;;;;;2248:9;;;:16;;2258:5;;2248:16;;;;;;;;;;;;;;;;2241:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2050:219;;;;:::o;2939:485::-;3048:19;3082:12;3048:19;3082:12;3112:10;;;3104:55;;;;-1:-1:-1;;;;;3104:55:14;;;;;;;;;3222:6;3198:31;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;3165:64;;3253:4;3241:16;;3236:167;3263:9;;;:16;3259:20;;3236:167;;;3306:6;3298:4;:14;3294:44;;;3324:5;;3294:44;3358:9;;;:12;;3368:1;;3358:12;;;;;;;;;;;;;;;;3346:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:3;3350:4;3346:9;;;;;;;;;;;;;;;;;;:24;3385:11;:4;3394:1;3385:11;:8;:11;:::i;:::-;3378:18;-1:-1:-1;3281:3:14;;3236:167;;;-1:-1:-1;3416:3:14;2939:485;-1:-1:-1;;;;;2939:485:14:o;1117:374::-;1219:4;1286:16;;:::i;:::-;1235;1241:4;1247:3;1235:5;:16::i;:::-;1231:49;;;1268:5;1261:12;;;;1231:49;-1:-1:-1;1311:58:14;;;;;;;;1325:9;;;;:16;;1311:58;;;;;;;;;;;;;;;;39:1:-1;23:18;;;45:23;;;-1:-1;1376:17:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:58;;23:18:-1;;1311:58:14;;1376:17;;;;;;;;;;:::i;:::-;-1:-1:-1;;1417:5:14;;;1399:15;;;;;;;;;;:23;;;;1463:5;;;-1:-1:-1;1428:14:14;;;;-1:-1:-1;1443:16:14;1451:7;1443;:16::i;:::-;1428:32;;;;;;;;;;;;;:40;1482:4;;-1:-1:-1;1117:374:14;;;;;;;:::o;2486:348::-;2581:17;;:::i;:::-;2608:27;2638:4;:9;;2648:4;:14;;:32;2663:16;2671:7;2663;:16::i;:::-;2648:32;;;;;;;;;;;;;;2638:43;;;;;;;;;;;;;;;;;;2608:73;;2772:17;2778:4;2784:1;:4;;;2772:5;:17::i;:::-;2764:51;;;;;;-1:-1:-1;;;;;2764:51:14;;;;;;;;;2828:1;2821:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2486:348;;;;;:::o;2273:209::-;2361:17;;:::i;:::-;2396:16;2402:4;2408:3;2396:5;:16::i;:::-;2388:50;;;;;;-1:-1:-1;;;;;2388:50:14;;;;;;;;;2461:10;:15;;;;;;;;;;;2451:9;;;:26;;:9;;2461:15;2451:26;;;;;466:256;570:9;;;:16;552:4;;570:21;566:39;;;-1:-1:-1;600:5:14;593:12;;566:39;629:10;:15;;;;;;;;;;;619:9;;;:26;;652:3;;629:15;619:26;;;;;;;;;;;;;;;;:29;;;:36;:97;;;;-1:-1:-1;715:1:14;688:15;;;;;;;;;;;678:9;;;:26;;665:47;;688:15;678:26;;;;;;;;;;;;;;;:33;:26;;;;;:33;;665:47;;;;;;-1:-1:-1;;665:47:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;678:33;;665:47;;;678:33;665:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:47::i;:::-;:51;;466:256;-1:-1:-1;;;466:256:14:o;1093:116:20:-;1153:7;1175:8;;;;1168:16;;;;-1:-1:-1;1197:7:20;;;1093:116::o;927:119:14:-;983:7;1032;1015:25;;;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1015:25:14;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1015:25:14;;;1005:36;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;1005:36:14;;;;;;;;;;;;-1:-1:-1;;;;;927:119:14:o;1319:134:20:-;1379:7;1406;;;1426;;;;1419:15;;;726:197:14;841:8;;784:7;;822:4;;853;-1:-1:-1;841:16:14;833:64;;;;-1:-1:-1;;;;;833:64:14;;;;;;;;;910:8;;726:197;-1:-1:-1;;726:197:14:o;174:1199:32:-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;174:1199:32;;;-1:-1:-1;174:1199:32;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;131:442;;226:4;214:17;;210:27;-1:-1;200:2;;251:1;248;241:12;200:2;288:6;275:20;310:65;325:49;367:6;325:49;;;310:65;;;301:74;;395:6;388:5;381:21;431:4;423:6;419:17;464:4;457:5;453:16;499:3;490:6;485:3;481:16;478:25;475:2;;;516:1;513;506:12;475:2;526:41;560:6;555:3;550;526:41;;;193:380;;;;;;;;581:118;;648:46;686:6;673:20;648:46;;706:241;;810:2;798:9;789:7;785:23;781:32;778:2;;;826:1;823;816:12;778:2;861:1;878:53;923:7;903:9;878:53;;;868:63;772:175;-1:-1;;;;772:175;954:347;;1068:2;1056:9;1047:7;1043:23;1039:32;1036:2;;;1084:1;1081;1074:12;1036:2;1119:31;;1170:18;1159:30;;1156:2;;;1202:1;1199;1192:12;1156:2;1222:63;1277:7;1268:6;1257:9;1253:22;1222:63;;1308:241;;1412:2;1400:9;1391:7;1387:23;1383:32;1380:2;;;1428:1;1425;1418:12;1380:2;1463:1;1480:53;1525:7;1505:9;1480:53;;1556:472;;;1687:2;1675:9;1666:7;1662:23;1658:32;1655:2;;;1703:1;1700;1693:12;1655:2;1738:1;1755:53;1800:7;1780:9;1755:53;;;1745:63;;1717:97;1873:2;1862:9;1858:18;1845:32;1897:18;1889:6;1886:30;1883:2;;;1929:1;1926;1919:12;1883:2;1949:63;2004:7;1995:6;1984:9;1980:22;1949:63;;;1939:73;;1824:194;1649:379;;;;;;2035:366;;;2156:2;2144:9;2135:7;2131:23;2127:32;2124:2;;;2172:1;2169;2162:12;2124:2;2207:1;2224:53;2269:7;2249:9;2224:53;;;2214:63;;2186:97;2314:2;2332:53;2377:7;2368:6;2357:9;2353:22;2332:53;;2408:110;2481:31;2506:5;2481:31;;;2476:3;2469:44;2463:55;;;2590:878;;2767:75;2836:5;2767:75;;;2860:6;2855:3;2848:19;2884:4;2879:3;2875:14;2868:21;;2932:3;2974:4;2966:6;2962:17;2957:3;2953:27;3000:77;3071:5;3000:77;;;3098:1;3083:346;3108:6;3105:1;3102:13;3083:346;;;3170:9;3164:4;3160:20;3155:3;3148:33;3196:100;3291:4;3282:6;3276:13;3196:100;;;3188:108;;3313:81;3387:6;3313:81;;;3417:4;3408:14;;;;;3303:91;-1:-1;3130:1;3123:9;3083:346;;;-1:-1;3442:4;;2746:722;-1:-1;;;;;;2746:722;3476:101;3543:28;3565:5;3543:28;;3584:292;;3682:35;3711:5;3682:35;;;3734:6;3729:3;3722:19;3746:63;3802:6;3795:4;3790:3;3786:14;3779:4;3772:5;3768:16;3746:63;;;3841:29;3863:6;3841:29;;;3821:50;;;3834:4;3821:50;;3662:214;-1:-1;;;3662:214;3884:397;4039:2;4027:15;;4076:66;4071:2;4062:12;;4055:88;4177:66;4172:2;4163:12;;4156:88;4272:2;4263:12;;4020:261;4290:397;4445:2;4433:15;;4482:66;4477:2;4468:12;;4461:88;4583:66;4578:2;4569:12;;4562:88;4678:2;4669:12;;4426:261;4696:296;4851:2;4839:15;;4888:66;4883:2;4874:12;;4867:88;4983:2;4974:12;;4832:160;5001:397;5156:2;5144:15;;5193:66;5188:2;5179:12;;5172:88;5294:66;5289:2;5280:12;;5273:88;5389:2;5380:12;;5137:261;5407:296;5562:2;5550:15;;5599:66;5594:2;5585:12;;5578:88;5694:2;5685:12;;5543:160;5712:296;5867:2;5855:15;;;5904:66;5890:12;;;5883:88;5999:2;5990:12;;5848:160;6017:296;6172:2;6160:15;;6209:66;6204:2;6195:12;;6188:88;6304:2;6295:12;;6153:160;6322:397;6477:2;6465:15;;6514:66;6509:2;6500:12;;6493:88;6615:66;6610:2;6601:12;;6594:88;6710:2;6701:12;;6458:261;6728:397;6883:2;6871:15;;6920:66;6915:2;6906:12;;6899:88;7021:66;7016:2;7007:12;;7000:88;7116:2;7107:12;;6864:261;7134:296;7289:2;7277:15;;7326:66;7321:2;7312:12;;7305:88;7421:2;7412:12;;7270:160;7497:737;7706:22;;7497:737;;7638:4;7629:14;;;7740:61;7633:3;7706:22;7740:61;;;7658:155;7887:4;7880:5;7876:16;7870:23;7905:62;7961:4;7956:3;7952:14;7939:11;7905:62;;;7823:156;8057:4;8050:5;8046:16;8040:23;8108:3;8102:4;8098:14;8091:4;8086:3;8082:14;8075:38;8128:68;8191:4;8178:11;8128:68;;;8120:76;7611:623;-1:-1;;;;;7611:623;9040:110;9113:31;9138:5;9113:31;;9157:193;9265:2;9250:18;;9279:61;9254:9;9313:6;9279:61;;9357:425;9557:2;9571:47;;;9542:18;;9632:140;9542:18;9758:6;9632:140;;9789:181;9891:2;9876:18;;9905:55;9880:9;9933:6;9905:55;;9977:387;10158:2;10172:47;;;10143:18;;10233:121;10143:18;10233:121;;10371:387;10552:2;10566:47;;;10537:18;;10627:121;10537:18;10627:121;;10765:387;10946:2;10960:47;;;10931:18;;11021:121;10931:18;11021:121;;11159:387;11340:2;11354:47;;;11325:18;;11415:121;11325:18;11415:121;;11553:387;11734:2;11748:47;;;11719:18;;11809:121;11719:18;11809:121;;11947:387;12128:2;12142:47;;;12113:18;;12203:121;12113:18;12203:121;;12341:387;12522:2;12536:47;;;12507:18;;12597:121;12507:18;12597:121;;12735:387;12916:2;12930:47;;;12901:18;;12991:121;12901:18;12991:121;;13129:387;13310:2;13324:47;;;13295:18;;13385:121;13295:18;13385:121;;13523:387;13704:2;13718:47;;;13689:18;;13779:121;13689:18;13779:121;;13917:341;14075:2;14089:47;;;14060:18;;14150:98;14060:18;14234:6;14150:98;;14265:193;14373:2;14358:18;;14387:61;14362:9;14421:6;14387:61;;14465:256;14527:2;14521:9;14553:17;;;14628:18;14613:34;;14649:22;;;14610:62;14607:2;;;14685:1;14682;14675:12;14607:2;14701;14694:22;14505:216;;-1:-1;14505:216;14728:259;;14872:18;14864:6;14861:30;14858:2;;;14904:1;14901;14894:12;14858:2;-1:-1;14977:4;14948;14925:17;;;;-1:-1;;14921:33;14967:15;;14795:192;14996:142;15126:4;15114:17;;15095:43;15147:128;15258:12;;15242:33;15529:128;-1:-1;;;;;15598:54;;15581:76;15664:92;15737:13;15730:21;;15713:43;16071:145;16152:6;16147:3;16142;16129:30;-1:-1;16208:1;16190:16;;16183:27;16122:94;16225:268;16290:1;16297:101;16311:6;16308:1;16305:13;16297:101;;;16378:11;;;16372:18;16359:11;;;16352:39;16333:2;16326:10;16297:101;;;16413:6;16410:1;16407:13;16404:2;;;16478:1;16469:6;16464:3;16460:16;16453:27;16404:2;16274:219;;;;;16501:97;16589:2;16569:14;-1:-1;;16565:28;;16549:49",
  "source": "pragma solidity >=0.4.24;\npragma experimental ABIEncoderV2;\n\nimport \"../list/ChainList.sol\";\nimport \"../owner/Administrative.sol\";\n\n// 定义一个调用AddressList的合约\ncontract JCCChainList is Administrative {\n  using ChainList for ChainList.chainMap;\n\n  event Add(uint256 indexed chainId);\n  event Remove(uint256 indexed chainId);\n\n  ChainList.chainMap chains;\n\n  constructor() public Administrative() {}\n\n  function insert(uint256 _id, string _symbol)\n    public\n    onlyPrivileged\n    returns (bool)\n  {\n    require(chains.insert(_id, _symbol), \"add chain success\");\n    emit Add(_id);\n    return true;\n  }\n\n  function remove(uint256 _id) public onlyPrivileged returns (bool) {\n    require(chains.remove(_id), \"remove chain success\");\n    emit Remove(_id);\n    return true;\n  }\n\n  function get(uint256 _idx) public view returns (ChainList.element) {\n    return chains.get(_idx);\n  }\n\n  function getById(uint256 _id) public view returns (ChainList.element) {\n    return chains.getById(_id);\n  }\n\n  function getBySymbol(string _symbol) public view returns (ChainList.element) {\n    return chains.getBySymbol(_symbol);\n  }\n\n  function getList(uint256 from, uint256 _count)\n    public\n    view\n    returns (ChainList.element[] memory)\n  {\n    return chains.getList(from, _count);\n  }\n\n  function count() public view returns (uint256) {\n    return chains.count();\n  }\n}\n",
  "sourcePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/utils/JCCChainList.sol",
  "ast": {
    "absolutePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/utils/JCCChainList.sol",
    "exportedSymbols": {
      "JCCChainList": [
        7113
      ]
    },
    "id": 7114,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6971,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:25:32"
      },
      {
        "id": 6972,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "26:33:32"
      },
      {
        "absolutePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/list/ChainList.sol",
        "file": "../list/ChainList.sol",
        "id": 6973,
        "nodeType": "ImportDirective",
        "scope": 7114,
        "sourceUnit": 2747,
        "src": "61:31:32",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/owner/Administrative.sol",
        "file": "../owner/Administrative.sol",
        "id": 6974,
        "nodeType": "ImportDirective",
        "scope": 7114,
        "sourceUnit": 6731,
        "src": "93:37:32",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6975,
              "name": "Administrative",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6730,
              "src": "199:14:32",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Administrative_$6730",
                "typeString": "contract Administrative"
              }
            },
            "id": 6976,
            "nodeType": "InheritanceSpecifier",
            "src": "199:14:32"
          }
        ],
        "contractDependencies": [
          6730
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7113,
        "linearizedBaseContracts": [
          7113,
          6730
        ],
        "name": "JCCChainList",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 6979,
            "libraryName": {
              "contractScope": null,
              "id": 6977,
              "name": "ChainList",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2746,
              "src": "224:9:32",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ChainList_$2746",
                "typeString": "library ChainList"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "218:39:32",
            "typeName": {
              "contractScope": null,
              "id": 6978,
              "name": "ChainList.chainMap",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2351,
              "src": "238:18:32",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_chainMap_$2351_storage_ptr",
                "typeString": "struct ChainList.chainMap"
              }
            }
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6983,
            "name": "Add",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6981,
                  "indexed": true,
                  "name": "chainId",
                  "nodeType": "VariableDeclaration",
                  "scope": 6983,
                  "src": "271:23:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6980,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "271:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "270:25:32"
            },
            "src": "261:35:32"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6987,
            "name": "Remove",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6985,
                  "indexed": true,
                  "name": "chainId",
                  "nodeType": "VariableDeclaration",
                  "scope": 6987,
                  "src": "312:23:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6984,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "312:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "311:25:32"
            },
            "src": "299:38:32"
          },
          {
            "constant": false,
            "id": 6989,
            "name": "chains",
            "nodeType": "VariableDeclaration",
            "scope": 7113,
            "src": "341:25:32",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_chainMap_$2351_storage",
              "typeString": "struct ChainList.chainMap"
            },
            "typeName": {
              "contractScope": null,
              "id": 6988,
              "name": "ChainList.chainMap",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2351,
              "src": "341:18:32",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_chainMap_$2351_storage_ptr",
                "typeString": "struct ChainList.chainMap"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6994,
              "nodeType": "Block",
              "src": "409:2:32",
              "statements": []
            },
            "documentation": null,
            "id": 6995,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [],
                "id": 6992,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6991,
                  "name": "Administrative",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6730,
                  "src": "392:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Administrative_$6730_$",
                    "typeString": "type(contract Administrative)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "392:16:32"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6990,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "382:2:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 6993,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "409:0:32"
            },
            "scope": 7113,
            "src": "371:40:32",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7021,
              "nodeType": "Block",
              "src": "511:104:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7009,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6997,
                            "src": "539:3:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7010,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6999,
                            "src": "544:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7007,
                            "name": "chains",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6989,
                            "src": "525:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_chainMap_$2351_storage",
                              "typeString": "struct ChainList.chainMap storage ref"
                            }
                          },
                          "id": 7008,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "insert",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2494,
                          "src": "525:13:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_chainMap_$2351_storage_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_chainMap_$2351_storage_ptr_$",
                            "typeString": "function (struct ChainList.chainMap storage pointer,uint256,string memory) returns (bool)"
                          }
                        },
                        "id": 7011,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "525:27:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "61646420636861696e2073756363657373",
                        "id": 7012,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "554:19:32",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_787d5de46f53d1d606fba1ee68c1a4212fe5cbc9270ea0c54ab936d5b5192fe2",
                          "typeString": "literal_string \"add chain success\""
                        },
                        "value": "add chain success"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_787d5de46f53d1d606fba1ee68c1a4212fe5cbc9270ea0c54ab936d5b5192fe2",
                          "typeString": "literal_string \"add chain success\""
                        }
                      ],
                      "id": 7006,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9044,
                        9045
                      ],
                      "referencedDeclaration": 9045,
                      "src": "517:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "517:57:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7014,
                  "nodeType": "ExpressionStatement",
                  "src": "517:57:32"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7016,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6997,
                        "src": "589:3:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7015,
                      "name": "Add",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6983,
                      "src": "585:3:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 7017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "585:8:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7018,
                  "nodeType": "EmitStatement",
                  "src": "580:13:32"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 7019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "606:4:32",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 7005,
                  "id": 7020,
                  "nodeType": "Return",
                  "src": "599:11:32"
                }
              ]
            },
            "documentation": null,
            "id": 7022,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7002,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7001,
                  "name": "onlyPrivileged",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6642,
                  "src": "475:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "475:14:32"
              }
            ],
            "name": "insert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6997,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 7022,
                  "src": "431:11:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6996,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "431:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6999,
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 7022,
                  "src": "444:14:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6998,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "444:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "430:29:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 7005,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7004,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7022,
                  "src": "503:4:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7003,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "503:4:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "502:6:32"
            },
            "scope": 7113,
            "src": "415:200:32",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7045,
              "nodeType": "Block",
              "src": "685:101:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7034,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7024,
                            "src": "713:3:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7032,
                            "name": "chains",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6989,
                            "src": "699:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_chainMap_$2351_storage",
                              "typeString": "struct ChainList.chainMap storage ref"
                            }
                          },
                          "id": 7033,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "remove",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2575,
                          "src": "699:13:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_chainMap_$2351_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_chainMap_$2351_storage_ptr_$",
                            "typeString": "function (struct ChainList.chainMap storage pointer,uint256) returns (bool)"
                          }
                        },
                        "id": 7035,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "699:18:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "72656d6f766520636861696e2073756363657373",
                        "id": 7036,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "719:22:32",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_fb421a1f71c48ddd2c66a2eaebc27918b1cd07f08c6594d4489e359c1b832ef3",
                          "typeString": "literal_string \"remove chain success\""
                        },
                        "value": "remove chain success"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_fb421a1f71c48ddd2c66a2eaebc27918b1cd07f08c6594d4489e359c1b832ef3",
                          "typeString": "literal_string \"remove chain success\""
                        }
                      ],
                      "id": 7031,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9044,
                        9045
                      ],
                      "referencedDeclaration": 9045,
                      "src": "691:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7037,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "691:51:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7038,
                  "nodeType": "ExpressionStatement",
                  "src": "691:51:32"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7040,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7024,
                        "src": "760:3:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7039,
                      "name": "Remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6987,
                      "src": "753:6:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 7041,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "753:11:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7042,
                  "nodeType": "EmitStatement",
                  "src": "748:16:32"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 7043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "777:4:32",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 7030,
                  "id": 7044,
                  "nodeType": "Return",
                  "src": "770:11:32"
                }
              ]
            },
            "documentation": null,
            "id": 7046,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7027,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7026,
                  "name": "onlyPrivileged",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6642,
                  "src": "655:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "655:14:32"
              }
            ],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7025,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7024,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 7046,
                  "src": "635:11:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7023,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "635:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "634:13:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 7030,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7029,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7046,
                  "src": "679:4:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7028,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "679:4:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "678:6:32"
            },
            "scope": 7113,
            "src": "619:167:32",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7058,
              "nodeType": "Block",
              "src": "857:34:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7055,
                        "name": "_idx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7048,
                        "src": "881:4:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7053,
                        "name": "chains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6989,
                        "src": "870:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_chainMap_$2351_storage",
                          "typeString": "struct ChainList.chainMap storage ref"
                        }
                      },
                      "id": 7054,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "get",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2611,
                      "src": "870:10:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_chainMap_$2351_storage_ptr_$_t_uint256_$returns$_t_struct$_element_$2339_memory_ptr_$bound_to$_t_struct$_chainMap_$2351_storage_ptr_$",
                        "typeString": "function (struct ChainList.chainMap storage pointer,uint256) view returns (struct ChainList.element memory)"
                      }
                    },
                    "id": 7056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "870:16:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$2339_memory_ptr",
                      "typeString": "struct ChainList.element memory"
                    }
                  },
                  "functionReturnParameters": 7052,
                  "id": 7057,
                  "nodeType": "Return",
                  "src": "863:23:32"
                }
              ]
            },
            "documentation": null,
            "id": 7059,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7048,
                  "name": "_idx",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "803:12:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7047,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "803:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "802:14:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 7052,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7051,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "838:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_element_$2339_memory_ptr",
                    "typeString": "struct ChainList.element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7050,
                    "name": "ChainList.element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2339,
                    "src": "838:17:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$2339_storage_ptr",
                      "typeString": "struct ChainList.element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "837:19:32"
            },
            "scope": 7113,
            "src": "790:101:32",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7071,
              "nodeType": "Block",
              "src": "965:37:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7068,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7061,
                        "src": "993:3:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7066,
                        "name": "chains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6989,
                        "src": "978:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_chainMap_$2351_storage",
                          "typeString": "struct ChainList.chainMap storage ref"
                        }
                      },
                      "id": 7067,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getById",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2637,
                      "src": "978:14:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_chainMap_$2351_storage_ptr_$_t_uint256_$returns$_t_struct$_element_$2339_memory_ptr_$bound_to$_t_struct$_chainMap_$2351_storage_ptr_$",
                        "typeString": "function (struct ChainList.chainMap storage pointer,uint256) view returns (struct ChainList.element memory)"
                      }
                    },
                    "id": 7069,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "978:19:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$2339_memory_ptr",
                      "typeString": "struct ChainList.element memory"
                    }
                  },
                  "functionReturnParameters": 7065,
                  "id": 7070,
                  "nodeType": "Return",
                  "src": "971:26:32"
                }
              ]
            },
            "documentation": null,
            "id": 7072,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getById",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7061,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 7072,
                  "src": "912:11:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7060,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "912:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "911:13:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 7065,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7064,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7072,
                  "src": "946:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_element_$2339_memory_ptr",
                    "typeString": "struct ChainList.element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7063,
                    "name": "ChainList.element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2339,
                    "src": "946:17:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$2339_storage_ptr",
                      "typeString": "struct ChainList.element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "945:19:32"
            },
            "scope": 7113,
            "src": "895:107:32",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7084,
              "nodeType": "Block",
              "src": "1083:45:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7081,
                        "name": "_symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7074,
                        "src": "1115:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7079,
                        "name": "chains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6989,
                        "src": "1096:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_chainMap_$2351_storage",
                          "typeString": "struct ChainList.chainMap storage ref"
                        }
                      },
                      "id": 7080,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getBySymbol",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2672,
                      "src": "1096:18:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_chainMap_$2351_storage_ptr_$_t_string_memory_ptr_$returns$_t_struct$_element_$2339_memory_ptr_$bound_to$_t_struct$_chainMap_$2351_storage_ptr_$",
                        "typeString": "function (struct ChainList.chainMap storage pointer,string memory) view returns (struct ChainList.element memory)"
                      }
                    },
                    "id": 7082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1096:27:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$2339_memory_ptr",
                      "typeString": "struct ChainList.element memory"
                    }
                  },
                  "functionReturnParameters": 7078,
                  "id": 7083,
                  "nodeType": "Return",
                  "src": "1089:34:32"
                }
              ]
            },
            "documentation": null,
            "id": 7085,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getBySymbol",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7075,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7074,
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 7085,
                  "src": "1027:14:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7073,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1027:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1026:16:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 7078,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7077,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7085,
                  "src": "1064:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_element_$2339_memory_ptr",
                    "typeString": "struct ChainList.element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7076,
                    "name": "ChainList.element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2339,
                    "src": "1064:17:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$2339_storage_ptr",
                      "typeString": "struct ChainList.element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1063:19:32"
            },
            "scope": 7113,
            "src": "1006:122:32",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7101,
              "nodeType": "Block",
              "src": "1242:46:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7097,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7087,
                        "src": "1270:4:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7098,
                        "name": "_count",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7089,
                        "src": "1276:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7095,
                        "name": "chains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6989,
                        "src": "1255:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_chainMap_$2351_storage",
                          "typeString": "struct ChainList.chainMap storage ref"
                        }
                      },
                      "id": 7096,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getList",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2745,
                      "src": "1255:14:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_chainMap_$2351_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_struct$_element_$2339_memory_$dyn_memory_ptr_$bound_to$_t_struct$_chainMap_$2351_storage_ptr_$",
                        "typeString": "function (struct ChainList.chainMap storage pointer,uint256,uint256) view returns (struct ChainList.element memory[] memory)"
                      }
                    },
                    "id": 7099,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1255:28:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_element_$2339_memory_$dyn_memory_ptr",
                      "typeString": "struct ChainList.element memory[] memory"
                    }
                  },
                  "functionReturnParameters": 7094,
                  "id": 7100,
                  "nodeType": "Return",
                  "src": "1248:35:32"
                }
              ]
            },
            "documentation": null,
            "id": 7102,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7090,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7087,
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 7102,
                  "src": "1149:12:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7086,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1149:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7089,
                  "name": "_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 7102,
                  "src": "1163:14:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7088,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1163:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1148:30:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 7094,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7093,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7102,
                  "src": "1212:19:32",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_element_$2339_memory_$dyn_memory_ptr",
                    "typeString": "struct ChainList.element[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 7091,
                      "name": "ChainList.element",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 2339,
                      "src": "1212:17:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_element_$2339_storage_ptr",
                        "typeString": "struct ChainList.element"
                      }
                    },
                    "id": 7092,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1212:19:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_element_$2339_storage_$dyn_storage_ptr",
                      "typeString": "struct ChainList.element[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1211:28:32"
            },
            "scope": 7113,
            "src": "1132:156:32",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7111,
              "nodeType": "Block",
              "src": "1339:32:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7107,
                        "name": "chains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6989,
                        "src": "1352:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_chainMap_$2351_storage",
                          "typeString": "struct ChainList.chainMap storage ref"
                        }
                      },
                      "id": 7108,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2587,
                      "src": "1352:12:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_chainMap_$2351_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_chainMap_$2351_storage_ptr_$",
                        "typeString": "function (struct ChainList.chainMap storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 7109,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1352:14:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7106,
                  "id": 7110,
                  "nodeType": "Return",
                  "src": "1345:21:32"
                }
              ]
            },
            "documentation": null,
            "id": 7112,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "count",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7103,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1306:2:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 7106,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7105,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7112,
                  "src": "1330:7:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7104,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1330:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1329:9:32"
            },
            "scope": 7113,
            "src": "1292:79:32",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 7114,
        "src": "174:1199:32"
      }
    ],
    "src": "0:1374:32"
  },
  "legacyAST": {
    "absolutePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/utils/JCCChainList.sol",
    "exportedSymbols": {
      "JCCChainList": [
        7113
      ]
    },
    "id": 7114,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6971,
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:25:32"
      },
      {
        "id": 6972,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "26:33:32"
      },
      {
        "absolutePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/list/ChainList.sol",
        "file": "../list/ChainList.sol",
        "id": 6973,
        "nodeType": "ImportDirective",
        "scope": 7114,
        "sourceUnit": 2747,
        "src": "61:31:32",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/chtian/Documents/01_work/01_develope/jcc/jcc-solidity-utils/contracts/owner/Administrative.sol",
        "file": "../owner/Administrative.sol",
        "id": 6974,
        "nodeType": "ImportDirective",
        "scope": 7114,
        "sourceUnit": 6731,
        "src": "93:37:32",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6975,
              "name": "Administrative",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6730,
              "src": "199:14:32",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Administrative_$6730",
                "typeString": "contract Administrative"
              }
            },
            "id": 6976,
            "nodeType": "InheritanceSpecifier",
            "src": "199:14:32"
          }
        ],
        "contractDependencies": [
          6730
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7113,
        "linearizedBaseContracts": [
          7113,
          6730
        ],
        "name": "JCCChainList",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 6979,
            "libraryName": {
              "contractScope": null,
              "id": 6977,
              "name": "ChainList",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2746,
              "src": "224:9:32",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ChainList_$2746",
                "typeString": "library ChainList"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "218:39:32",
            "typeName": {
              "contractScope": null,
              "id": 6978,
              "name": "ChainList.chainMap",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2351,
              "src": "238:18:32",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_chainMap_$2351_storage_ptr",
                "typeString": "struct ChainList.chainMap"
              }
            }
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6983,
            "name": "Add",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6981,
                  "indexed": true,
                  "name": "chainId",
                  "nodeType": "VariableDeclaration",
                  "scope": 6983,
                  "src": "271:23:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6980,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "271:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "270:25:32"
            },
            "src": "261:35:32"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6987,
            "name": "Remove",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6985,
                  "indexed": true,
                  "name": "chainId",
                  "nodeType": "VariableDeclaration",
                  "scope": 6987,
                  "src": "312:23:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6984,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "312:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "311:25:32"
            },
            "src": "299:38:32"
          },
          {
            "constant": false,
            "id": 6989,
            "name": "chains",
            "nodeType": "VariableDeclaration",
            "scope": 7113,
            "src": "341:25:32",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_chainMap_$2351_storage",
              "typeString": "struct ChainList.chainMap"
            },
            "typeName": {
              "contractScope": null,
              "id": 6988,
              "name": "ChainList.chainMap",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2351,
              "src": "341:18:32",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_chainMap_$2351_storage_ptr",
                "typeString": "struct ChainList.chainMap"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6994,
              "nodeType": "Block",
              "src": "409:2:32",
              "statements": []
            },
            "documentation": null,
            "id": 6995,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [],
                "id": 6992,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6991,
                  "name": "Administrative",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6730,
                  "src": "392:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Administrative_$6730_$",
                    "typeString": "type(contract Administrative)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "392:16:32"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6990,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "382:2:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 6993,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "409:0:32"
            },
            "scope": 7113,
            "src": "371:40:32",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7021,
              "nodeType": "Block",
              "src": "511:104:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7009,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6997,
                            "src": "539:3:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7010,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6999,
                            "src": "544:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7007,
                            "name": "chains",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6989,
                            "src": "525:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_chainMap_$2351_storage",
                              "typeString": "struct ChainList.chainMap storage ref"
                            }
                          },
                          "id": 7008,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "insert",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2494,
                          "src": "525:13:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_chainMap_$2351_storage_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_chainMap_$2351_storage_ptr_$",
                            "typeString": "function (struct ChainList.chainMap storage pointer,uint256,string memory) returns (bool)"
                          }
                        },
                        "id": 7011,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "525:27:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "61646420636861696e2073756363657373",
                        "id": 7012,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "554:19:32",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_787d5de46f53d1d606fba1ee68c1a4212fe5cbc9270ea0c54ab936d5b5192fe2",
                          "typeString": "literal_string \"add chain success\""
                        },
                        "value": "add chain success"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_787d5de46f53d1d606fba1ee68c1a4212fe5cbc9270ea0c54ab936d5b5192fe2",
                          "typeString": "literal_string \"add chain success\""
                        }
                      ],
                      "id": 7006,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9044,
                        9045
                      ],
                      "referencedDeclaration": 9045,
                      "src": "517:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "517:57:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7014,
                  "nodeType": "ExpressionStatement",
                  "src": "517:57:32"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7016,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6997,
                        "src": "589:3:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7015,
                      "name": "Add",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6983,
                      "src": "585:3:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 7017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "585:8:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7018,
                  "nodeType": "EmitStatement",
                  "src": "580:13:32"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 7019,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "606:4:32",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 7005,
                  "id": 7020,
                  "nodeType": "Return",
                  "src": "599:11:32"
                }
              ]
            },
            "documentation": null,
            "id": 7022,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7002,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7001,
                  "name": "onlyPrivileged",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6642,
                  "src": "475:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "475:14:32"
              }
            ],
            "name": "insert",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7000,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6997,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 7022,
                  "src": "431:11:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6996,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "431:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6999,
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 7022,
                  "src": "444:14:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6998,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "444:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "430:29:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 7005,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7004,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7022,
                  "src": "503:4:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7003,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "503:4:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "502:6:32"
            },
            "scope": 7113,
            "src": "415:200:32",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7045,
              "nodeType": "Block",
              "src": "685:101:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7034,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7024,
                            "src": "713:3:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7032,
                            "name": "chains",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6989,
                            "src": "699:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_chainMap_$2351_storage",
                              "typeString": "struct ChainList.chainMap storage ref"
                            }
                          },
                          "id": 7033,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "remove",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2575,
                          "src": "699:13:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_chainMap_$2351_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_chainMap_$2351_storage_ptr_$",
                            "typeString": "function (struct ChainList.chainMap storage pointer,uint256) returns (bool)"
                          }
                        },
                        "id": 7035,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "699:18:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "72656d6f766520636861696e2073756363657373",
                        "id": 7036,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "719:22:32",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_fb421a1f71c48ddd2c66a2eaebc27918b1cd07f08c6594d4489e359c1b832ef3",
                          "typeString": "literal_string \"remove chain success\""
                        },
                        "value": "remove chain success"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_fb421a1f71c48ddd2c66a2eaebc27918b1cd07f08c6594d4489e359c1b832ef3",
                          "typeString": "literal_string \"remove chain success\""
                        }
                      ],
                      "id": 7031,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        9044,
                        9045
                      ],
                      "referencedDeclaration": 9045,
                      "src": "691:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7037,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "691:51:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7038,
                  "nodeType": "ExpressionStatement",
                  "src": "691:51:32"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7040,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7024,
                        "src": "760:3:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 7039,
                      "name": "Remove",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6987,
                      "src": "753:6:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 7041,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "753:11:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7042,
                  "nodeType": "EmitStatement",
                  "src": "748:16:32"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 7043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "777:4:32",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 7030,
                  "id": 7044,
                  "nodeType": "Return",
                  "src": "770:11:32"
                }
              ]
            },
            "documentation": null,
            "id": 7046,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": null,
                "id": 7027,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7026,
                  "name": "onlyPrivileged",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6642,
                  "src": "655:14:32",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "655:14:32"
              }
            ],
            "name": "remove",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7025,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7024,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 7046,
                  "src": "635:11:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7023,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "635:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "634:13:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 7030,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7029,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7046,
                  "src": "679:4:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7028,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "679:4:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "678:6:32"
            },
            "scope": 7113,
            "src": "619:167:32",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7058,
              "nodeType": "Block",
              "src": "857:34:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7055,
                        "name": "_idx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7048,
                        "src": "881:4:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7053,
                        "name": "chains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6989,
                        "src": "870:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_chainMap_$2351_storage",
                          "typeString": "struct ChainList.chainMap storage ref"
                        }
                      },
                      "id": 7054,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "get",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2611,
                      "src": "870:10:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_chainMap_$2351_storage_ptr_$_t_uint256_$returns$_t_struct$_element_$2339_memory_ptr_$bound_to$_t_struct$_chainMap_$2351_storage_ptr_$",
                        "typeString": "function (struct ChainList.chainMap storage pointer,uint256) view returns (struct ChainList.element memory)"
                      }
                    },
                    "id": 7056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "870:16:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$2339_memory_ptr",
                      "typeString": "struct ChainList.element memory"
                    }
                  },
                  "functionReturnParameters": 7052,
                  "id": 7057,
                  "nodeType": "Return",
                  "src": "863:23:32"
                }
              ]
            },
            "documentation": null,
            "id": 7059,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "get",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7049,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7048,
                  "name": "_idx",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "803:12:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7047,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "803:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "802:14:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 7052,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7051,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7059,
                  "src": "838:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_element_$2339_memory_ptr",
                    "typeString": "struct ChainList.element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7050,
                    "name": "ChainList.element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2339,
                    "src": "838:17:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$2339_storage_ptr",
                      "typeString": "struct ChainList.element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "837:19:32"
            },
            "scope": 7113,
            "src": "790:101:32",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7071,
              "nodeType": "Block",
              "src": "965:37:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7068,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7061,
                        "src": "993:3:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7066,
                        "name": "chains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6989,
                        "src": "978:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_chainMap_$2351_storage",
                          "typeString": "struct ChainList.chainMap storage ref"
                        }
                      },
                      "id": 7067,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getById",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2637,
                      "src": "978:14:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_chainMap_$2351_storage_ptr_$_t_uint256_$returns$_t_struct$_element_$2339_memory_ptr_$bound_to$_t_struct$_chainMap_$2351_storage_ptr_$",
                        "typeString": "function (struct ChainList.chainMap storage pointer,uint256) view returns (struct ChainList.element memory)"
                      }
                    },
                    "id": 7069,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "978:19:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$2339_memory_ptr",
                      "typeString": "struct ChainList.element memory"
                    }
                  },
                  "functionReturnParameters": 7065,
                  "id": 7070,
                  "nodeType": "Return",
                  "src": "971:26:32"
                }
              ]
            },
            "documentation": null,
            "id": 7072,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getById",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7061,
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 7072,
                  "src": "912:11:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7060,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "912:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "911:13:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 7065,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7064,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7072,
                  "src": "946:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_element_$2339_memory_ptr",
                    "typeString": "struct ChainList.element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7063,
                    "name": "ChainList.element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2339,
                    "src": "946:17:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$2339_storage_ptr",
                      "typeString": "struct ChainList.element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "945:19:32"
            },
            "scope": 7113,
            "src": "895:107:32",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7084,
              "nodeType": "Block",
              "src": "1083:45:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7081,
                        "name": "_symbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7074,
                        "src": "1115:7:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7079,
                        "name": "chains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6989,
                        "src": "1096:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_chainMap_$2351_storage",
                          "typeString": "struct ChainList.chainMap storage ref"
                        }
                      },
                      "id": 7080,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getBySymbol",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2672,
                      "src": "1096:18:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_chainMap_$2351_storage_ptr_$_t_string_memory_ptr_$returns$_t_struct$_element_$2339_memory_ptr_$bound_to$_t_struct$_chainMap_$2351_storage_ptr_$",
                        "typeString": "function (struct ChainList.chainMap storage pointer,string memory) view returns (struct ChainList.element memory)"
                      }
                    },
                    "id": 7082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1096:27:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$2339_memory_ptr",
                      "typeString": "struct ChainList.element memory"
                    }
                  },
                  "functionReturnParameters": 7078,
                  "id": 7083,
                  "nodeType": "Return",
                  "src": "1089:34:32"
                }
              ]
            },
            "documentation": null,
            "id": 7085,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getBySymbol",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7075,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7074,
                  "name": "_symbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 7085,
                  "src": "1027:14:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7073,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1027:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1026:16:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 7078,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7077,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7085,
                  "src": "1064:17:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_element_$2339_memory_ptr",
                    "typeString": "struct ChainList.element"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 7076,
                    "name": "ChainList.element",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2339,
                    "src": "1064:17:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_element_$2339_storage_ptr",
                      "typeString": "struct ChainList.element"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1063:19:32"
            },
            "scope": 7113,
            "src": "1006:122:32",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7101,
              "nodeType": "Block",
              "src": "1242:46:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7097,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7087,
                        "src": "1270:4:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7098,
                        "name": "_count",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7089,
                        "src": "1276:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7095,
                        "name": "chains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6989,
                        "src": "1255:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_chainMap_$2351_storage",
                          "typeString": "struct ChainList.chainMap storage ref"
                        }
                      },
                      "id": 7096,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getList",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2745,
                      "src": "1255:14:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_chainMap_$2351_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_array$_t_struct$_element_$2339_memory_$dyn_memory_ptr_$bound_to$_t_struct$_chainMap_$2351_storage_ptr_$",
                        "typeString": "function (struct ChainList.chainMap storage pointer,uint256,uint256) view returns (struct ChainList.element memory[] memory)"
                      }
                    },
                    "id": 7099,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1255:28:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_element_$2339_memory_$dyn_memory_ptr",
                      "typeString": "struct ChainList.element memory[] memory"
                    }
                  },
                  "functionReturnParameters": 7094,
                  "id": 7100,
                  "nodeType": "Return",
                  "src": "1248:35:32"
                }
              ]
            },
            "documentation": null,
            "id": 7102,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getList",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7090,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7087,
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 7102,
                  "src": "1149:12:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7086,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1149:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7089,
                  "name": "_count",
                  "nodeType": "VariableDeclaration",
                  "scope": 7102,
                  "src": "1163:14:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7088,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1163:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1148:30:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 7094,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7093,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7102,
                  "src": "1212:19:32",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_element_$2339_memory_$dyn_memory_ptr",
                    "typeString": "struct ChainList.element[]"
                  },
                  "typeName": {
                    "baseType": {
                      "contractScope": null,
                      "id": 7091,
                      "name": "ChainList.element",
                      "nodeType": "UserDefinedTypeName",
                      "referencedDeclaration": 2339,
                      "src": "1212:17:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_element_$2339_storage_ptr",
                        "typeString": "struct ChainList.element"
                      }
                    },
                    "id": 7092,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1212:19:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_element_$2339_storage_$dyn_storage_ptr",
                      "typeString": "struct ChainList.element[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1211:28:32"
            },
            "scope": 7113,
            "src": "1132:156:32",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7111,
              "nodeType": "Block",
              "src": "1339:32:32",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 7107,
                        "name": "chains",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6989,
                        "src": "1352:6:32",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_chainMap_$2351_storage",
                          "typeString": "struct ChainList.chainMap storage ref"
                        }
                      },
                      "id": 7108,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2587,
                      "src": "1352:12:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_chainMap_$2351_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_chainMap_$2351_storage_ptr_$",
                        "typeString": "function (struct ChainList.chainMap storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 7109,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1352:14:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 7106,
                  "id": 7110,
                  "nodeType": "Return",
                  "src": "1345:21:32"
                }
              ]
            },
            "documentation": null,
            "id": 7112,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "count",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7103,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1306:2:32"
            },
            "payable": false,
            "returnParameters": {
              "id": 7106,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7105,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 7112,
                  "src": "1330:7:32",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7104,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1330:7:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1329:9:32"
            },
            "scope": 7113,
            "src": "1292:79:32",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 7114,
        "src": "174:1199:32"
      }
    ],
    "src": "0:1374:32"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.16",
  "updatedAt": "2021-03-06T09:30:01.059Z",
  "devdoc": {
    "methods": {
      "renounceOwnership()": {
        "details": "放弃合约的所有权，注意，合约没有任何人可以拥有了，那么很多拥有者应该有的能力，都不能访问了"
      }
    }
  },
  "userdoc": {
    "methods": {}
  }
}