608060405234801561000f575f5ffd5b506040518060400160405280601581526020017f576569676874656420566f74696e6720546f6b656e00000000000000000000008152506040518060400160405280600381526020016215d59560ea1b81525081600390816100719190610129565b50600461007e8282610129565b50506006805460010181555f52506101e3565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806100b957607f821691505b6020821081036100d757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561012457805f5260205f20601f840160051c810160208510156101025750805b601f840160051c820191505b81811015610121575f815560010161010e565b50505b505050565b81516001600160401b0381111561014257610142610091565b6101568161015084546100a5565b846100dd565b6020601f821160018114610188575f83156101715750848201515b5f19600385901b1c1916600184901b178455610121565b5f84815260208120601f198516915b828110156101b75787850151825560209485019460019092019101610197565b50848210156101d457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b610f62806101f05f395ff3fe608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c80638615d85511610093578063a9059cbb11610063578063a9059cbb1461021d578063d54ad2a114610230578063d5abeb0114610239578063dd62ed3e14610243575f5ffd5b80638615d855146101c8578063943e8216146101db57806395d89b41146101ee578063976b3113146101f6575f5ffd5b8063313ce567116100ce578063313ce567146101655780634e71d92d1461017457806370a082311461017e57806373b2e80e146101a6575f5ffd5b806306fdde03146100ff578063095ea7b31461011d57806318160ddd1461014057806323b872dd14610152575b5f5ffd5b61010761027b565b6040516101149190610b54565b60405180910390f35b61013061012b366004610b81565b61030b565b6040519015158152602001610114565b6002545b604051908152602001610114565b610130610160366004610ba9565b610324565b60405160128152602001610114565b61017c610347565b005b61014461018c366004610be3565b6001600160a01b03165f9081526020819052604090205490565b6101306101b4366004610be3565b60076020525f908152604090205460ff1681565b6101446101d6366004610c10565b6103eb565b61017c6101e9366004610cc5565b6104c5565b61010761066c565b610209610204366004610cf6565b61067b565b604051610114989796959493929190610d0d565b61013061022b366004610b81565b610781565b61014460055481565b610144620f424081565b610144610251366004610d5b565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b60606003805461028a90610d8c565b80601f01602080910402602001604051908101604052809291908181526020018280546102b690610d8c565b80156103015780601f106102d857610100808354040283529160200191610301565b820191905f5260205f20905b8154815290600101906020018083116102e457829003601f168201915b5050505050905090565b5f3361031881858561078e565b60019150505b92915050565b5f336103318582856107a0565b61033c858585610815565b506001949350505050565b620f424061035460025490565b61035f906064610dd8565b111561037e5760405163cbe2483160e01b815260040160405180910390fd5b335f9081526007602052604090205460ff16156103ae5760405163058993d360e11b815260040160405180910390fd5b335f818152600760205260409020805460ff191660011790556103d2906064610872565b606460055f8282546103e49190610dd8565b9091555050565b335f908152602081905260408120545f0361041957604051638439960d60e01b815260040160405180910390fd5b60025482111561044457604051632c4d24a960e11b8152600481018390526024015b60405180910390fd5b600680546001810182555f919091526009027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f8101907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d41016104a68582610e36565b50600781018390556006546104bd90600190610ef1565b949350505050565b5f600683815481106104d9576104d9610f04565b905f5260205f20906009020190508060080160019054906101000a900460ff16156105175760405163335b65a560e11b815260040160405180910390fd5b61052181336108aa565b1561053f57604051637c9a1cf960e01b815260040160405180910390fd5b61054981336108ce565b50335f908152602081905260408120549081900361057a57604051638439960d60e01b815260040160405180910390fd5b600183600281111561058e5761058e610f18565b036105b15780826003015f8282546105a69190610dd8565b9091555061060e9050565b5f8360028111156105c4576105c4610f18565b036105dc5780826004015f8282546105a69190610dd8565b60028360028111156105f0576105f0610f18565b0361060e5780826005015f8282546106089190610dd8565b90915550505b80826006015f8282546106219190610dd8565b909155505060078201546006830154106106665760088201805461ff0019166101001790556004820154600383015411156106665760088201805460ff191660011790555b50505050565b60606004805461028a90610d8c565b60605f5f5f5f5f5f5f5f60068a8154811061069857610698610f04565b5f91825260209091206009909102016003810154600482015460058301546006840154600785015460088601546002870180549798509660ff808316926101009004169088906106e790610d8c565b80601f016020809104026020016040519081016040528092919081815260200182805461071390610d8c565b801561075e5780601f106107355761010080835404028352916020019161075e565b820191905f5260205f20905b81548152906001019060200180831161074157829003601f168201915b505050505097509850985098509850985098509850985050919395975091939597565b5f33610318818585610815565b61079b83838360016108e2565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610666578181101561080757604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161043b565b61066684848484035f6108e2565b6001600160a01b03831661083e57604051634b637e8f60e11b81525f600482015260240161043b565b6001600160a01b0382166108675760405163ec442f0560e01b81525f600482015260240161043b565b61079b8383836109b4565b6001600160a01b03821661089b5760405163ec442f0560e01b81525f600482015260240161043b565b6108a65f83836109b4565b5050565b6001600160a01b0381165f90815260018301602052604081205415155b9392505050565b5f6108c7836001600160a01b038416610ada565b6001600160a01b03841661090b5760405163e602df0560e01b81525f600482015260240161043b565b6001600160a01b03831661093457604051634a1406b160e11b81525f600482015260240161043b565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561066657826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109a691815260200190565b60405180910390a350505050565b6001600160a01b0383166109de578060025f8282546109d39190610dd8565b90915550610a4e9050565b6001600160a01b0383165f9081526020819052604090205481811015610a305760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161043b565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610a6a57600280548290039055610a88565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610acd91815260200190565b60405180910390a3505050565b5f818152600183016020526040812054610b1f57508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561031e565b505f61031e565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6108c76020830184610b26565b80356001600160a01b0381168114610b7c575f5ffd5b919050565b5f5f60408385031215610b92575f5ffd5b610b9b83610b66565b946020939093013593505050565b5f5f5f60608486031215610bbb575f5ffd5b610bc484610b66565b9250610bd260208501610b66565b929592945050506040919091013590565b5f60208284031215610bf3575f5ffd5b6108c782610b66565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610c21575f5ffd5b823567ffffffffffffffff811115610c37575f5ffd5b8301601f81018513610c47575f5ffd5b803567ffffffffffffffff811115610c6157610c61610bfc565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610c9057610c90610bfc565b604052818152828201602001871015610ca7575f5ffd5b816020840160208301375f6020928201830152969401359450505050565b5f5f60408385031215610cd6575f5ffd5b82359150602083013560038110610ceb575f5ffd5b809150509250929050565b5f60208284031215610d06575f5ffd5b5035919050565b61010081525f610d2161010083018b610b26565b60208301999099525060408101969096526060860194909452608085019290925260a0840152151560c0830152151560e090910152919050565b5f5f60408385031215610d6c575f5ffd5b610d7583610b66565b9150610d8360208401610b66565b90509250929050565b600181811c90821680610da057607f821691505b602082108103610dbe57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561031e5761031e610dc4565b601f82111561079b57805f5260205f20601f840160051c81016020851015610e105750805b601f840160051c820191505b81811015610e2f575f8155600101610e1c565b5050505050565b815167ffffffffffffffff811115610e5057610e50610bfc565b610e6481610e5e8454610d8c565b84610deb565b6020601f821160018114610e96575f8315610e7f5750848201515b5f19600385901b1c1916600184901b178455610e2f565b5f84815260208120601f198516915b82811015610ec55787850151825560209485019460019092019101610ea5565b5084821015610ee257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8181038181111561031e5761031e610dc4565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea2646970667358221220e0cb56bcee918feeb315ef7c8fed28d8a313633573e34c51b0491779a94654e164736f6c634300081b0033