0x608060405234801561001057600080fd5b50600436106100885760003560e01c80639117d30e1161005b5780639117d30e1461015b578063a81b7cb51461016e578063d55d092314610181578063e39efc6c1461019457600080fd5b806338e7b4551461008d578063430f3842146100a2578063493d2362146100b55780638bfa095a14610128575b600080fd5b6100a061009b366004610f5a565b6101a7565b005b6100a06100b0366004610fee565b6101c5565b6101156100c3366004611041565b6040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b6040519081526020015b60405180910390f35b61014b61013636600461107d565b60009081526020819052604090205460ff1690565b604051901515815260200161011f565b6100a0610169366004611096565b6104ac565b6100a061017c36600461115a565b6104ce565b6100a061018f366004610fee565b610870565b6100a06101a236600461115a565b610ab1565b6101b2838383610870565b6101bd8686866101c5565b505050505050565b806102175760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f76696465640000000000000060448201526064015b60405180910390fd5b6040517fe985e9c5000000000000000000000000000000000000000000000000000000008152336004820181905230602483015290849073ffffffffffffffffffffffffffffffffffffffff82169063e985e9c590604401602060405180830381865afa15801561028c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b091906111c6565b6102fc5760405162461bcd60e51b815260206004820152601b60248201527f5374616b653a204e6f7420617070726f76656420666f7220616c6c0000000000604482015260640161020e565b60005b8381101561046757600085858381811061031b5761031b6111ef565b6040516323b872dd60e01b815273ffffffffffffffffffffffffffffffffffffffff8881166004830152306024830152602090920293909301356044840181905293508516916323b872dd9150606401600060405180830381600087803b15801561038557600080fd5b505af1925050508015610396575060015b6103e25760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b600160008061043f878b866040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b81526020810191909152604001600020805460ff1916911515919091179055506001016102ff565b507ff070f6fb17b358fded430ccc5fc22c7a2d44bd8e75683de84a7b7f2e6b72b7228286868660405161049d9493929190611269565b60405180910390a15050505050565b6104b8848484846104ce565b6104c488888888610ab1565b5050505050505050565b8061051b5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b82811461056a5760405162461bcd60e51b815260206004820152601460248201527f5374616b653a20496e76616c696420696e707574000000000000000000000000604482015260640161020e565b3360005b8481101561083857600086868381811061058a5761058a6111ef565b905060200201602081019061059f91906112ad565b905060008585848181106105b5576105b56111ef565b90506020028101906105c791906112c8565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050825192935050506106495760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b60005b815181101561082d576000828281518110610669576106696111ef565b6020026020010151905060006106f3878c8c8981811061068b5761068b6111ef565b90506020020160208101906106a091906112ad565b846040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b60008181526020819052604090205490915060ff166107545760405162461bcd60e51b815260206004820152601160248201527f5374616b653a204e6f74207374616b6564000000000000000000000000000000604482015260640161020e565b6040516323b872dd60e01b815230600482015273ffffffffffffffffffffffffffffffffffffffff8881166024830152604482018490528616906323b872dd90606401600060405180830381600087803b1580156107b157600080fd5b505af19250505080156107c2575060015b61080e5760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b6000908152602081905260409020805460ff191690555060010161064c565b50505060010161056e565b507fb91254996feab404491fb2088db7b7b1aefd1f59e6d1391f0add834684f60779818686868660405161049d959493929190611312565b806108bd5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b338360005b83811015610a7b5760008585838181106108de576108de6111ef565b90506020020135905060006109418589846040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b60008181526020819052604090205490915060ff166109a25760405162461bcd60e51b815260206004820152601160248201527f5374616b653a204e6f74207374616b6564000000000000000000000000000000604482015260640161020e565b6040516323b872dd60e01b815230600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018490528516906323b872dd90606401600060405180830381600087803b1580156109ff57600080fd5b505af1925050508015610a10575060015b610a5c5760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b6000908152602081905260409020805460ff19169055506001016108c2565b507f6e7923d30eccb408bdc077cf6fe71b5ddcbd125d5a036bfe7ea272577e7aac838286868660405161049d9493929190611269565b80610afe5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b828114610b4d5760405162461bcd60e51b815260206004820152601460248201527f5374616b653a20496e76616c696420696e707574000000000000000000000000604482015260640161020e565b3360005b84811015610ead576000868683818110610b6d57610b6d6111ef565b9050602002016020810190610b8291906112ad565b90506000858584818110610b9857610b986111ef565b9050602002810190610baa91906112c8565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505082519293505050610c2c5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b6040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015230602483015283169063e985e9c590604401602060405180830381865afa158015610c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc291906111c6565b610d0e5760405162461bcd60e51b815260206004820152601b60248201527f5374616b653a204e6f7420617070726f76656420666f7220616c6c0000000000604482015260640161020e565b60005b8151811015610ea2576000828281518110610d2e57610d2e6111ef565b60209081029190910101516040516323b872dd60e01b815273ffffffffffffffffffffffffffffffffffffffff888116600483015230602483015260448201839052919250908516906323b872dd90606401600060405180830381600087803b158015610d9a57600080fd5b505af1925050508015610dab575060015b610df75760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b6001600080610e7a898e8e8b818110610e1257610e126111ef565b9050602002016020810190610e2791906112ad565b866040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b81526020810191909152604001600020805460ff191691151591909117905550600101610d11565b505050600101610b51565b507fb96cd7bef32d835312572aba8a672445dc2ea748c715761d63bd7255dd0c88e9818686868660405161049d959493929190611312565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f0957600080fd5b919050565b60008083601f840112610f2057600080fd5b50813567ffffffffffffffff811115610f3857600080fd5b6020830191508360208260051b8501011115610f5357600080fd5b9250929050565b60008060008060008060808789031215610f7357600080fd5b610f7c87610ee5565b9550602087013567ffffffffffffffff80821115610f9957600080fd5b610fa58a838b01610f0e565b9097509550859150610fb960408a01610ee5565b94506060890135915080821115610fcf57600080fd5b50610fdc89828a01610f0e565b979a9699509497509295939492505050565b60008060006040848603121561100357600080fd5b61100c84610ee5565b9250602084013567ffffffffffffffff81111561102857600080fd5b61103486828701610f0e565b9497909650939450505050565b60008060006060848603121561105657600080fd5b61105f84610ee5565b925061106d60208501610ee5565b9150604084013590509250925092565b60006020828403121561108f57600080fd5b5035919050565b6000806000806000806000806080898b0312156110b257600080fd5b883567ffffffffffffffff808211156110ca57600080fd5b6110d68c838d01610f0e565b909a50985060208b01359150808211156110ef57600080fd5b6110fb8c838d01610f0e565b909850965060408b013591508082111561111457600080fd5b6111208c838d01610f0e565b909650945060608b013591508082111561113957600080fd5b506111468b828c01610f0e565b999c989b5096995094979396929594505050565b6000806000806040858703121561117057600080fd5b843567ffffffffffffffff8082111561118857600080fd5b61119488838901610f0e565b909650945060208701359150808211156111ad57600080fd5b506111ba87828801610f0e565b95989497509550505050565b6000602082840312156111d857600080fd5b815180151581146111e857600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561125057600080fd5b8260051b80836020870137939093016020019392505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526112a360608301848661121e565b9695505050505050565b6000602082840312156112bf57600080fd5b6111e882610ee5565b6000808335601e198436030181126112df57600080fd5b83018035915067ffffffffffffffff8211156112fa57600080fd5b6020019150600581901b3603821315610f5357600080fd5b73ffffffffffffffffffffffffffffffffffffffff868116825260606020808401829052908301869052600091879160808501845b8981101561136c578361135986610ee5565b1682529382019390820190600101611347565b50858103604087015286815281810193506005925086831b810182018860005b8981101561141b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08484030187528135601e198c36030181126113cf57600080fd5b8b01858101903567ffffffffffffffff8111156113eb57600080fd5b80881b36038213156113fc57600080fd5b61140785828461121e565b98870198945050509084019060010161138c565b50909c9b50505050505050505050505056fea2646970667358221220e9255eba3d66d1a60c2a4682ae2999328ec1d57520c3b6add55d854496580d2564736f6c63430008110033
0x608060405234801561001057600080fd5b50611463806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639117d30e1161005b5780639117d30e1461015b578063a81b7cb51461016e578063d55d092314610181578063e39efc6c1461019457600080fd5b806338e7b4551461008d578063430f3842146100a2578063493d2362146100b55780638bfa095a14610128575b600080fd5b6100a061009b366004610f5a565b6101a7565b005b6100a06100b0366004610fee565b6101c5565b6101156100c3366004611041565b6040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b6040519081526020015b60405180910390f35b61014b61013636600461107d565b60009081526020819052604090205460ff1690565b604051901515815260200161011f565b6100a0610169366004611096565b6104ac565b6100a061017c36600461115a565b6104ce565b6100a061018f366004610fee565b610870565b6100a06101a236600461115a565b610ab1565b6101b2838383610870565b6101bd8686866101c5565b505050505050565b806102175760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f76696465640000000000000060448201526064015b60405180910390fd5b6040517fe985e9c5000000000000000000000000000000000000000000000000000000008152336004820181905230602483015290849073ffffffffffffffffffffffffffffffffffffffff82169063e985e9c590604401602060405180830381865afa15801561028c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b091906111c6565b6102fc5760405162461bcd60e51b815260206004820152601b60248201527f5374616b653a204e6f7420617070726f76656420666f7220616c6c0000000000604482015260640161020e565b60005b8381101561046757600085858381811061031b5761031b6111ef565b6040516323b872dd60e01b815273ffffffffffffffffffffffffffffffffffffffff8881166004830152306024830152602090920293909301356044840181905293508516916323b872dd9150606401600060405180830381600087803b15801561038557600080fd5b505af1925050508015610396575060015b6103e25760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b600160008061043f878b866040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b81526020810191909152604001600020805460ff1916911515919091179055506001016102ff565b507ff070f6fb17b358fded430ccc5fc22c7a2d44bd8e75683de84a7b7f2e6b72b7228286868660405161049d9493929190611269565b60405180910390a15050505050565b6104b8848484846104ce565b6104c488888888610ab1565b5050505050505050565b8061051b5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b82811461056a5760405162461bcd60e51b815260206004820152601460248201527f5374616b653a20496e76616c696420696e707574000000000000000000000000604482015260640161020e565b3360005b8481101561083857600086868381811061058a5761058a6111ef565b905060200201602081019061059f91906112ad565b905060008585848181106105b5576105b56111ef565b90506020028101906105c791906112c8565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050825192935050506106495760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b60005b815181101561082d576000828281518110610669576106696111ef565b6020026020010151905060006106f3878c8c8981811061068b5761068b6111ef565b90506020020160208101906106a091906112ad565b846040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b60008181526020819052604090205490915060ff166107545760405162461bcd60e51b815260206004820152601160248201527f5374616b653a204e6f74207374616b6564000000000000000000000000000000604482015260640161020e565b6040516323b872dd60e01b815230600482015273ffffffffffffffffffffffffffffffffffffffff8881166024830152604482018490528616906323b872dd90606401600060405180830381600087803b1580156107b157600080fd5b505af19250505080156107c2575060015b61080e5760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b6000908152602081905260409020805460ff191690555060010161064c565b50505060010161056e565b507fb91254996feab404491fb2088db7b7b1aefd1f59e6d1391f0add834684f60779818686868660405161049d959493929190611312565b806108bd5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b338360005b83811015610a7b5760008585838181106108de576108de6111ef565b90506020020135905060006109418589846040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b60008181526020819052604090205490915060ff166109a25760405162461bcd60e51b815260206004820152601160248201527f5374616b653a204e6f74207374616b6564000000000000000000000000000000604482015260640161020e565b6040516323b872dd60e01b815230600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018490528516906323b872dd90606401600060405180830381600087803b1580156109ff57600080fd5b505af1925050508015610a10575060015b610a5c5760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b6000908152602081905260409020805460ff19169055506001016108c2565b507f6e7923d30eccb408bdc077cf6fe71b5ddcbd125d5a036bfe7ea272577e7aac838286868660405161049d9493929190611269565b80610afe5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b828114610b4d5760405162461bcd60e51b815260206004820152601460248201527f5374616b653a20496e76616c696420696e707574000000000000000000000000604482015260640161020e565b3360005b84811015610ead576000868683818110610b6d57610b6d6111ef565b9050602002016020810190610b8291906112ad565b90506000858584818110610b9857610b986111ef565b9050602002810190610baa91906112c8565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505082519293505050610c2c5760405162461bcd60e51b815260206004820152601960248201527f5374616b653a204e6f20746f6b656e732070726f766964656400000000000000604482015260640161020e565b6040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015230602483015283169063e985e9c590604401602060405180830381865afa158015610c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc291906111c6565b610d0e5760405162461bcd60e51b815260206004820152601b60248201527f5374616b653a204e6f7420617070726f76656420666f7220616c6c0000000000604482015260640161020e565b60005b8151811015610ea2576000828281518110610d2e57610d2e6111ef565b60209081029190910101516040516323b872dd60e01b815273ffffffffffffffffffffffffffffffffffffffff888116600483015230602483015260448201839052919250908516906323b872dd90606401600060405180830381600087803b158015610d9a57600080fd5b505af1925050508015610dab575060015b610df75760405162461bcd60e51b815260206004820152601660248201527f5374616b653a205472616e73666572206661696c656400000000000000000000604482015260640161020e565b6001600080610e7a898e8e8b818110610e1257610e126111ef565b9050602002016020810190610e2791906112ad565b866040516bffffffffffffffffffffffff19606085811b8216602084015284901b166034820152604881018290526000906068016040516020818303038152906040528051906020012090509392505050565b81526020810191909152604001600020805460ff191691151591909117905550600101610d11565b505050600101610b51565b507fb96cd7bef32d835312572aba8a672445dc2ea748c715761d63bd7255dd0c88e9818686868660405161049d959493929190611312565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f0957600080fd5b919050565b60008083601f840112610f2057600080fd5b50813567ffffffffffffffff811115610f3857600080fd5b6020830191508360208260051b8501011115610f5357600080fd5b9250929050565b60008060008060008060808789031215610f7357600080fd5b610f7c87610ee5565b9550602087013567ffffffffffffffff80821115610f9957600080fd5b610fa58a838b01610f0e565b9097509550859150610fb960408a01610ee5565b94506060890135915080821115610fcf57600080fd5b50610fdc89828a01610f0e565b979a9699509497509295939492505050565b60008060006040848603121561100357600080fd5b61100c84610ee5565b9250602084013567ffffffffffffffff81111561102857600080fd5b61103486828701610f0e565b9497909650939450505050565b60008060006060848603121561105657600080fd5b61105f84610ee5565b925061106d60208501610ee5565b9150604084013590509250925092565b60006020828403121561108f57600080fd5b5035919050565b6000806000806000806000806080898b0312156110b257600080fd5b883567ffffffffffffffff808211156110ca57600080fd5b6110d68c838d01610f0e565b909a50985060208b01359150808211156110ef57600080fd5b6110fb8c838d01610f0e565b909850965060408b013591508082111561111457600080fd5b6111208c838d01610f0e565b909650945060608b013591508082111561113957600080fd5b506111468b828c01610f0e565b999c989b5096995094979396929594505050565b6000806000806040858703121561117057600080fd5b843567ffffffffffffffff8082111561118857600080fd5b61119488838901610f0e565b909650945060208701359150808211156111ad57600080fd5b506111ba87828801610f0e565b95989497509550505050565b6000602082840312156111d857600080fd5b815180151581146111e857600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561125057600080fd5b8260051b80836020870137939093016020019392505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526112a360608301848661121e565b9695505050505050565b6000602082840312156112bf57600080fd5b6111e882610ee5565b6000808335601e198436030181126112df57600080fd5b83018035915067ffffffffffffffff8211156112fa57600080fd5b6020019150600581901b3603821315610f5357600080fd5b73ffffffffffffffffffffffffffffffffffffffff868116825260606020808401829052908301869052600091879160808501845b8981101561136c578361135986610ee5565b1682529382019390820190600101611347565b50858103604087015286815281810193506005925086831b810182018860005b8981101561141b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08484030187528135601e198c36030181126113cf57600080fd5b8b01858101903567ffffffffffffffff8111156113eb57600080fd5b80881b36038213156113fc57600080fd5b61140785828461121e565b98870198945050509084019060010161138c565b50909c9b50505050505050505050505056fea2646970667358221220e9255eba3d66d1a60c2a4682ae2999328ec1d57520c3b6add55d854496580d2564736f6c63430008110033