{
    "abi": [
        {
            "constant": false,
            "inputs": [
                {
                    "name": "alerter",
                    "type": "address"
                }
            ],
            "name": "removeAlerter",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x01a12fd3"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "validRateDurationInBlocks",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0x16265694"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "pendingAdmin",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0x26782247"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "getOperators",
            "outputs": [
                {
                    "name": "",
                    "type": "address[]"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0x27a099d8"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                },
                {
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "name": "sendTo",
                    "type": "address"
                }
            ],
            "name": "withdrawToken",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x3ccdbb28"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "newAlerter",
                    "type": "address"
                }
            ],
            "name": "addAlerter",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x408ee7fe"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "numTokensInCurrentCompactData",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0x5085c9f1"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "newAdmin",
                    "type": "address"
                }
            ],
            "name": "transferAdmin",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x75829def"
        },
        {
            "constant": false,
            "inputs": [],
            "name": "claimAdmin",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x77f50f97"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "newAdmin",
                    "type": "address"
                }
            ],
            "name": "transferAdminQuickly",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x7acc8678"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "getAlerters",
            "outputs": [
                {
                    "name": "",
                    "type": "address[]"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0x7c423f54"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "newOperator",
                    "type": "address"
                }
            ],
            "name": "addOperator",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x9870d7fe"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "reserveContract",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0xa7f43acd"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "address"
                },
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "tokenImbalanceData",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0xa80c609e"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "removeOperator",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0xac8a584a"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                },
                {
                    "name": "minimalRecordResolution",
                    "type": "uint256"
                },
                {
                    "name": "maxPerBlockImbalance",
                    "type": "uint256"
                },
                {
                    "name": "maxTotalImbalance",
                    "type": "uint256"
                }
            ],
            "name": "setTokenControlInfo",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0xbfee3569"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "name": "sendTo",
                    "type": "address"
                }
            ],
            "name": "withdrawEther",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0xce56c454"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                }
            ],
            "name": "getTokenControlInfo",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                },
                {
                    "name": "",
                    "type": "uint256"
                },
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0xe7d4fd91"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "admin",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0xf851a440"
        },
        {
            "inputs": [
                {
                    "name": "_admin",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "constructor",
            "signature": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "name": "token",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "sendTo",
                    "type": "address"
                }
            ],
            "name": "TokenWithdraw",
            "type": "event",
            "signature": "0x72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "sendTo",
                    "type": "address"
                }
            ],
            "name": "EtherWithdraw",
            "type": "event",
            "signature": "0xec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "name": "pendingAdmin",
                    "type": "address"
                }
            ],
            "name": "TransferAdminPending",
            "type": "event",
            "signature": "0x3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc40"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "name": "newAdmin",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "previousAdmin",
                    "type": "address"
                }
            ],
            "name": "AdminClaimed",
            "type": "event",
            "signature": "0x65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "name": "newAlerter",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "isAdd",
                    "type": "bool"
                }
            ],
            "name": "AlerterAdded",
            "type": "event",
            "signature": "0x5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "name": "newOperator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "isAdd",
                    "type": "bool"
                }
            ],
            "name": "OperatorAdded",
            "type": "event",
            "signature": "0x091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                }
            ],
            "name": "addToken",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0xd48bfca7"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "buy",
                    "type": "bytes14[]"
                },
                {
                    "name": "sell",
                    "type": "bytes14[]"
                },
                {
                    "name": "blockNumber",
                    "type": "uint256"
                },
                {
                    "name": "indices",
                    "type": "uint256[]"
                }
            ],
            "name": "setCompactData",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x64887334"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "tokens",
                    "type": "address[]"
                },
                {
                    "name": "baseBuy",
                    "type": "uint256[]"
                },
                {
                    "name": "baseSell",
                    "type": "uint256[]"
                },
                {
                    "name": "buy",
                    "type": "bytes14[]"
                },
                {
                    "name": "sell",
                    "type": "bytes14[]"
                },
                {
                    "name": "blockNumber",
                    "type": "uint256"
                },
                {
                    "name": "indices",
                    "type": "uint256[]"
                }
            ],
            "name": "setBaseRate",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x1a4813d7"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                },
                {
                    "name": "xBuy",
                    "type": "int256[]"
                },
                {
                    "name": "yBuy",
                    "type": "int256[]"
                },
                {
                    "name": "xSell",
                    "type": "int256[]"
                },
                {
                    "name": "ySell",
                    "type": "int256[]"
                }
            ],
            "name": "setQtyStepFunction",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x80d8b380"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                },
                {
                    "name": "xBuy",
                    "type": "int256[]"
                },
                {
                    "name": "yBuy",
                    "type": "int256[]"
                },
                {
                    "name": "xSell",
                    "type": "int256[]"
                },
                {
                    "name": "ySell",
                    "type": "int256[]"
                }
            ],
            "name": "setImbalanceStepFunction",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0xbc9cbcc8"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "duration",
                    "type": "uint256"
                }
            ],
            "name": "setValidRateDurationInBlocks",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x6c6295b8"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                }
            ],
            "name": "enableTokenTrade",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x1d6a8bda"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                }
            ],
            "name": "disableTokenTrade",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x158859f7"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "reserve",
                    "type": "address"
                }
            ],
            "name": "setReserveAddress",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0x14673d31"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                },
                {
                    "name": "buyAmount",
                    "type": "int256"
                },
                {
                    "name": "rateUpdateBlock",
                    "type": "uint256"
                },
                {
                    "name": "currentBlock",
                    "type": "uint256"
                }
            ],
            "name": "recordImbalance",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function",
            "signature": "0xc6fd2103"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                },
                {
                    "name": "currentBlockNumber",
                    "type": "uint256"
                },
                {
                    "name": "buy",
                    "type": "bool"
                },
                {
                    "name": "qty",
                    "type": "uint256"
                }
            ],
            "name": "getRate",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0xb8e9c22e"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                },
                {
                    "name": "buy",
                    "type": "bool"
                }
            ],
            "name": "getBasicRate",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0xcf8fee11"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                }
            ],
            "name": "getCompactData",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                },
                {
                    "name": "",
                    "type": "uint256"
                },
                {
                    "name": "",
                    "type": "bytes1"
                },
                {
                    "name": "",
                    "type": "bytes1"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0xe4a2ac62"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                }
            ],
            "name": "getTokenBasicData",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                },
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0x721bba59"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                },
                {
                    "name": "command",
                    "type": "uint256"
                },
                {
                    "name": "param",
                    "type": "uint256"
                }
            ],
            "name": "getStepFunctionData",
            "outputs": [
                {
                    "name": "",
                    "type": "int256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0x62674e93"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "token",
                    "type": "address"
                }
            ],
            "name": "getRateUpdateBlock",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0x8036d757"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "getListedTokens",
            "outputs": [
                {
                    "name": "",
                    "type": "address[]"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function",
            "signature": "0x2ba996a5"
        }
    ],
    "bytecode": "0x6080604052600a6009556000600d553480156200001b57600080fd5b506040516020806200567a8339810180604052810190808051906020019092919050505080336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515620000bd57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505061556b806200010f6000396000f3006080604052600436106101c2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301a12fd3146101c757806314673d311461020a578063158859f71461024d57806316265694146102905780631a4813d7146102bb5780631d6a8bda1461047a57806326782247146104bd57806327a099d8146105145780632ba996a5146105805780633ccdbb28146105ec578063408ee7fe146106595780635085c9f11461069c57806362674e93146106c757806364887334146107325780636c6295b814610828578063721bba591461085557806375829def146108bb57806377f50f97146108fe5780637acc8678146109155780637c423f54146109585780638036d757146109c457806380d8b38014610a1b5780639870d7fe14610b6a578063a7f43acd14610bad578063a80c609e14610c04578063ac8a584a14610c65578063b8e9c22e14610ca8578063bc9cbcc814610d1f578063bfee356914610e6e578063c6fd210314610ecf578063ce56c45414610f30578063cf8fee1114610f7d578063d48bfca714610fe0578063e4a2ac6214611023578063e7d4fd9114611117578063f851a4401461117c575b600080fd5b3480156101d357600080fd5b50610208600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111d3565b005b34801561021657600080fd5b5061024b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611492565b005b34801561025957600080fd5b5061028e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611531565b005b34801561029c57600080fd5b506102a5611642565b6040518082815260200191505060405180910390f35b3480156102c757600080fd5b5061047860048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611648565b005b34801561048657600080fd5b506104bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061186f565b005b3480156104c957600080fd5b506104d26119d5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052057600080fd5b506105296119fb565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561056c578082015181840152602081019050610551565b505050509050019250505060405180910390f35b34801561058c57600080fd5b50610595611a89565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105d85780820151818401526020810190506105bd565b505050509050019250505060405180910390f35b3480156105f857600080fd5b50610657600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b17565b005b34801561066557600080fd5b5061069a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cff565b005b3480156106a857600080fd5b506106b1611ef8565b6040518082815260200191505060405180910390f35b3480156106d357600080fd5b5061071c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611efe565b6040518082815260200191505060405180910390f35b34801561073e57600080fd5b506108266004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061253b565b005b34801561083457600080fd5b50610853600480360381019080803590602001909291905050506126c6565b005b34801561086157600080fd5b50610896600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061272b565b6040518083151515158152602001821515151581526020019250505060405180910390f35b3480156108c757600080fd5b506108fc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127d7565b005b34801561090a57600080fd5b50610913612937565b005b34801561092157600080fd5b50610956600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b13565b005b34801561096457600080fd5b5061096d612d08565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109b0578082015181840152602081019050610995565b505050509050019250505060405180910390f35b3480156109d057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d96565b6040518082815260200191505060405180910390f35b348015610a2757600080fd5b50610b68600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050612e08565b005b348015610b7657600080fd5b50610bab600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061302c565b005b348015610bb957600080fd5b50610bc2613225565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c1057600080fd5b50610c4f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061324b565b6040518082815260200191505060405180910390f35b348015610c7157600080fd5b50610ca6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613270565b005b348015610cb457600080fd5b50610d09600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080351515906020019092919080359060200190929190505050613532565b6040518082815260200191505060405180910390f35b348015610d2b57600080fd5b50610e6c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050613c4a565b005b348015610e7a57600080fd5b50610ecd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050613e6e565b005b348015610edb57600080fd5b50610f2e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190505050613f4b565b005b348015610f3c57600080fd5b50610f7b60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613fce565b005b348015610f8957600080fd5b50610fca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506140df565b6040518082815260200191505060405180910390f35b348015610fec57600080fd5b50611021600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061417d565b005b34801561102f57600080fd5b50611064600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506143db565b60405180858152602001848152602001837effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200194505050505060405180910390f35b34801561112357600080fd5b50611158600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061456a565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561118857600080fd5b50611191614645565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561123057600080fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561128857600080fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600090505b60058054905081101561148e578173ffffffffffffffffffffffffffffffffffffffff1660058281548110151561131857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561148357600560016005805490500381548110151561137657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166005828154811015156113b057fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600580548091906001900361140d9190615402565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a161148e565b8060010190506112e5565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114ed57600080fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561158957600080fd5b600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615156115e457600080fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff02191690831515021790555050565b60095481565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156116a257600080fd5b865188511415156116b257600080fd5b855188511415156116c257600080fd5b845184511415156116d257600080fd5b815184511415156116e257600080fd5b600090505b875181101561185957600b6000898381518110151561170257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16151561176257600080fd5b868181518110151561177057fe5b90602001906020020151600b60008a8481518110151561178c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555085818151811015156117e557fe5b90602001906020020151600b60008a8481518110151561180157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004018190555080806001019150506116e7565b6118658585858561253b565b5050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118ca57600080fd5b600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16151561192557600080fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415151561197757600080fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805480602002602001604051908101604052809291908181526020018280548015611a7f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611a35575b5050505050905090565b6060600a805480602002602001604051908101604052809291908181526020018280548015611b0d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611ac3575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b7257600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611c1557600080fd5b505af1158015611c29573d6000803e3d6000fd5b505050506040513d6020811015611c3f57600080fd5b81019080805190602001909291905050501515611c5b57600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a1505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d5a57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611db357600080fd5b6032600580549050101515611dc757600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a16001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060058190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600d5481565b600080831415611f5857600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501600001805490509050612534565b6001831415611fc557600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160000182815481101515611fb357fe5b90600052602060002001549050612534565b600283141561201e57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501600101805490509050612534565b600383141561208b57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005016001018281548110151561207957fe5b90600052602060002001549050612534565b60048314156120e457600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701600001805490509050612534565b600583141561215157600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007016000018281548110151561213f57fe5b90600052602060002001549050612534565b60068314156121aa57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701600101805490509050612534565b600783141561221757600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007016001018281548110151561220557fe5b90600052602060002001549050612534565b600883141561227057600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901600001805490509050612534565b60098314156122dd57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901600001828154811015156122cb57fe5b90600052602060002001549050612534565b600a83141561233657600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901600101805490509050612534565b600b8314156123a357600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206009016001018281548110151561239157fe5b90600052602060002001549050612534565b600c8314156123fc57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01600001805490509050612534565b600d83141561246957600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b016000018281548110151561245757fe5b90600052602060002001549050612534565b600e8314156124c257600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01600101805490509050612534565b600f83141561252f57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b016001018281548110151561251d57fe5b90600052602060002001549050612534565b600080fd5b9392505050565b6000806000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561259857600080fd5b855187511415156125a857600080fd5b865184511415156125b857600080fd5b63ffffffff85111515156125cb57600080fd5b600e60080260020a9250600091505b83518210156126bd57600c8054905084838151811015156125f757fe5b9060200190602002015110151561260d57600080fd5b828302850283878481518110151561262157fe5b906020019060200201517201000000000000000000000000000000000000900402888481518110151561265057fe5b90602001906020020151720100000000000000000000000000000000000090041717905080600102600c858481518110151561268857fe5b9060200190602002015181548110151561269e57fe5b90600052602060002001816000191690555081806001019250506125da565b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561272157600080fd5b8060098190555050565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff1691509150915091565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561283257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561286e57600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc40600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a180600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561299357600080fd5b7f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b6e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612baa57600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a17f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed816000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606005805480602002602001604051908101604052809291908181526020018280548015612d8c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612d42575b5050505050905090565b600080600c600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154815481101515612dea57fe5b90600052602060002001549050612e008161466a565b915050919050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612e6057600080fd5b82518451141515612e7057600080fd5b80518251141515612e8057600080fd5b600a845111151515612e9157600080fd5b600a825111151515612ea257600080fd5b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161515612efd57600080fd5b604080519081016040528085815260200184815250600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005016000820151816000019080519060200190612f7092919061542e565b506020820151816001019080519060200190612f8d92919061542e565b50905050604080519081016040528083815260200182815250600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701600082015181600001908051906020019061300492919061542e565b50602082015181600101908051906020019061302192919061542e565b509050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561308757600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156130e057600080fd5b60326004805490501015156130f457600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a16001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060048190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052816000526040600020602052806000526040600020600091509150505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156132cd57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561332557600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600090505b60048054905081101561352e578173ffffffffffffffffffffffffffffffffffffffff166004828154811015156133b557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561352357600460016004805490500381548110151561341357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660048281548110151561344d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016004818180549050039150816134ad9190615402565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a161352e565b806001019050613382565b5050565b6000806000806000806000806000600b60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16151561359f5760009850613c3a565b6000600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156135f35760009850613c3a565b600c600b60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015481548110151561364457fe5b9060005260206000200154975061365a8861466a565b965060095487018c1015156136725760009850613c3a565b61367d8d888e614693565b80965081975050508a1561393557600b60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015490506136dc888e6001614703565b9150600a8260000b0292506136f181846147c7565b90506136fe8d828c614847565b9950899350838601955061380e600b60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501604080519081016040529081600082018054806020026020016040519081016040528092919081815260200182805480156137a757602002820191906000526020600020905b815481526020019060010190808311613793575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156137ff57602002820191906000526020600020905b8154815260200190600101908083116137eb575b5050505050815250508b614872565b925061381a81846147c7565b9050613922600b60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901604080519081016040529081600082018054806020026020016040519081016040528092919081815260200182805480156138bb57602002820191906000526020600020905b8154815260200190600101908083116138a7575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561391357602002820191906000526020600020905b8154815260200190600101908083116138ff575b50505050508152505087614872565b925061392e81846147c7565b9050613bf0565b600b60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401549050613986888e6000614703565b9150600a8260000b02925061399b81846147c7565b9050897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0293508386019550613acd600b60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070160408051908101604052908160008201805480602002602001604051908101604052809291908181526020018280548015613a6657602002820191906000526020600020905b815481526020019060010190808311613a52575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015613abe57602002820191906000526020600020905b815481526020019060010190808311613aaa575b5050505050815250508b614872565b9250613ad981846147c7565b9050613be1600b60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b0160408051908101604052908160008201805480602002602001604051908101604052809291908181526020018280548015613b7a57602002820191906000526020600020905b815481526020019060010190808311613b66575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015613bd257602002820191906000526020600020905b815481526020019060010190808311613bbe575b50505050508152505087614872565b9250613bed81846147c7565b90505b613bf98d61490a565b613c0287614956565b101515613c125760009850613c3a565b613c1b8d614993565b613c26858701614956565b101515613c365760009850613c3a565b8098505b5050505050505050949350505050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515613ca257600080fd5b82518451141515613cb257600080fd5b80518251141515613cc257600080fd5b600a845111151515613cd357600080fd5b600a825111151515613ce457600080fd5b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161515613d3f57600080fd5b604080519081016040528085815260200184815250600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206009016000820151816000019080519060200190613db292919061542e565b506020820151816001019080519060200190613dcf92919061542e565b50905050604080519081016040528083815260200182815250600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b016000820151816000019080519060200190613e4692919061542e565b506020820151816001019080519060200190613e6392919061542e565b509050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613ec957600080fd5b60606040519081016040528084815260200183815260200182815250600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101556040820151816002015590505050505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613fa757600080fd5b6000821415613fbc57613fb984612d96565b91505b613fc8848484846149df565b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561402957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561406f573d6000803e3d6000fd5b507fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b6000811561413157600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301549050614177565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015490505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156141d857600080fd5b600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615151561423457600080fd5b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908315150217905550600a8190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000600d54141561431657600c8054809190600101614314919061547b565b505b6001600c8054905003600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600d54600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550600e6001600d54018115156143bf57fe5b06600d819055506143cf81614bc8565b6143d881614c3e565b50565b600080600080600080600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16151561443f57600080fd5b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549150600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154905081816144f0600c858154811015156144dd57fe5b90600052602060002001548a6001614703565b7f010000000000000000000000000000000000000000000000000000000000000002614537600c8681548110151561452457fe5b90600052602060002001548b6000614703565b7f010000000000000000000000000000000000000000000000000000000000000002955095509550955050509193509193565b6000806000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549250925092509193909250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600e60080260020a600e60080260020a02826001900481151561468b57fe5b049050919050565b6000806000600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506146e8868686614db6565b80935081945050508083029250808202915050935093915050565b6000806000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154915083156147615781600e602003019050614768565b8160040190505b858160208110151561477657fe5b1a7f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004925050509392505050565b600080620f4240670de0b6b3a76400000284111515156147e657600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8f0831215151561481557600080fd5b64174876e800831315151561482957600080fd5b612710905080838201850281151561483d57fe5b0491505092915050565b600080600061485586614edd565b9150601290506148678582848761502c565b925050509392505050565b60008060008460200151519150600090505b818110156148e05784600001518181518110151561489e57fe5b90602001906020020151841315156148d3578460200151818151811015156148c257fe5b906020019060200201519250614902565b8080600101915050614884565b8460200151600183038151811015156148f557fe5b9060200190602002015192505b505092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b60008082121561498a57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02905061498e565b8190505b919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b60008060006149ec6154a7565b60006005868115156149fa57fe5b069450600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015488811515614a4a57fe5b05935060009250614aaa600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020546150de565b91508582602001511415614b22578682606001511415614ae9578382600001818151019150818152505083826040018181510191508181525050614b1d565b614af48988886151ae565b925083830182604001818152505083826000018181510191508181525050868260600181815250505b614b60565b614b2d898888614db6565b80925081945050508382600001818152505085826020018181525050868260600181815250508383018260400181815250505b614b6982615272565b600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002081905550505050505050505050565b60008090505b6005811015614c3a576001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055508080600101915050614bce565b5050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614cd0576012600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614db3565b8073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015614d3457600080fd5b505af1158015614d48573d6000803e3d6000fd5b505050506040513d6020811015614d5e57600080fd5b8101908080519060200190929190505050600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50565b6000806000806000806000614dc96154a7565b60009750600096506000955060009450899350889250600091505b6005821015614ec257614e46600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020546150de565b905082816020015111158015614e60575083816020015110155b15614e6f578060000151850194505b898160600151141515614e8157614eb5565b8581602001511015614e9257614eb5565b80602001519550806040015197508881602001511415614eb457806000015196505b5b8180600101925050614de4565b6000881415614ecf578497505b505050505050935093915050565b60008073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614f315760129150615026565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415615022578273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015614fe057600080fd5b505af1158015614ff4573d6000803e3d6000fd5b505050506040513d602081101561500a57600080fd5b81019080805190602001909291905050509150615026565b8091505b50919050565b60006b204fce5e3e25026110000000851115151561504957600080fd5b620f4240670de0b6b3a764000002821115151561506557600080fd5b83831015156150a45760128484031115151561508057600080fd5b670de0b6b3a7640000848403600a0a8387020281151561509c57fe5b0490506150d6565b6012838503111515156150b657600080fd5b828403600a0a670de0b6b3a7640000028286028115156150d257fe5b0490505b949350505050565b6150e66154a7565b6150ee6154a7565b60016801000000000000000003831660070b81600001818152505060016801000000000000000003680100000000000000008481151561512a57fe5b041667ffffffffffffffff16816020018181525050600168010000000000000000036801000000000000000080028481151561516257fe5b041660070b81604001818152505068010000000000000000806801000000000000000002028381151561519157fe5b0467ffffffffffffffff1681606001818152505080915050919050565b6000806151b96154a7565b8385111515156151c857600080fd5b60009250600091505b600582101561526957615233600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020546150de565b90508381602001511115801561524d575084816020015110155b1561525c578060000151830192505b81806001019250506151d1565b50509392505050565b60008060026801000000000000000081151561528a57fe5b04836000015112151561529c57600080fd5b6002680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff028115156152d357fe5b0583600001511315156152e557600080fd5b68010000000000000000836020015110151561530057600080fd5b60026801000000000000000081151561531557fe5b04836040015112151561532757600080fd5b6002680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0281151561535e57fe5b05836040015113151561537057600080fd5b68010000000000000000836060015110151561538b57600080fd5b600168010000000000000000038360000151169050680100000000000000008360200151028117905068010000000000000000806001680100000000000000000385604001511602028117905068010000000000000000806801000000000000000085606001510202028117905080915050919050565b8154818355818111156154295781836000526020600020918201910161542891906154d0565b5b505050565b82805482825590600052602060002090810192821561546a579160200282015b8281111561546957825182559160200191906001019061544e565b5b50905061547791906154f5565b5090565b8154818355818111156154a2578183600052602060002091820191016154a1919061551a565b5b505050565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b6154f291905b808211156154ee5760008160009055506001016154d6565b5090565b90565b61551791905b808211156155135760008160009055506001016154fb565b5090565b90565b61553c91905b80821115615538576000816000905550600101615520565b5090565b905600a165627a7a72305820f1e5650b261b253ec0774c3ad87202fbb15335e5775690792e74e2867c6f4e6e0029"
}
