0x608060405234801561001057600080fd5b50610587806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063fa6dd89a14610030575b600080fd5b61004361003e366004610360565b610059565b60405161005091906103d5565b60405180910390f35b6060600061006883600361042f565b67ffffffffffffffff8111156100805761008061044e565b6040519080825280602002602001820160405280156100a9578160200160208202803683370190505b5090506000805b848110156102d15760008686838181106100cc576100cc610464565b90506020028101906100de919061047a565b60008181106100ef576100ef610464565b905060200201602081019061010491906104cb565b9050600087878481811061011a5761011a610464565b905060200281019061012c919061047a565b600181811061013d5761013d610464565b905060200201602081019061015291906104cb565b9050600088888581811061016857610168610464565b905060200281019061017a919061047a565b600281811061018b5761018b610464565b90506020020160208101906101a091906104cb565b6040805160048152602481019091526020810180516001600160e01b03166318160ddd60e01b1790529091506101d79084906102db565b86866101e2816104fb565b9750815181106101f4576101f4610464565b60209081029190910101526040516001600160a01b038416602482015261024a9083906044015b60408051601f198184030181529190526020810180516001600160e01b03166370a0823160e01b1790526102db565b8686610255816104fb565b97508151811061026757610267610464565b60209081029190910101526040516001600160a01b038416602482015261029290829060440161021b565b868661029d816104fb565b9750815181106102af576102af610464565b60200260200101818152505050505080806102c9906104fb565b9150506100b0565b5090949350505050565b60008080846001600160a01b0316846040516102f79190610516565b600060405180830381855afa9150503d8060008114610332576040519150601f19603f3d011682016040523d82523d6000602084013e610337565b606091505b509150915081801561034b57506020815110155b1561035857602081015192505b505092915050565b6000806020838503121561037357600080fd5b823567ffffffffffffffff8082111561038b57600080fd5b818501915085601f83011261039f57600080fd5b8135818111156103ae57600080fd5b8660208260051b85010111156103c357600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b8181101561040d578351835292840192918401916001016103f1565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561044957610449610419565b500290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261049157600080fd5b83018035915067ffffffffffffffff8211156104ac57600080fd5b6020019150600581901b36038213156104c457600080fd5b9250929050565b6000602082840312156104dd57600080fd5b81356001600160a01b03811681146104f457600080fd5b9392505050565b600060001982141561050f5761050f610419565b5060010190565b6000825160005b81811015610537576020818601810151858301520161051d565b81811115610546576000828501525b50919091019291505056fea2646970667358221220fe01bdeab90d6800c403e54aa6c388ac9b4b37e5336bdab60ba6baf75ba7ebac64736f6c634300080a0033