0x608060405234801561001057600080fd5b506040516114c63803806114c683398101604081905261002f916100a6565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160a01b03811661008157600080fd5b600280546001600160a01b0319166001600160a01b03929092169190911790556100d6565b6000602082840312156100b857600080fd5b81516001600160a01b03811681146100cf57600080fd5b9392505050565b6113e1806100e56000396000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c80636bd7a97a116100a25780638943ec02116100715780638943ec02146102705780638da5cb5b1461029c578063d54ad2a1146102ad578063eed75f6d146102b6578063f2fde38b146102e957600080fd5b80636bd7a97a1461022f5780636f860d7414610242578063715018a614610255578063889014961461025d57600080fd5b806345f7f249116100e957806345f7f249146101985780634e71d92d146101a1578063505a1b31146101a9578063529849e9146101c95780635de297411461020457600080fd5b8062ae3bf81461011a57806304e869031461012f57806328733bb714610162578063420d4a021461016a575b600080fd5b61012d610128366004611010565b6102fc565b005b61014f61013d366004611010565b60066020526000908152604090205481565b6040519081526020015b60405180910390f35b61014f610423565b61017d610178366004611010565b6104b6565b60408051938452602084019290925290820152606001610159565b61014f60035481565b61012d6106a5565b6101bc6101b7366004611010565b6106b0565b6040516101599190611032565b6101dc6101d73660046110a0565b610757565b604080519586526020860194909452928401919091526060830152608082015260a001610159565b600254610217906001600160a01b031681565b6040516001600160a01b039091168152602001610159565b61012d61023d3660046110ca565b6107a5565b61012d610250366004611125565b610a6b565b61012d610b00565b61012d61026b366004611010565b610b83565b61028361027e366004611172565b610c3e565b6040516001600160e01b03199091168152602001610159565b6000546001600160a01b0316610217565b61014f60045481565b6102d96102c4366004611010565b60016020526000908152604090205460ff1681565b6040519015158152602001610159565b61012d6102f7366004611010565b610cb0565b3361030f6000546001600160a01b031690565b6001600160a01b03161461033e5760405162461bcd60e51b81526004016103359061123d565b60405180910390fd5b6002546000906001600160a01b03908116908316036103665761035f610423565b90506103d1565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa1580156103aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ce9190611272565b90505b6103dc823383610da9565b604080516001600160a01b0384168152602081018390527f542fa6bfee3b4746210fbdd1d83f9e49b65adde3639f8d8f165dd18347938af291015b60405180910390a15050565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561046c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104909190611272565b905060006004546003546104a491906112a1565b90506104b081836112a1565b91505090565b6001600160a01b03811660009081526005602052604081205481906402540be40090825b8181101561066a576001600160a01b038616600090815260056020526040812080548390811061050c5761050c6112ba565b60009182526020918290206040805160a0810182526005909302909101805480845260018201549484019490945260028101549183019190915260038101546060830152600401546080820152915061056581876112d0565b95506000606483602001518361057b91906112e3565b61058591906112fa565b90504283604001511161062957600083608001518460400151426105a991906112a1565b6105b391906112fa565b6105be9060016112d0565b90506064846060015182856105d391906112e3565b6105dd91906112e3565b6105e791906112fa565b6105f190836112d0565b91506000846040015185608001518361060a91906112e3565b61061491906112d0565b905080881115610622578097505b505061063d565b826040015186111561063d57826040015195505b818111156106485750805b61065281896112d0565b975050505080806106629061131c565b9150506104da565b5061067584846112a1565b6001600160a01b03861660009081526006602052604090205490935061069b90856112a1565b9350509193909250565b6106ae33610b83565b565b6001600160a01b0381166000908152600560209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561074c57838290600052602060002090600502016040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050815260200190600101906106e8565b505050509050919050565b6005602052816000526040600020818154811061077357600080fd5b600091825260209091206005909102018054600182015460028301546003840154600490940154929550909350919085565b3360009081526001602052604090205460ff166107fe5760405162461bcd60e51b815260206004820152601760248201527613db9b1e4819195c1bdcda5d1bdc9cc8185b1b1bddd959604a1b6044820152606401610335565b6001600160a01b03861660009081526005602052604090205460641161088c5760405162461bcd60e51b815260206004820152603960248201527f546f6f206d616e7920616c6c6f636174696f6e7320666f72206f6e652061646460448201527f726573732c2075736520616e6f746865722061646472657373000000000000006064820152608401610335565b610894610423565b8511156108d75760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b6044820152606401610335565b6002546108ef906001600160a01b0316333088610ec4565b6001600160a01b0386166000908152600560208181526040808420815160a0810183528a81528084018a81529281018981526060820189815260808301898152845460018181018755958a5296892093519690970290920194855592519184019190915590516002830155516003808301919091559151600490910155805487929061097c9084906112d0565b9091555050853b15610a09576040516344a1f60160e11b81523060048201526000602482018190526060604483015260648201526001600160a01b03871690638943ec02906084016020604051808303816000875af11580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a079190611335565b505b604080518681526020810186905290810184905260608101839052608081018290526001600160a01b038716907f585acc8130c6cd35ae5bb61237605676cd4ec0a81dc2bf91a06b37270e81c3929060a00160405180910390a2505050505050565b33610a7e6000546001600160a01b031690565b6001600160a01b031614610aa45760405162461bcd60e51b81526004016103359061123d565b6001600160a01b038216600081815260016020908152604091829020805460ff19168515159081179091558251938452908301527fb1252fa67b4c05afbdaadfae34890b205103c0212a9e062b3978e8cd573631a99101610417565b33610b136000546001600160a01b031690565b6001600160a01b031614610b395760405162461bcd60e51b81526004016103359061123d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610b8e826104b6565b5050905080600014610bf7576001600160a01b03821660009081526006602052604081208054839290610bc29084906112d0565b925050819055508060046000828254610bdb91906112d0565b9091555050600254610bf7906001600160a01b03168383610da9565b816001600160a01b03167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d482604051610c3291815260200190565b60405180910390a25050565b6001600160a01b03831660009081526001602052604081205460ff16610ca05760405162461bcd60e51b815260206004820152601760248201527613db9b1e4819195c1bdcda5d1bdc9cc8185b1b1bddd959604a1b6044820152606401610335565b506344a1f60160e11b9392505050565b33610cc36000546001600160a01b031690565b6001600160a01b031614610ce95760405162461bcd60e51b81526004016103359061123d565b6001600160a01b038116610d4e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610335565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610e05919061135f565b6000604051808303816000865af19150503d8060008114610e42576040519150601f19603f3d011682016040523d82523d6000602084013e610e47565b606091505b5091509150818015610e71575080511580610e71575080806020019051810190610e71919061138e565b610ebd5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610335565b5050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610f28919061135f565b6000604051808303816000865af19150503d8060008114610f65576040519150601f19603f3d011682016040523d82523d6000602084013e610f6a565b606091505b5091509150818015610f94575080511580610f94575080806020019051810190610f94919061138e565b610fec5760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b6064820152608401610335565b505050505050565b80356001600160a01b038116811461100b57600080fd5b919050565b60006020828403121561102257600080fd5b61102b82610ff4565b9392505050565b602080825282518282018190526000919060409081850190868401855b828110156110935781518051855286810151878601528581015186860152606080820151908601526080908101519085015260a0909301929085019060010161104f565b5091979650505050505050565b600080604083850312156110b357600080fd5b6110bc83610ff4565b946020939093013593505050565b60008060008060008060c087890312156110e357600080fd5b6110ec87610ff4565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b801515811461112257600080fd5b50565b6000806040838503121561113857600080fd5b61114183610ff4565b9150602083013561115181611114565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561118757600080fd5b61119084610ff4565b925060208401359150604084013567ffffffffffffffff808211156111b457600080fd5b818601915086601f8301126111c857600080fd5b8135818111156111da576111da61115c565b604051601f8201601f19908116603f011681019083821181831017156112025761120261115c565b8160405282815289602084870101111561121b57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561128457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156112b4576112b461128b565b92915050565b634e487b7160e01b600052603260045260246000fd5b808201808211156112b4576112b461128b565b80820281158282048414176112b4576112b461128b565b60008261131757634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161132e5761132e61128b565b5060010190565b60006020828403121561134757600080fd5b81516001600160e01b03198116811461102b57600080fd5b6000825160005b818110156113805760208186018101518583015201611366565b506000920191825250919050565b6000602082840312156113a057600080fd5b815161102b8161111456fea2646970667358221220bc2c8d8c4b813e01b99fe3e98e87d95e37e89cd028af0ede62cb240f1feb9caa64736f6c63430008130033000000000000000000000000e1a77164e5c6d9e0fc0b23d11e0874de6b328e68
0x608060405234801561001057600080fd5b50600436106101155760003560e01c80636bd7a97a116100a25780638943ec02116100715780638943ec02146102705780638da5cb5b1461029c578063d54ad2a1146102ad578063eed75f6d146102b6578063f2fde38b146102e957600080fd5b80636bd7a97a1461022f5780636f860d7414610242578063715018a614610255578063889014961461025d57600080fd5b806345f7f249116100e957806345f7f249146101985780634e71d92d146101a1578063505a1b31146101a9578063529849e9146101c95780635de297411461020457600080fd5b8062ae3bf81461011a57806304e869031461012f57806328733bb714610162578063420d4a021461016a575b600080fd5b61012d610128366004611010565b6102fc565b005b61014f61013d366004611010565b60066020526000908152604090205481565b6040519081526020015b60405180910390f35b61014f610423565b61017d610178366004611010565b6104b6565b60408051938452602084019290925290820152606001610159565b61014f60035481565b61012d6106a5565b6101bc6101b7366004611010565b6106b0565b6040516101599190611032565b6101dc6101d73660046110a0565b610757565b604080519586526020860194909452928401919091526060830152608082015260a001610159565b600254610217906001600160a01b031681565b6040516001600160a01b039091168152602001610159565b61012d61023d3660046110ca565b6107a5565b61012d610250366004611125565b610a6b565b61012d610b00565b61012d61026b366004611010565b610b83565b61028361027e366004611172565b610c3e565b6040516001600160e01b03199091168152602001610159565b6000546001600160a01b0316610217565b61014f60045481565b6102d96102c4366004611010565b60016020526000908152604090205460ff1681565b6040519015158152602001610159565b61012d6102f7366004611010565b610cb0565b3361030f6000546001600160a01b031690565b6001600160a01b03161461033e5760405162461bcd60e51b81526004016103359061123d565b60405180910390fd5b6002546000906001600160a01b03908116908316036103665761035f610423565b90506103d1565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa1580156103aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ce9190611272565b90505b6103dc823383610da9565b604080516001600160a01b0384168152602081018390527f542fa6bfee3b4746210fbdd1d83f9e49b65adde3639f8d8f165dd18347938af291015b60405180910390a15050565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561046c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104909190611272565b905060006004546003546104a491906112a1565b90506104b081836112a1565b91505090565b6001600160a01b03811660009081526005602052604081205481906402540be40090825b8181101561066a576001600160a01b038616600090815260056020526040812080548390811061050c5761050c6112ba565b60009182526020918290206040805160a0810182526005909302909101805480845260018201549484019490945260028101549183019190915260038101546060830152600401546080820152915061056581876112d0565b95506000606483602001518361057b91906112e3565b61058591906112fa565b90504283604001511161062957600083608001518460400151426105a991906112a1565b6105b391906112fa565b6105be9060016112d0565b90506064846060015182856105d391906112e3565b6105dd91906112e3565b6105e791906112fa565b6105f190836112d0565b91506000846040015185608001518361060a91906112e3565b61061491906112d0565b905080881115610622578097505b505061063d565b826040015186111561063d57826040015195505b818111156106485750805b61065281896112d0565b975050505080806106629061131c565b9150506104da565b5061067584846112a1565b6001600160a01b03861660009081526006602052604090205490935061069b90856112a1565b9350509193909250565b6106ae33610b83565b565b6001600160a01b0381166000908152600560209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561074c57838290600052602060002090600502016040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050815260200190600101906106e8565b505050509050919050565b6005602052816000526040600020818154811061077357600080fd5b600091825260209091206005909102018054600182015460028301546003840154600490940154929550909350919085565b3360009081526001602052604090205460ff166107fe5760405162461bcd60e51b815260206004820152601760248201527613db9b1e4819195c1bdcda5d1bdc9cc8185b1b1bddd959604a1b6044820152606401610335565b6001600160a01b03861660009081526005602052604090205460641161088c5760405162461bcd60e51b815260206004820152603960248201527f546f6f206d616e7920616c6c6f636174696f6e7320666f72206f6e652061646460448201527f726573732c2075736520616e6f746865722061646472657373000000000000006064820152608401610335565b610894610423565b8511156108d75760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b6044820152606401610335565b6002546108ef906001600160a01b0316333088610ec4565b6001600160a01b0386166000908152600560208181526040808420815160a0810183528a81528084018a81529281018981526060820189815260808301898152845460018181018755958a5296892093519690970290920194855592519184019190915590516002830155516003808301919091559151600490910155805487929061097c9084906112d0565b9091555050853b15610a09576040516344a1f60160e11b81523060048201526000602482018190526060604483015260648201526001600160a01b03871690638943ec02906084016020604051808303816000875af11580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a079190611335565b505b604080518681526020810186905290810184905260608101839052608081018290526001600160a01b038716907f585acc8130c6cd35ae5bb61237605676cd4ec0a81dc2bf91a06b37270e81c3929060a00160405180910390a2505050505050565b33610a7e6000546001600160a01b031690565b6001600160a01b031614610aa45760405162461bcd60e51b81526004016103359061123d565b6001600160a01b038216600081815260016020908152604091829020805460ff19168515159081179091558251938452908301527fb1252fa67b4c05afbdaadfae34890b205103c0212a9e062b3978e8cd573631a99101610417565b33610b136000546001600160a01b031690565b6001600160a01b031614610b395760405162461bcd60e51b81526004016103359061123d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000610b8e826104b6565b5050905080600014610bf7576001600160a01b03821660009081526006602052604081208054839290610bc29084906112d0565b925050819055508060046000828254610bdb91906112d0565b9091555050600254610bf7906001600160a01b03168383610da9565b816001600160a01b03167f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d482604051610c3291815260200190565b60405180910390a25050565b6001600160a01b03831660009081526001602052604081205460ff16610ca05760405162461bcd60e51b815260206004820152601760248201527613db9b1e4819195c1bdcda5d1bdc9cc8185b1b1bddd959604a1b6044820152606401610335565b506344a1f60160e11b9392505050565b33610cc36000546001600160a01b031690565b6001600160a01b031614610ce95760405162461bcd60e51b81526004016103359061123d565b6001600160a01b038116610d4e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610335565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610e05919061135f565b6000604051808303816000865af19150503d8060008114610e42576040519150601f19603f3d011682016040523d82523d6000602084013e610e47565b606091505b5091509150818015610e71575080511580610e71575080806020019051810190610e71919061138e565b610ebd5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610335565b5050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610f28919061135f565b6000604051808303816000865af19150503d8060008114610f65576040519150601f19603f3d011682016040523d82523d6000602084013e610f6a565b606091505b5091509150818015610f94575080511580610f94575080806020019051810190610f94919061138e565b610fec5760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b6064820152608401610335565b505050505050565b80356001600160a01b038116811461100b57600080fd5b919050565b60006020828403121561102257600080fd5b61102b82610ff4565b9392505050565b602080825282518282018190526000919060409081850190868401855b828110156110935781518051855286810151878601528581015186860152606080820151908601526080908101519085015260a0909301929085019060010161104f565b5091979650505050505050565b600080604083850312156110b357600080fd5b6110bc83610ff4565b946020939093013593505050565b60008060008060008060c087890312156110e357600080fd5b6110ec87610ff4565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b801515811461112257600080fd5b50565b6000806040838503121561113857600080fd5b61114183610ff4565b9150602083013561115181611114565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561118757600080fd5b61119084610ff4565b925060208401359150604084013567ffffffffffffffff808211156111b457600080fd5b818601915086601f8301126111c857600080fd5b8135818111156111da576111da61115c565b604051601f8201601f19908116603f011681019083821181831017156112025761120261115c565b8160405282815289602084870101111561121b57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561128457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156112b4576112b461128b565b92915050565b634e487b7160e01b600052603260045260246000fd5b808201808211156112b4576112b461128b565b80820281158282048414176112b4576112b461128b565b60008261131757634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161132e5761132e61128b565b5060010190565b60006020828403121561134757600080fd5b81516001600160e01b03198116811461102b57600080fd5b6000825160005b818110156113805760208186018101518583015201611366565b506000920191825250919050565b6000602082840312156113a057600080fd5b815161102b8161111456fea2646970667358221220bc2c8d8c4b813e01b99fe3e98e87d95e37e89cd028af0ede62cb240f1feb9caa64736f6c63430008130033