60806040526040805190810160405280600e81526020017f4d616769634865726220436f696e000000000000000000000000000000000000815250600090805190602001906200005192919062000229565b506040805190810160405280600381526020017f4d48430000000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f92919062000229565b506012600260006101000a81548160ff021916908360ff1602179055506c01431e0fae6d7217caa0000000600355348015620000da57600080fd5b5033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035460066000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550306200018f620002b0565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015620001e2573d6000803e3d6000fd5b50600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002e9565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026c57805160ff19168380011785556200029d565b828001600101855582156200029d579182015b828111156200029c5782518255916020019190600101906200027f565b5b509050620002ac9190620002c1565b5090565b6040516106eb806200181d83390190565b620002e691905b80821115620002e2576000816000905550600101620002c8565b5090565b90565b61152480620002f96000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e0578063095ea7b31461017057806318160ddd146101d557806323b872dd14610200578063313ce5671461028557806342966c68146102b657806370a08231146102fb57806379cc6790146103525780638da5cb5b146103b757806395d89b411461040e578063a9059cbb1461049e578063ae18f5ad14610503578063cae9ca511461055a578063cc872b6614610605578063dd62ed3e14610632575b600080fd5b3480156100ec57600080fd5b506100f56106a9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013557808201518184015260208101905061011a565b50505050905090810190601f1680156101625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017c57600080fd5b506101bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610747565b604051808215151515815260200191505060405180910390f35b3480156101e157600080fd5b506101ea610887565b6040518082815260200191505060405180910390f35b34801561020c57600080fd5b5061026b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061088d565b604051808215151515815260200191505060405180910390f35b34801561029157600080fd5b5061029a6109ba565b604051808260ff1660ff16815260200191505060405180910390f35b3480156102c257600080fd5b506102e1600480360381019080803590602001909291905050506109cd565b604051808215151515815260200191505060405180910390f35b34801561030757600080fd5b5061033c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ad1565b6040518082815260200191505060405180910390f35b34801561035e57600080fd5b5061039d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b1a565b604051808215151515815260200191505060405180910390f35b3480156103c357600080fd5b506103cc610d34565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041a57600080fd5b50610423610d5a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610463578082015181840152602081019050610448565b50505050905090810190601f1680156104905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104aa57600080fd5b506104e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610df8565b604051808215151515815260200191505060405180910390f35b34801561050f57600080fd5b50610518610e0f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056657600080fd5b506105eb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610e35565b604051808215151515815260200191505060405180910390f35b34801561061157600080fd5b5061063060048036038101908080359060200190929190505050610fb8565b005b34801561063e57600080fd5b50610693600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611130565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561073f5780601f106107145761010080835404028352916020019161073f565b820191906000526020600020905b81548152906001019060200180831161072257829003601f168201915b505050505081565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561079757600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60035481565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561091a57600080fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506109af8484846111b7565b600190509392505050565b600260009054906101000a900460ff1681565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a1d57600080fd5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816003600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610b6a57600080fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610bf557600080fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816003600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a26001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610df05780601f10610dc557610100808354040283529160200191610df0565b820191906000526020600020905b815481529060010190602001808311610dd357829003601f168201915b505050505081565b6000610e053384846111b7565b6001905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080849050610e458585610747565b15610faf578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610f3f578082015181840152602081019050610f24565b50505050905090810190601f168015610f6c5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610f8e57600080fd5b505af1158015610fa2573d6000803e3d6000fd5b5050505060019150610fb0565b5b509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561101457600080fd5b61107f60066000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826114cd565b60066000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110f0600354826114cd565b6003819055507fcb8241adb0c3fdb35b70c24ce35c5eb0c17af7431c99f827d44a445ca624176a816040518082815260200191505060405180910390a150565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16141515156111de57600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561122c57600080fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011115156112ba57600080fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401905081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a380600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011415156114c757fe5b50505050565b60008082840190508381101515156114e157fe5b828103841415156114ee57fe5b80915050929150505600a165627a7a7230582028a3c59c1b96fbc80cf6b6986f34767ef5a954cb4f80789db62b7039d640e1c4002960806040526b04d8c55aefb8c05b5c0000006000556000600160006101000a81548160ff021916908360ff16021790555060018060016101000a81548160ff0219169083151502179055506103e8600160166101000a81548161ffff021916908361ffff16021790555034801561007557600080fd5b506040516020806106eb8339810180604052810190808051906020019092919050505080600160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555043600281905550506105fb806100f06000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632552317c146100885780632b0999f3146100b35780635199f1de146100e2578063742f79d51461010d57806382edaf94146101405780638f754a1e14610197578063d383f646146101c8575b600080fd5b34801561009457600080fd5b5061009d6101df565b6040518082815260200191505060405180910390f35b3480156100bf57600080fd5b506100c86101e5565b604051808215151515815260200191505060405180910390f35b3480156100ee57600080fd5b506100f76101f7565b6040518082815260200191505060405180910390f35b34801561011957600080fd5b506101226101fd565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561014c57600080fd5b50610155610211565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a357600080fd5b506101ac610237565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101d457600080fd5b506101dd61024a565b005b60025481565b6001809054906101000a900460ff1681565b60005481565b600160169054906101000a900461ffff1681565b600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900460ff1681565b6000806001809054906101000a900460ff1615610298576220148061027143600254610488565b11151561027d57600080fd5b60006001806101000a81548160ff0219169083151502179055505b622014806102a843600254610488565b1115156102b457600080fd5b600160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600a600160009054906101000a900460ff1660ff16141561039a578173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561035857600080fd5b505af115801561036c573d6000803e3d6000fd5b505050506040513d602081101561038257600080fd5b81019080805190602001909291905050506000819055505b6103b86103b06000546103ab6104b3565b610560565b61271061059b565b90506000811115156103c957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1663cc872b66826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561043857600080fd5b505af115801561044c573d6000803e3d6000fd5b505050504360028190555060018060008282829054906101000a900460ff160192506101000a81548160ff021916908360ff1602179055505050565b600080828403905083831115151561049c57fe5b828101841415156104a957fe5b8091505092915050565b6000600a600160009054906101000a900460ff1660ff16141561053c576064600160169054906101000a900461ffff1661ffff16111561051f576064600160168282829054906101000a900461ffff160392506101000a81548161ffff021916908361ffff1602179055505b6000600160006101000a81548160ff021916908360ff1602179055505b61055b600160169054906101000a900461ffff1661ffff16600a61059b565b905090565b60008060008414156105755760009150610594565b828402905082848281151561058657fe5b0414151561059057fe5b8091505b5092915050565b6000806000831115156105aa57fe5b82848115156105b557fe5b049050808302841415156105c557fe5b80915050929150505600a165627a7a72305820d5b5224fab2403089e992bdd2ad6e8595c01e6a122ba685161699713fb1369920029