{
  "_format": "hh-sol-artifact-1",
  "contractName": "MultiSigKeyHolders",
  "sourceName": "contracts/multisig/MultiSigKeyHolders.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "account",
          "type": "string"
        }
      ],
      "name": "BitcoinAddressAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "account",
          "type": "string"
        }
      ],
      "name": "BitcoinAddressRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "required",
          "type": "uint256"
        }
      ],
      "name": "BitcoinRequirementChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "EthereumAddressAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "EthereumAddressRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "required",
          "type": "uint256"
        }
      ],
      "name": "EthereumRequirementChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MAX_OWNER_COUNT",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "string",
          "name": "_address",
          "type": "string"
        }
      ],
      "name": "addBitcoinAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "string[]",
          "name": "_address",
          "type": "string[]"
        }
      ],
      "name": "addBitcoinAddresses",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_address",
          "type": "address"
        }
      ],
      "name": "addEthereumAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_address",
          "type": "address[]"
        }
      ],
      "name": "addEthereumAddresses",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_ethereumAddress",
          "type": "address[]"
        },
        {
          "internalType": "string[]",
          "name": "_bitcoinAddress",
          "type": "string[]"
        }
      ],
      "name": "addEthereumAndBitcoinAddresses",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "bitcoinRequired",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_required",
          "type": "uint256"
        }
      ],
      "name": "changeBitcoinRequirement",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_required",
          "type": "uint256"
        }
      ],
      "name": "changeEthereumRequirement",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ethereumRequired",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getBitcoinAddresses",
      "outputs": [
        {
          "internalType": "string[]",
          "name": "",
          "type": "string[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEthereumAddresses",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "string",
          "name": "_address",
          "type": "string"
        }
      ],
      "name": "isBitcoinAddressOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_address",
          "type": "address"
        }
      ],
      "name": "isEthereumAddressOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "string",
          "name": "_address",
          "type": "string"
        }
      ],
      "name": "removeBitcoinAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "string[]",
          "name": "_address",
          "type": "string[]"
        }
      ],
      "name": "removeBitcoinAddresses",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_address",
          "type": "address"
        }
      ],
      "name": "removeEthereumAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_address",
          "type": "address[]"
        }
      ],
      "name": "removeEthereumAddresses",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_ethereumAddress",
          "type": "address[]"
        },
        {
          "internalType": "string[]",
          "name": "_bitcoinAddress",
          "type": "string[]"
        }
      ],
      "name": "removeEthereumAndBitcoinAddresses",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526002600381905560065560006100216001600160e01b0361007016565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610074565b3390565b6118e8806100836000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80639360142f116100b8578063d3096ae01161007c578063d3096ae01461027f578063d4c0008b14610292578063d74f8edd146102a7578063f2fde38b146102af578063f56bd732146102c2578063faa139fe146102d557610142565b80639360142f14610220578063a3f3fe3d14610233578063b5ee184814610246578063b78ece3214610259578063d2bc3e081461026c57610142565b80634bb9e2f81161010a5780634bb9e2f8146101b55780635d345fef146101c8578063840943de146101db5780638cada17b146101ee5780638da5cb5b146101f65780638f32d59b1461020b57610142565b806303ba2780146101475780632697d0e11461015c57806329e0dc181461016f5780632bb094311461018d57806343e12b9f146101a0575b600080fd5b61015a610155366004611408565b6102e8565b005b61015a61016a36600461139f565b610349565b6101776103c6565b6040516101849190611784565b60405180910390f35b61015a61019b36600461139f565b6103cc565b6101a8610451565b6040516101849190611734565b61015a6101c3366004611472565b61052a565b61015a6101d6366004611408565b610603565b61015a6101e936600461143d565b61064a565b61017761067a565b6101fe610680565b6040516101849190611715565b61021361068f565b6040516101849190611745565b61015a61022e366004611344565b6106b3565b610213610241366004611344565b6106e0565b61015a61025436600461143d565b6106fe565b61015a610267366004611344565b61072b565b61015a61027a366004611472565b610758565b61015a61028d36600461136a565b610824565b61029a61086b565b6040516101849190611723565b6101776108cd565b61015a6102bd366004611344565b6108d2565b61015a6102d036600461136a565b6108ff565b6102136102e336600461143d565b610946565b6102f061068f565b6103155760405162461bcd60e51b815260040161030c90611774565b60405180910390fd5b60005b81518110156103455761033d82828151811061033057fe5b6020026020010151610972565b600101610318565b5050565b61035161068f565b61036d5760405162461bcd60e51b815260040161030c90611774565b60005b825181101561039d5761039583828151811061038857fe5b6020026020010151610b50565b600101610370565b5060005b81518110156103c1576103b982828151811061033057fe5b6001016103a1565b505050565b60065481565b6103d461068f565b6103f05760405162461bcd60e51b815260040161030c90611774565b60005b82518110156104205761041883828151811061040b57fe5b6020026020010151610d27565b6001016103f3565b5060005b81518110156103c15761044982828151811061043c57fe5b6020026020010151610e69565b600101610424565b60606005805480602002602001604051908101604052809291908181526020016000905b828210156105205760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561050c5780601f106104e15761010080835404028352916020019161050c565b820191906000526020600020905b8154815290600101906020018083116104ef57829003601f168201915b505050505081526020019060010190610475565b5050505090505b90565b61053261068f565b61054e5760405162461bcd60e51b815260040161030c90611774565b60055481603282118015906105635750818111155b801561056e57508015155b801561057957508115155b6040518060400160405280601081526020016f125b9d985b1a59081c995c5d5a5c995960821b815250906105c05760405162461bcd60e51b815260040161030c9190611753565b5060068390556040517fce34ac3fc7f2531f33952b09096a26cf746a2bf1ef14ba108747982e9f9a41e8906105f6908590611784565b60405180910390a1505050565b61060b61068f565b6106275760405162461bcd60e51b815260040161030c90611774565b60005b81518110156103455761064282828151811061043c57fe5b60010161062a565b61065261068f565b61066e5760405162461bcd60e51b815260040161030c90611774565b61067781610972565b50565b60035481565b6000546001600160a01b031690565b600080546001600160a01b03166106a4610fbc565b6001600160a01b031614905090565b6106bb61068f565b6106d75760405162461bcd60e51b815260040161030c90611774565b61067781610d27565b6001600160a01b031660009081526001602052604090205460ff1690565b61070661068f565b6107225760405162461bcd60e51b815260040161030c90611774565b61067781610e69565b61073361068f565b61074f5760405162461bcd60e51b815260040161030c90611774565b61067781610b50565b61076061068f565b61077c5760405162461bcd60e51b815260040161030c90611774565b60025481603282118015906107915750818111155b801561079c57508015155b80156107a757508115155b6040518060400160405280601081526020016f125b9d985b1a59081c995c5d5a5c995960821b815250906107ee5760405162461bcd60e51b815260040161030c9190611753565b5060038390556040517fbb1682552d0ed7d0d9bb09a76c2a4758555420126c8c1816a25b7a041f26e90c906105f6908590611784565b61082c61068f565b6108485760405162461bcd60e51b815260040161030c90611774565b60005b81518110156103455761086382828151811061038857fe5b60010161084b565b606060028054806020026020016040519081016040528092919081815260200182805480156108c357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108a5575b5050505050905090565b603281565b6108da61068f565b6108f65760405162461bcd60e51b815260040161030c90611774565b61067781610fc0565b61090761068f565b6109235760405162461bcd60e51b815260040161030c90611774565b60005b81518110156103455761093e82828151811061040b57fe5b600101610926565b600060048260405161095891906116fd565b9081526040519081900360200190205460ff169050919050565b805160408051808201909152600f81526e496e76616c6964206164647265737360881b6020820152906109b85760405162461bcd60e51b815260040161030c9190611753565b506004816040516109c991906116fd565b9081526040519081900360200190205460ff1615610b165760006004826040516109f391906116fd565b908152604051908190036020019020546005546001600160f81b03610100909204919091169150600019018114610add57600580546000198101908110610a3657fe5b906000526020600020016005826001600160f81b031681548110610a5657fe5b906000526020600020019080546001816001161561010002031660029004610a7f929190611041565b508060046005836001600160f81b031681548110610a9957fe5b90600052602060002001604051610ab09190611709565b90815260405190819003602001902080546001600160f81b03929092166101000260ff9092169190911790555b6005805490610af09060001983016110c6565b50600482604051610b0191906116fd565b90815260405190819003602001902060009055505b7f61d47078ad00d7177b977bf2d70f83d7c86266a51aa241ded9afa89cd83bee4681604051610b459190611753565b60405180910390a150565b60408051808201909152600f81526e496e76616c6964206164647265737360881b60208201526001600160a01b038216610b9d5760405162461bcd60e51b815260040161030c9190611753565b506001600160a01b03811660009081526001602052604090205460ff1615610cf0576001600160a01b0381166000908152600160205260409020546002546101009091046001600160f81b031690600019018114610cc157600280546000198101908110610c0757fe5b600091825260209091200154600280546001600160a01b03909216916001600160f81b038416908110610c3657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600160006002846001600160f81b031681548110610c7f57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902080546001600160f81b03929092166101000260ff9092169190911790555b6002805490610cd49060001983016110ea565b50506001600160a01b0381166000908152600160205260408120555b6040516001600160a01b038216907f336a6bdd1075ef08c19331af1a3ac0d66b1910852390725e0fdddeff191717c190600090a250565b60408051808201909152600f81526e496e76616c6964206164647265737360881b60208201526001600160a01b038216610d745760405162461bcd60e51b815260040161030c9190611753565b506001600160a01b03811660009081526001602052604090205460ff16610e32576040805180820182526001808252600280546001600160f81b0390811660208086019182526001600160a01b0388166000818152918690529681209551865492519093166101000292151560ff199092169190911760ff1691909117909355805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191690911790555b6040516001600160a01b038216907f2d0197c2d3ef0c60b1e4909be06fae62a74bb52bd433e9b27c96fdcefcc022a390600090a250565b805160408051808201909152600f81526e496e76616c6964206164647265737360881b602082015290610eaf5760405162461bcd60e51b815260040161030c9190611753565b50600481604051610ec091906116fd565b9081526040519081900360200190205460ff16610f8d57604080518082018252600181526005546001600160f81b031660208201529051600490610f059084906116fd565b90815260405190819003602090810190912082518154938301516001600160f81b03166101000290151560ff199094169390931760ff1692909217909155600580546001810180835560009290925283519192610f8a927f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0909201919085019061110e565b50505b7f44a353d346cb67fe7f36026d2e29eb2954e23594866a194420cf38941607f23e81604051610b459190611753565b3390565b6001600160a01b038116610fe65760405162461bcd60e51b815260040161030c90611764565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061107a57805485556110b6565b828001600101855582156110b657600052602060002091601f016020900482015b828111156110b657825482559160010191906001019061109b565b506110c292915061117c565b5090565b8154818355818111156103c1576000838152602090206103c1918101908301611196565b8154818355818111156103c1576000838152602090206103c191810190830161117c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061114f57805160ff19168380011785556110b6565b828001600101855582156110b6579182015b828111156110b6578251825591602001919060010190611161565b61052791905b808211156110c25760008155600101611182565b61052791905b808211156110c25760006111b082826111b9565b5060010161119c565b50805460018160011615610100020316600290046000825580601f106111df5750610677565b601f016020900490600052602060002090810190610677919061117c565b803561120881611888565b92915050565b600082601f83011261121f57600080fd5b813561123261122d826117b9565b611792565b9150818183526020840193506020810190508385602084028201111561125757600080fd5b60005b83811015611283578161126d88826111fd565b845250602092830192919091019060010161125a565b5050505092915050565b600082601f83011261129e57600080fd5b81356112ac61122d826117b9565b81815260209384019390925082018360005b8381101561128357813586016112d488826112ea565b84525060209283019291909101906001016112be565b600082601f8301126112fb57600080fd5b813561130961122d826117da565b9150808252602083016020830185838301111561132557600080fd5b611330838284611842565b50505092915050565b80356112088161189c565b60006020828403121561135657600080fd5b600061136284846111fd565b949350505050565b60006020828403121561137c57600080fd5b813567ffffffffffffffff81111561139357600080fd5b6113628482850161120e565b600080604083850312156113b257600080fd5b823567ffffffffffffffff8111156113c957600080fd5b6113d58582860161120e565b925050602083013567ffffffffffffffff8111156113f257600080fd5b6113fe8582860161128d565b9150509250929050565b60006020828403121561141a57600080fd5b813567ffffffffffffffff81111561143157600080fd5b6113628482850161128d565b60006020828403121561144f57600080fd5b813567ffffffffffffffff81111561146657600080fd5b611362848285016112ea565b60006020828403121561148457600080fd5b60006113628484611339565b600061149c83836114b7565b505060200190565b60006114b08383611596565b9392505050565b6114c081611826565b82525050565b60006114d182611814565b6114db8185611818565b93506114e683611802565b8060005b838110156115145781516114fe8882611490565b975061150983611802565b9250506001016114ea565b509495945050505050565b600061152a82611814565b6115348185611818565b93508360208202850161154685611802565b8060005b85811015611580578484038952815161156385826114a4565b945061156e83611802565b60209a909a019992505060010161154a565b5091979650505050505050565b6114c081611831565b60006115a182611814565b6115ab8185611818565b93506115bb81856020860161184e565b6115c48161187e565b9093019392505050565b60006115d982611814565b6115e38185611821565b93506115f381856020860161184e565b9290920192915050565b60008154600181166000811461161a576001811461163d5761167c565b607f600283041661162b8187611821565b60ff198416815295508501925061167c565b6002820461164b8187611821565b955061165685611808565b60005b8281101561167557815488820152600190910190602001611659565b5050850192505b505092915050565b6000611691602683611818565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006116d9600c83611818565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6114c081610527565b60006114b082846115ce565b60006114b082846115fd565b6020810161120882846114b7565b602080825281016114b081846114c6565b602080825281016114b0818461151f565b60208101611208828461158d565b602080825281016114b08184611596565b6020808252810161120881611684565b60208082528101611208816116cc565b6020810161120882846116f4565b60405181810167ffffffffffffffff811182821017156117b157600080fd5b604052919050565b600067ffffffffffffffff8211156117d057600080fd5b5060209081020190565b600067ffffffffffffffff8211156117f157600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b90815260200190565b919050565b600061120882611836565b151590565b6001600160a01b031690565b82818337506000910152565b60005b83811015611869578181015183820152602001611851565b83811115611878576000848401525b50505050565b601f01601f191690565b61189181611826565b811461067757600080fd5b6118918161052756fea365627a7a723158206a2746dbcf76ed599d41646390ecec3eaccef32fb291692210be4188d2be3b476c6578706572696d656e74616cf564736f6c63430005110040",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c80639360142f116100b8578063d3096ae01161007c578063d3096ae01461027f578063d4c0008b14610292578063d74f8edd146102a7578063f2fde38b146102af578063f56bd732146102c2578063faa139fe146102d557610142565b80639360142f14610220578063a3f3fe3d14610233578063b5ee184814610246578063b78ece3214610259578063d2bc3e081461026c57610142565b80634bb9e2f81161010a5780634bb9e2f8146101b55780635d345fef146101c8578063840943de146101db5780638cada17b146101ee5780638da5cb5b146101f65780638f32d59b1461020b57610142565b806303ba2780146101475780632697d0e11461015c57806329e0dc181461016f5780632bb094311461018d57806343e12b9f146101a0575b600080fd5b61015a610155366004611408565b6102e8565b005b61015a61016a36600461139f565b610349565b6101776103c6565b6040516101849190611784565b60405180910390f35b61015a61019b36600461139f565b6103cc565b6101a8610451565b6040516101849190611734565b61015a6101c3366004611472565b61052a565b61015a6101d6366004611408565b610603565b61015a6101e936600461143d565b61064a565b61017761067a565b6101fe610680565b6040516101849190611715565b61021361068f565b6040516101849190611745565b61015a61022e366004611344565b6106b3565b610213610241366004611344565b6106e0565b61015a61025436600461143d565b6106fe565b61015a610267366004611344565b61072b565b61015a61027a366004611472565b610758565b61015a61028d36600461136a565b610824565b61029a61086b565b6040516101849190611723565b6101776108cd565b61015a6102bd366004611344565b6108d2565b61015a6102d036600461136a565b6108ff565b6102136102e336600461143d565b610946565b6102f061068f565b6103155760405162461bcd60e51b815260040161030c90611774565b60405180910390fd5b60005b81518110156103455761033d82828151811061033057fe5b6020026020010151610972565b600101610318565b5050565b61035161068f565b61036d5760405162461bcd60e51b815260040161030c90611774565b60005b825181101561039d5761039583828151811061038857fe5b6020026020010151610b50565b600101610370565b5060005b81518110156103c1576103b982828151811061033057fe5b6001016103a1565b505050565b60065481565b6103d461068f565b6103f05760405162461bcd60e51b815260040161030c90611774565b60005b82518110156104205761041883828151811061040b57fe5b6020026020010151610d27565b6001016103f3565b5060005b81518110156103c15761044982828151811061043c57fe5b6020026020010151610e69565b600101610424565b60606005805480602002602001604051908101604052809291908181526020016000905b828210156105205760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561050c5780601f106104e15761010080835404028352916020019161050c565b820191906000526020600020905b8154815290600101906020018083116104ef57829003601f168201915b505050505081526020019060010190610475565b5050505090505b90565b61053261068f565b61054e5760405162461bcd60e51b815260040161030c90611774565b60055481603282118015906105635750818111155b801561056e57508015155b801561057957508115155b6040518060400160405280601081526020016f125b9d985b1a59081c995c5d5a5c995960821b815250906105c05760405162461bcd60e51b815260040161030c9190611753565b5060068390556040517fce34ac3fc7f2531f33952b09096a26cf746a2bf1ef14ba108747982e9f9a41e8906105f6908590611784565b60405180910390a1505050565b61060b61068f565b6106275760405162461bcd60e51b815260040161030c90611774565b60005b81518110156103455761064282828151811061043c57fe5b60010161062a565b61065261068f565b61066e5760405162461bcd60e51b815260040161030c90611774565b61067781610972565b50565b60035481565b6000546001600160a01b031690565b600080546001600160a01b03166106a4610fbc565b6001600160a01b031614905090565b6106bb61068f565b6106d75760405162461bcd60e51b815260040161030c90611774565b61067781610d27565b6001600160a01b031660009081526001602052604090205460ff1690565b61070661068f565b6107225760405162461bcd60e51b815260040161030c90611774565b61067781610e69565b61073361068f565b61074f5760405162461bcd60e51b815260040161030c90611774565b61067781610b50565b61076061068f565b61077c5760405162461bcd60e51b815260040161030c90611774565b60025481603282118015906107915750818111155b801561079c57508015155b80156107a757508115155b6040518060400160405280601081526020016f125b9d985b1a59081c995c5d5a5c995960821b815250906107ee5760405162461bcd60e51b815260040161030c9190611753565b5060038390556040517fbb1682552d0ed7d0d9bb09a76c2a4758555420126c8c1816a25b7a041f26e90c906105f6908590611784565b61082c61068f565b6108485760405162461bcd60e51b815260040161030c90611774565b60005b81518110156103455761086382828151811061038857fe5b60010161084b565b606060028054806020026020016040519081016040528092919081815260200182805480156108c357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108a5575b5050505050905090565b603281565b6108da61068f565b6108f65760405162461bcd60e51b815260040161030c90611774565b61067781610fc0565b61090761068f565b6109235760405162461bcd60e51b815260040161030c90611774565b60005b81518110156103455761093e82828151811061040b57fe5b600101610926565b600060048260405161095891906116fd565b9081526040519081900360200190205460ff169050919050565b805160408051808201909152600f81526e496e76616c6964206164647265737360881b6020820152906109b85760405162461bcd60e51b815260040161030c9190611753565b506004816040516109c991906116fd565b9081526040519081900360200190205460ff1615610b165760006004826040516109f391906116fd565b908152604051908190036020019020546005546001600160f81b03610100909204919091169150600019018114610add57600580546000198101908110610a3657fe5b906000526020600020016005826001600160f81b031681548110610a5657fe5b906000526020600020019080546001816001161561010002031660029004610a7f929190611041565b508060046005836001600160f81b031681548110610a9957fe5b90600052602060002001604051610ab09190611709565b90815260405190819003602001902080546001600160f81b03929092166101000260ff9092169190911790555b6005805490610af09060001983016110c6565b50600482604051610b0191906116fd565b90815260405190819003602001902060009055505b7f61d47078ad00d7177b977bf2d70f83d7c86266a51aa241ded9afa89cd83bee4681604051610b459190611753565b60405180910390a150565b60408051808201909152600f81526e496e76616c6964206164647265737360881b60208201526001600160a01b038216610b9d5760405162461bcd60e51b815260040161030c9190611753565b506001600160a01b03811660009081526001602052604090205460ff1615610cf0576001600160a01b0381166000908152600160205260409020546002546101009091046001600160f81b031690600019018114610cc157600280546000198101908110610c0757fe5b600091825260209091200154600280546001600160a01b03909216916001600160f81b038416908110610c3657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600160006002846001600160f81b031681548110610c7f57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902080546001600160f81b03929092166101000260ff9092169190911790555b6002805490610cd49060001983016110ea565b50506001600160a01b0381166000908152600160205260408120555b6040516001600160a01b038216907f336a6bdd1075ef08c19331af1a3ac0d66b1910852390725e0fdddeff191717c190600090a250565b60408051808201909152600f81526e496e76616c6964206164647265737360881b60208201526001600160a01b038216610d745760405162461bcd60e51b815260040161030c9190611753565b506001600160a01b03811660009081526001602052604090205460ff16610e32576040805180820182526001808252600280546001600160f81b0390811660208086019182526001600160a01b0388166000818152918690529681209551865492519093166101000292151560ff199092169190911760ff1691909117909355805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191690911790555b6040516001600160a01b038216907f2d0197c2d3ef0c60b1e4909be06fae62a74bb52bd433e9b27c96fdcefcc022a390600090a250565b805160408051808201909152600f81526e496e76616c6964206164647265737360881b602082015290610eaf5760405162461bcd60e51b815260040161030c9190611753565b50600481604051610ec091906116fd565b9081526040519081900360200190205460ff16610f8d57604080518082018252600181526005546001600160f81b031660208201529051600490610f059084906116fd565b90815260405190819003602090810190912082518154938301516001600160f81b03166101000290151560ff199094169390931760ff1692909217909155600580546001810180835560009290925283519192610f8a927f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0909201919085019061110e565b50505b7f44a353d346cb67fe7f36026d2e29eb2954e23594866a194420cf38941607f23e81604051610b459190611753565b3390565b6001600160a01b038116610fe65760405162461bcd60e51b815260040161030c90611764565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061107a57805485556110b6565b828001600101855582156110b657600052602060002091601f016020900482015b828111156110b657825482559160010191906001019061109b565b506110c292915061117c565b5090565b8154818355818111156103c1576000838152602090206103c1918101908301611196565b8154818355818111156103c1576000838152602090206103c191810190830161117c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061114f57805160ff19168380011785556110b6565b828001600101855582156110b6579182015b828111156110b6578251825591602001919060010190611161565b61052791905b808211156110c25760008155600101611182565b61052791905b808211156110c25760006111b082826111b9565b5060010161119c565b50805460018160011615610100020316600290046000825580601f106111df5750610677565b601f016020900490600052602060002090810190610677919061117c565b803561120881611888565b92915050565b600082601f83011261121f57600080fd5b813561123261122d826117b9565b611792565b9150818183526020840193506020810190508385602084028201111561125757600080fd5b60005b83811015611283578161126d88826111fd565b845250602092830192919091019060010161125a565b5050505092915050565b600082601f83011261129e57600080fd5b81356112ac61122d826117b9565b81815260209384019390925082018360005b8381101561128357813586016112d488826112ea565b84525060209283019291909101906001016112be565b600082601f8301126112fb57600080fd5b813561130961122d826117da565b9150808252602083016020830185838301111561132557600080fd5b611330838284611842565b50505092915050565b80356112088161189c565b60006020828403121561135657600080fd5b600061136284846111fd565b949350505050565b60006020828403121561137c57600080fd5b813567ffffffffffffffff81111561139357600080fd5b6113628482850161120e565b600080604083850312156113b257600080fd5b823567ffffffffffffffff8111156113c957600080fd5b6113d58582860161120e565b925050602083013567ffffffffffffffff8111156113f257600080fd5b6113fe8582860161128d565b9150509250929050565b60006020828403121561141a57600080fd5b813567ffffffffffffffff81111561143157600080fd5b6113628482850161128d565b60006020828403121561144f57600080fd5b813567ffffffffffffffff81111561146657600080fd5b611362848285016112ea565b60006020828403121561148457600080fd5b60006113628484611339565b600061149c83836114b7565b505060200190565b60006114b08383611596565b9392505050565b6114c081611826565b82525050565b60006114d182611814565b6114db8185611818565b93506114e683611802565b8060005b838110156115145781516114fe8882611490565b975061150983611802565b9250506001016114ea565b509495945050505050565b600061152a82611814565b6115348185611818565b93508360208202850161154685611802565b8060005b85811015611580578484038952815161156385826114a4565b945061156e83611802565b60209a909a019992505060010161154a565b5091979650505050505050565b6114c081611831565b60006115a182611814565b6115ab8185611818565b93506115bb81856020860161184e565b6115c48161187e565b9093019392505050565b60006115d982611814565b6115e38185611821565b93506115f381856020860161184e565b9290920192915050565b60008154600181166000811461161a576001811461163d5761167c565b607f600283041661162b8187611821565b60ff198416815295508501925061167c565b6002820461164b8187611821565b955061165685611808565b60005b8281101561167557815488820152600190910190602001611659565b5050850192505b505092915050565b6000611691602683611818565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b60006116d9600c83611818565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6114c081610527565b60006114b082846115ce565b60006114b082846115fd565b6020810161120882846114b7565b602080825281016114b081846114c6565b602080825281016114b0818461151f565b60208101611208828461158d565b602080825281016114b08184611596565b6020808252810161120881611684565b60208082528101611208816116cc565b6020810161120882846116f4565b60405181810167ffffffffffffffff811182821017156117b157600080fd5b604052919050565b600067ffffffffffffffff8211156117d057600080fd5b5060209081020190565b600067ffffffffffffffff8211156117f157600080fd5b506020601f91909101601f19160190565b60200190565b60009081526020902090565b5190565b90815260200190565b919050565b600061120882611836565b151590565b6001600160a01b031690565b82818337506000910152565b60005b83811015611869578181015183820152602001611851565b83811115611878576000848401525b50505050565b601f01601f191690565b61189181611826565b811461067757600080fd5b6118918161052756fea365627a7a723158206a2746dbcf76ed599d41646390ecec3eaccef32fb291692210be4188d2be3b476c6578706572696d656e74616cf564736f6c63430005110040",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
