0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081179091556040519081527f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c9060200160405180910390a1610a3f806100686000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80636984394011610066578063698439401461013d578063704b6c02146101605780639000b3d614610173578063d85f6b1f14610186578063f851a4401461019957600080fd5b8063228ad19a146100985780632b65ba77146100ad578063369e398c146100c0578063376ae1df1461011c575b600080fd5b6100ab6100a63660046107df565b6101c4565b005b6100ab6100bb366004610856565b610247565b6100f76100ce3660046108fc565b600260208190526000918252604090912080546001820154928201546003909201549092919084565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b61012f61012a3660046108fc565b6102b6565b604051908152602001610113565b61012f61014b3660046108fc565b60009081526002602052604090206003015490565b6100ab61016e3660046107df565b610327565b6100ab6101813660046107df565b6103a0565b6100ab610194366004610915565b610420565b6000546101ac906001600160a01b031681565b6040516001600160a01b039091168152602001610113565b6000546001600160a01b031633146101ef57604051634755657960e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020908152604091829020805460ff1916905590519182527fb12c431436642a6a21ad66407a04b1142db514fc02bf421264191828594dcdb691015b60405180910390a150565b6000546001600160a01b0316331461027257604051634755657960e01b815260040160405180910390fd5b600083604051602001610285919061099d565b60408051601f1981840301815291815281516020928301206000908152600290925290209283555060039091015550565b6000818152600260205260408120600101544381146103105760405162461bcd60e51b81526020600482015260116024820152704e6f742063757272656e7420626c6f636b60781b60448201526064015b60405180910390fd5b505060009081526002602052604090206003015490565b6000546001600160a01b0316331461035257604051634755657960e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c9060200161023c565b6000546001600160a01b031633146103cb57604051634755657960e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff191690921790915590519182527f8715a337ace7100c4c9554a9913d471d8af339592f607550267df60da7f1ca14910161023c565b8051602080830151604080850151815193840194909452820152606081019190915260009060800160405160208183030381529060405280519060200120905061047881836060015184608001518560a00151610526565b815160009081526002602052604090206001810154431180156104a2575080600201548360200151115b80156104bd5750805460208401516104ba91906109cc565b42105b1561052157436001820155602083810151600283018190556040808601516003850181905586518251908152938401929092528201527fbe752e2d42b9b84ff6d011c450920be4d6d23708871b0ab0eadae6983e1659aa9060600160405180910390a15b505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c859052603c812090610562828686866105a6565b6001600160a01b03811660009081526001602052604090205490915060ff1661059e57604051638baa579f60e01b815260040160405180910390fd5b505050505050565b60008060006105b7878787876105ce565b915091506105c481610692565b5095945050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156106055750600090506003610689565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610659573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661068257600060019250925050610689565b9150600090505b94509492505050565b60008160048111156106a6576106a66109f3565b036106ae5750565b60018160048111156106c2576106c26109f3565b0361070f5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610307565b6002816004811115610723576107236109f3565b036107705760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610307565b6003816004811115610784576107846109f3565b036107dc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610307565b50565b6000602082840312156107f157600080fd5b81356001600160a01b038116811461080857600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561084e5761084e61080f565b604052919050565b60008060006060848603121561086b57600080fd5b833567ffffffffffffffff8082111561088357600080fd5b818601915086601f83011261089757600080fd5b81356020828211156108ab576108ab61080f565b6108bd601f8301601f19168201610825565b925081835288818386010111156108d357600080fd5b818185018285013760009183018101919091529097908601359650604090950135949350505050565b60006020828403121561090e57600080fd5b5035919050565b600060c0828403121561092757600080fd5b60405160c0810181811067ffffffffffffffff8211171561094a5761094a61080f565b8060405250823581526020830135602082015260408301356040820152606083013560ff8116811461097b57600080fd5b60608201526080838101359082015260a0928301359281019290925250919050565b6000825160005b818110156109be57602081860181015185830152016109a4565b506000920191825250919050565b808201808211156109ed57634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220861c780924db20b90fec1f46b7e6424e35a65d061ec7adfd49ecb199ccfbd29964736f6c63430008140033