608060405260126006556000600760006101000a81548160ff021916908315150217905550600060089060001916905534801561003b57600080fd5b506040516020806119d583398101806040528101908080519060200190929190505050600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806000819055505033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a280600581600019169055505061188a8061014b6000396000f30060806040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d2035b1461014357806306fdde031461017257806307da68f5146101a5578063095ea7b3146101bc57806313af40351461022157806318160ddd1461026457806323b872dd1461028f578063313ce5671461031457806342966c681461033f5780635ac801fe1461038457806370a08231146103b557806375f12b211461040c5780637a9e5e4b1461043b5780638da5cb5b1461047e57806395d89b41146104d5578063a0712d6814610508578063a9059cbb1461054d578063b753a98c146105b2578063bb35783b146105ff578063be9a65551461066c578063bf7e214f14610683578063daea85c5146106da578063dd62ed3e14610735578063f2d5d56b146107ac575b600080fd5b34801561014f57600080fd5b506101586107f9565b604051808215151515815260200191505060405180910390f35b34801561017e57600080fd5b5061018761080c565b60405180826000191660001916815260200191505060405180910390f35b3480156101b157600080fd5b506101ba610812565b005b3480156101c857600080fd5b50610207600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610915565b604051808215151515815260200191505060405180910390f35b34801561022d57600080fd5b50610262600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610945565b005b34801561027057600080fd5b50610279610a27565b6040518082815260200191505060405180910390f35b34801561029b57600080fd5b506102fa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a30565b604051808215151515815260200191505060405180910390f35b34801561032057600080fd5b50610329610dba565b6040518082815260200191505060405180910390f35b34801561034b57600080fd5b5061036a60048036038101908080359060200190929190505050610dc0565b604051808215151515815260200191505060405180910390f35b34801561039057600080fd5b506103b36004803603810190808035600019169060200190929190505050610f11565b005b3480156103c157600080fd5b506103f6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f58565b6040518082815260200191505060405180910390f35b34801561041857600080fd5b50610421610fa1565b604051808215151515815260200191505060405180910390f35b34801561044757600080fd5b5061047c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fb4565b005b34801561048a57600080fd5b50610493611096565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104e157600080fd5b506104ea6110bc565b60405180826000191660001916815260200191505060405180910390f35b34801561051457600080fd5b50610533600480360381019080803590602001909291905050506110c2565b604051808215151515815260200191505060405180910390f35b34801561055957600080fd5b50610598600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611276565b604051808215151515815260200191505060405180910390f35b3480156105be57600080fd5b506105fd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061128b565b005b34801561060b57600080fd5b5061066a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061129b565b005b34801561067857600080fd5b506106816112ac565b005b34801561068f57600080fd5b506106986113af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106e657600080fd5b5061071b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113d5565b604051808215151515815260200191505060405180910390f35b34801561074157600080fd5b50610796600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611424565b6040518082815260200191505060405180910390f35b3480156107b857600080fd5b506107f7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114ab565b005b600760009054906101000a900460ff1681565b60085481565b610840336000357fffffffff00000000000000000000000000000000000000000000000000000000166114bb565b151561084b57600080fd5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff1615151561093357600080fd5b61093d8383611734565b905092915050565b610973336000357fffffffff00000000000000000000000000000000000000000000000000000000166114bb565b151561097e57600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600460149054906101000a900460ff16151515610a4e57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610b2657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15610c3257610bb1600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611826565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c7b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611826565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d07600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611842565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60065481565b600080610df1336000357fffffffff00000000000000000000000000000000000000000000000000000000166114bb565b1515610dfc57600080fd5b600460149054906101000a900460ff16151515610e1857600080fd5b339050610e64600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611826565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610eb360005484611826565b6000819055508073ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5846040518082815260200191505060405180910390a26001915050919050565b610f3f336000357fffffffff00000000000000000000000000000000000000000000000000000000166114bb565b1515610f4a57600080fd5b806008816000191690555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610fe2336000357fffffffff00000000000000000000000000000000000000000000000000000000166114bb565b1515610fed57600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b6000806110f3336000357fffffffff00000000000000000000000000000000000000000000000000000000166114bb565b15156110fe57600080fd5b600760009054906101000a900460ff1615151561111a57600080fd5b600460149054906101000a900460ff1615151561113657600080fd5b33905061114560005484611842565b600081905550611194600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611842565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885846040518082815260200191505060405180910390a26001600760006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001915050919050565b6000611283338484610a30565b905092915050565b611296338383610a30565b505050565b6112a6838383610a30565b50505050565b6112da336000357fffffffff00000000000000000000000000000000000000000000000000000000166114bb565b15156112e557600080fd5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460149054906101000a900460ff161515156113f357600080fd5b61141d827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611734565b9050919050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114b6823383610a30565b505050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114fa576001905061172e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611559576001905061172e565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115b9576000905061172e565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b1580156116f057600080fd5b505af1158015611704573d6000803e3d6000fd5b505050506040513d602081101561171a57600080fd5b810190808051906020019092919050505090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000828284039150811115151561183c57600080fd5b92915050565b6000828284019150811015151561185857600080fd5b929150505600a165627a7a723058205bbcd662c9a92e9b0fef2bb47e7819b107ab1f070c62d7b7a5f3a79bfcb30f3c00294a41444500000000000000000000000000000000000000000000000000000000