0x60806040526004361061024a5760003560e01c80637d1db4a511610139578063a9059cbb116100b6578063d4bafb1a1161007a578063d4bafb1a146106d8578063dd62ed3e146106ee578063e1d5584c14610734578063e4bf1bed14610754578063f84ba65d14610774578063f887ea401461079457600080fd5b8063a9059cbb14610632578063b62496f514610652578063c04a78ad14610682578063c851cc32146106a2578063d00efb2f146106c257600080fd5b80638cd4426d116100fd5780638cd4426d146105b45780638da5cb5b146105d457806390107afe146105f257806395d89b411461027f578063a8aa1b311461061257600080fd5b80637d1db4a514610507578063893d20e81461051d5780638a8c523c1461054f5780638b42507f146105645780638b5259031461059457600080fd5b8063364333f4116101c7578063658d4b7f1161018b578063658d4b7f146104655780636c0a24eb146104855780636ddd17131461049b57806370a08231146104bc578063715018a6146104f257600080fd5b8063364333f4146103bf5780633f4218e0146103d45780634ada218b14610404578063571ac8b0146104255780635d0044ca1461044557600080fd5b806318160ddd1161020e57806318160ddd1461033957806323b872dd1461034e5780632b112e491461036e578063313ce56714610383578063333c39a51461039f57600080fd5b80630445b6671461025657806306fdde031461027f5780630940bbc7146102b7578063095ea7b3146102d95780630bd11f8a1461030957600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026c601d5481565b6040519081526020015b60405180910390f35b34801561028b57600080fd5b506040805180820182526009815268536e616b654579657360b81b602082015290516102769190611db8565b3480156102c357600080fd5b506102d76102d2366004611d3f565b6107b4565b005b3480156102e557600080fd5b506102f96102f4366004611cf8565b61080e565b6040519015158152602001610276565b34801561031557600080fd5b506102f9610324366004611c37565b60126020526000908152604090205460ff1681565b34801561034557600080fd5b5060085461026c565b34801561035a57600080fd5b506102f9610369366004611c85565b61087b565b34801561037a57600080fd5b5061026c61093d565b34801561038f57600080fd5b5060405160128152602001610276565b3480156103ab57600080fd5b506102d76103ba366004611d3f565b61098f565b3480156103cb57600080fd5b506102d7610a11565b3480156103e057600080fd5b506102f96103ef366004611c37565b60106020526000908152604090205460ff1681565b34801561041057600080fd5b50601c546102f990600160a01b900460ff1681565b34801561043157600080fd5b506102f9610440366004611c37565b610a6a565b34801561045157600080fd5b506102d7610460366004611d3f565b610a78565b34801561047157600080fd5b506102d7610480366004611cc1565b610afa565b34801561049157600080fd5b5061026c600a5481565b3480156104a757600080fd5b50601c546102f990600160a81b900460ff1681565b3480156104c857600080fd5b5061026c6104d7366004611c37565b6001600160a01b03166000908152600c602052604090205490565b3480156104fe57600080fd5b506102d7610b4f565b34801561051357600080fd5b5061026c60095481565b34801561052957600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610276565b34801561055b57600080fd5b506102d7610bc3565b34801561057057600080fd5b506102f961057f366004611c37565b60116020526000908152604090205460ff1681565b3480156105a057600080fd5b506102d76105af366004611d3f565b610c18565b3480156105c057600080fd5b506102f96105cf366004611cf8565b610c69565b3480156105e057600080fd5b506000546001600160a01b0316610537565b3480156105fe57600080fd5b506102d761060d366004611c52565b610d14565b34801561061e57600080fd5b50601c54610537906001600160a01b031681565b34801561063e57600080fd5b506102f961064d366004611cf8565b610dd8565b34801561065e57600080fd5b506102f961066d366004611c37565b600f6020526000908152604090205460ff1681565b34801561068e57600080fd5b506102d761069d366004611cc1565b610de5565b3480156106ae57600080fd5b506102d76106bd366004611c37565b610e3a565b3480156106ce57600080fd5b5061026c60035481565b3480156106e457600080fd5b5061026c600b5481565b3480156106fa57600080fd5b5061026c610709366004611c52565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b34801561074057600080fd5b5061053761074f366004611d3f565b610e86565b34801561076057600080fd5b506102d761076f366004611d86565b610eb0565b34801561078057600080fd5b506102d761078f366004611cc1565b610f10565b3480156107a057600080fd5b50601b54610537906001600160a01b031681565b6000546001600160a01b031633146107e75760405162461bcd60e51b81526004016107de90611e6f565b60405180910390fd5b600b548111156108095760405162461bcd60e51b81526004016107de90611e0d565b601755565b336000818152600d602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108699086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600d6020908152604080832033845290915281205460001914610928576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600d82528381203382529091529190912054610903918490610f65565b6001600160a01b0385166000908152600d602090815260408083203384529091529020555b610933848484610f9f565b90505b9392505050565b6007546001600160a01b03166000908152600c602052604081205461098a906006546001600160a01b03166000908152600c602052604090205461098490600854906114bd565b906114bd565b905090565b6000546001600160a01b031633146109b95760405162461bcd60e51b81526004016107de90611e6f565b6008546109c8906103e86114ff565b8111610a0c5760405162461bcd60e51b815260206004820152601360248201527243616e2774206c696d69742074726164696e6760681b60448201526064016107de565b600955565b6000546001600160a01b03163314610a3b5760405162461bcd60e51b81526004016107de90611e6f565b60405133904780156108fc02916000818181858888f19350505050158015610a67573d6000803e3d6000fd5b50565b60006108758260001961080e565b6000546001600160a01b03163314610aa25760405162461bcd60e51b81526004016107de90611e6f565b600854610ab1906103e86114ff565b8111610af55760405162461bcd60e51b815260206004820152601360248201527243616e2774206c696d69742074726164696e6760681b60448201526064016107de565b600a55565b6000546001600160a01b03163314610b245760405162461bcd60e51b81526004016107de90611e6f565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b795760405162461bcd60e51b81526004016107de90611e6f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610bed5760405162461bcd60e51b81526004016107de90611e6f565b601c805460ff60a01b1916600160a01b179055436003819055600254610c139190611541565b600455565b6000546001600160a01b03163314610c425760405162461bcd60e51b81526004016107de90611e6f565b600b54811115610c645760405162461bcd60e51b81526004016107de90611e0d565b601855565b600080546001600160a01b03163314610c945760405162461bcd60e51b81526004016107de90611e6f565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b158015610cdc57600080fd5b505af1158015610cf0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109369190611d22565b6000546001600160a01b03163314610d3e5760405162461bcd60e51b81526004016107de90611e6f565b6001600160a01b03821615801590610d5e57506001600160a01b03811615155b610daa5760405162461bcd60e51b815260206004820152601760248201527f5a65726f20416464726573732076616c69646174696f6e00000000000000000060448201526064016107de565b601980546001600160a01b039384166001600160a01b031991821617909155601a8054929093169116179055565b6000610936338484610f9f565b6000546001600160a01b03163314610e0f5760405162461bcd60e51b81526004016107de90611e6f565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e645760405162461bcd60e51b81526004016107de90611e6f565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b600e8181548110610e9657600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314610eda5760405162461bcd60e51b81526004016107de90611e6f565b600b54841115610efc5760405162461bcd60e51b81526004016107de90611e0d565b601393909355601491909155601555601655565b6000546001600160a01b03163314610f3a5760405162461bcd60e51b81526004016107de90611e6f565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b60008184841115610f895760405162461bcd60e51b81526004016107de9190611db8565b506000610f968486611f6e565b95945050505050565b601e5460009060ff1615610fbf57610fb88484846115a0565b9050610936565b6001600160a01b03841660009081526010602052604090205460ff1615801561100157506001600160a01b03831660009081526010602052604090205460ff16155b1561105657601c54600160a01b900460ff166110565760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107de565b61105e611674565b1561106b5761106b6116cc565b6001600160a01b0384166000908152600f6020526040902054829060ff161561119c576001600160a01b03841660009081526010602052604090205460ff1661119757600a546001600160a01b0385166000908152600c60205260409020546110d49085611541565b1115806110f957506001600160a01b03841660009081526012602052604090205460ff165b6111455760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016107de565b6009548311158061116e57506001600160a01b03841660009081526011602052604090205460ff165b61118a5760405162461bcd60e51b81526004016107de90611e44565b6111948584611a1c565b90505b611335565b6001600160a01b0384166000908152600f602052604090205460ff161561122c576001600160a01b03851660009081526010602052604090205460ff16611197576009548311158061120657506001600160a01b03851660009081526011602052604090205460ff165b6112225760405162461bcd60e51b81526004016107de90611e44565b6111948584611ab0565b6001600160a01b03851660009081526010602052604090205460ff1661133557600a546001600160a01b0385166000908152600c60205260409020546112729085611541565b11158061129757506001600160a01b03841660009081526012602052604090205460ff165b6112e35760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016107de565b6009548311158061130c57506001600160a01b03851660009081526011602052604090205460ff165b6113285760405162461bcd60e51b81526004016107de90611e44565b6113328584611ad5565b90505b6001600160a01b0385166000908152600c602052604090205461135890846114bd565b6001600160a01b038087166000908152600c602052604080822093909355908616815220546113879082611541565b6001600160a01b038581166000908152600c602052604080822093909355601a5488831680835291849020549351630a5b654b60e11b8152600481019290925260248201939093529116906314b6ca9690604401600060405180830381600087803b1580156113f557600080fd5b505af1925050508015611406575060015b50601a546001600160a01b038581166000818152600c602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561146557600080fd5b505af1925050508015611476575060015b50836001600160a01b0316856001600160a01b0316600080516020611fc0833981519152836040516114aa91815260200190565b60405180910390a3506001949350505050565b600061093683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f65565b600061093683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b6e565b60008061154e8385611f15565b9050838110156109365760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107de565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600c909152918220546115f1918490610f65565b6001600160a01b038086166000908152600c602052604080822093909355908516815220546116209083611541565b6001600160a01b038085166000818152600c60205260409081902093909355915190861690600080516020611fc0833981519152906116629086815260200190565b60405180910390a35060019392505050565b336000908152600f602052604081205460ff161580156116975750601e5460ff16155b80156116ac5750601c54600160a81b900460ff165b801561098a575050601d54306000908152600c6020526040902054101590565b601e805460ff191660011790556014546016546015546000916116fa916116f4908590611541565b90611541565b306000908152600c6020526040812054919250611724600261171e85818689611b9c565b906114ff565b9050600061173283836114bd565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061176c5761176c611f9b565b6001600160a01b03928316602091820292909201015260055482519116908290600190811061179d5761179d611f9b565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b815291169063791ac947906117e3908690600090869030904290600401611ea4565b600060405180830381600087803b1580156117fd57600080fd5b505af1158015611811573d6000803e3d6000fd5b50505050600061182a83476114bd90919063ffffffff16565b9050600061184361183c8a60026114ff565b89906114bd565b90506000611865600261171e8461171e60145488611b9c90919063ffffffff16565b905060006118828361171e60155487611b9c90919063ffffffff16565b905060006118948261098487866114bd565b6019546040519192506000916001600160a01b039091169084908381818185875af1925050503d80600081146118e6576040519150601f19603f3d011682016040523d82523d6000602084013e6118eb565b606091505b50509050601a60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561193f57600080fd5b505af193505050508015611951575060015b505060008915611a0357601b5460065460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c4016060604051808303818588803b1580156119c657600080fd5b505af11580156119da573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119ff9190611d58565b5050505b5050601e805460ff191690555050505050505050505050565b60135460045460009190431015611a31575060145b6000611a42606461171e8685611b9c565b306000908152600c6020526040902054909150611a5f9082611541565b306000818152600c6020526040908190209290925590516001600160a01b03871690600080516020611fc083398151915290611a9e9085815260200190565b60405180910390a3610f9684826114bd565b60175460045460009190431015611a31575060286000611a42606461171e8685611b9c565b600080611af2606461171e60185486611b9c90919063ffffffff16565b90508015611b5c57306000908152600c6020526040902054611b149082611541565b306000818152600c6020526040908190209290925590516001600160a01b03861690600080516020611fc083398151915290611b539085815260200190565b60405180910390a35b611b6683826114bd565b949350505050565b60008183611b8f5760405162461bcd60e51b81526004016107de9190611db8565b506000610f968486611f2d565b600082611bab57506000610875565b6000611bb78385611f4f565b905082611bc48583611f2d565b146109365760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107de565b80356001600160a01b0381168114611c3257600080fd5b919050565b600060208284031215611c4957600080fd5b61093682611c1b565b60008060408385031215611c6557600080fd5b611c6e83611c1b565b9150611c7c60208401611c1b565b90509250929050565b600080600060608486031215611c9a57600080fd5b611ca384611c1b565b9250611cb160208501611c1b565b9150604084013590509250925092565b60008060408385031215611cd457600080fd5b611cdd83611c1b565b91506020830135611ced81611fb1565b809150509250929050565b60008060408385031215611d0b57600080fd5b611d1483611c1b565b946020939093013593505050565b600060208284031215611d3457600080fd5b815161093681611fb1565b600060208284031215611d5157600080fd5b5035919050565b600080600060608486031215611d6d57600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215611d9c57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b81811015611de557858101830151858201604001528201611dc9565b81811115611df7576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f4665652063616e277420626520686967686572207468616e2036250000000000604082015260600190565b602080825260119082015270151608131a5b5a5d08115e18d959591959607a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ef45784516001600160a01b031683529383019391830191600101611ecf565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f2857611f28611f85565b500190565b600082611f4a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f6957611f69611f85565b500290565b600082821015611f8057611f80611f85565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8015158114610a6757600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122098e25019ee5c3ec30596adddb3aae1803ef4c952f9e8b44562e83f6dabe28e0c64736f6c63430008070033
0x608060405260028055600680546001600160a01b031990811661dead17909155600780549091169055620000366012600a62000723565b62000046906305f5e100620007e4565b60085560646008546200005a9190620006b7565b60095560646008546200006e9190620006b7565b600a556006600b819055601355601e6014819055601555602860165560056017556004601855601980546001600160a01b03199081167375aeb75457144357c38aa6c750cbc6500ca0bfa517909155601a805490911673bba44684508d01989f27b8b4240df6f91ca8b9d6179055601c805461ffff60a01b1916600160a81b1790556008546113889062000104906001620007e4565b620001109190620006b7565b601d553480156200012057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b158015620001c257600080fd5b505afa158015620001d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fd919062000685565b600580546001600160a01b0319166001600160a01b03928316179055601b546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b1580156200025757600080fd5b505afa1580156200026c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000292919062000685565b6005546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b158015620002df57600080fd5b505af1158015620002f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031a919062000685565b601c80546001600160a01b0319166001600160a01b039290921691821790556200034690600162000436565b306000818152600d60209081526040808320601b546001600160a01b03908116855290835281842060001990553380855260108085528386208054600160ff199182168117909255601180885286892080548316841790556012808952878a208054841685179055998952928752858820805482168317905591865284872080548316821790559685528386208054821688179055601c54909216855282852080549092169095179055600854848452600c835281842081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000880565b6001600160a01b0382166000908152600f602052604090205460ff16151581151514156200049f5760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b60448201526064015b60405180910390fd5b6001600160a01b0382166000908152600f60205260409020805460ff191682158015919091179091556200051e57600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0384166001600160a01b03199091161790555050565b600e54600110620005645760405162461bcd60e51b815260206004820152600f60248201526e2932b8bab4b932b21018903830b4b960891b604482015260640162000496565b60005b600e548110156200068057826001600160a01b0316600e82815481106200059257620005926200086a565b6000918252602090912001546001600160a01b031614156200066b57600e8054620005c09060019062000806565b81548110620005d357620005d36200086a565b600091825260209091200154600e80546001600160a01b0390921691839081106200060257620006026200086a565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600e80548062000644576200064462000854565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b80620006778162000820565b91505062000567565b505050565b6000602082840312156200069857600080fd5b81516001600160a01b0381168114620006b057600080fd5b9392505050565b600082620006d557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200071b578160001904821115620006ff57620006ff6200083e565b808516156200070d57918102915b93841c9390800290620006df565b509250929050565b6000620006b060ff8416836000826200073f57506001620007de565b816200074e57506000620007de565b8160018114620007675760028114620007725762000792565b6001915050620007de565b60ff8411156200078657620007866200083e565b50506001821b620007de565b5060208310610133831016604e8410600b8410161715620007b7575081810a620007de565b620007c38383620006da565b8060001904821115620007da57620007da6200083e565b0290505b92915050565b60008160001904831182151516156200080157620008016200083e565b500290565b6000828210156200081b576200081b6200083e565b500390565b60006000198214156200083757620008376200083e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b61201580620008906000396000f3fe60806040526004361061024a5760003560e01c80637d1db4a511610139578063a9059cbb116100b6578063d4bafb1a1161007a578063d4bafb1a146106d8578063dd62ed3e146106ee578063e1d5584c14610734578063e4bf1bed14610754578063f84ba65d14610774578063f887ea401461079457600080fd5b8063a9059cbb14610632578063b62496f514610652578063c04a78ad14610682578063c851cc32146106a2578063d00efb2f146106c257600080fd5b80638cd4426d116100fd5780638cd4426d146105b45780638da5cb5b146105d457806390107afe146105f257806395d89b411461027f578063a8aa1b311461061257600080fd5b80637d1db4a514610507578063893d20e81461051d5780638a8c523c1461054f5780638b42507f146105645780638b5259031461059457600080fd5b8063364333f4116101c7578063658d4b7f1161018b578063658d4b7f146104655780636c0a24eb146104855780636ddd17131461049b57806370a08231146104bc578063715018a6146104f257600080fd5b8063364333f4146103bf5780633f4218e0146103d45780634ada218b14610404578063571ac8b0146104255780635d0044ca1461044557600080fd5b806318160ddd1161020e57806318160ddd1461033957806323b872dd1461034e5780632b112e491461036e578063313ce56714610383578063333c39a51461039f57600080fd5b80630445b6671461025657806306fdde031461027f5780630940bbc7146102b7578063095ea7b3146102d95780630bd11f8a1461030957600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026c601d5481565b6040519081526020015b60405180910390f35b34801561028b57600080fd5b506040805180820182526009815268536e616b654579657360b81b602082015290516102769190611db8565b3480156102c357600080fd5b506102d76102d2366004611d3f565b6107b4565b005b3480156102e557600080fd5b506102f96102f4366004611cf8565b61080e565b6040519015158152602001610276565b34801561031557600080fd5b506102f9610324366004611c37565b60126020526000908152604090205460ff1681565b34801561034557600080fd5b5060085461026c565b34801561035a57600080fd5b506102f9610369366004611c85565b61087b565b34801561037a57600080fd5b5061026c61093d565b34801561038f57600080fd5b5060405160128152602001610276565b3480156103ab57600080fd5b506102d76103ba366004611d3f565b61098f565b3480156103cb57600080fd5b506102d7610a11565b3480156103e057600080fd5b506102f96103ef366004611c37565b60106020526000908152604090205460ff1681565b34801561041057600080fd5b50601c546102f990600160a01b900460ff1681565b34801561043157600080fd5b506102f9610440366004611c37565b610a6a565b34801561045157600080fd5b506102d7610460366004611d3f565b610a78565b34801561047157600080fd5b506102d7610480366004611cc1565b610afa565b34801561049157600080fd5b5061026c600a5481565b3480156104a757600080fd5b50601c546102f990600160a81b900460ff1681565b3480156104c857600080fd5b5061026c6104d7366004611c37565b6001600160a01b03166000908152600c602052604090205490565b3480156104fe57600080fd5b506102d7610b4f565b34801561051357600080fd5b5061026c60095481565b34801561052957600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610276565b34801561055b57600080fd5b506102d7610bc3565b34801561057057600080fd5b506102f961057f366004611c37565b60116020526000908152604090205460ff1681565b3480156105a057600080fd5b506102d76105af366004611d3f565b610c18565b3480156105c057600080fd5b506102f96105cf366004611cf8565b610c69565b3480156105e057600080fd5b506000546001600160a01b0316610537565b3480156105fe57600080fd5b506102d761060d366004611c52565b610d14565b34801561061e57600080fd5b50601c54610537906001600160a01b031681565b34801561063e57600080fd5b506102f961064d366004611cf8565b610dd8565b34801561065e57600080fd5b506102f961066d366004611c37565b600f6020526000908152604090205460ff1681565b34801561068e57600080fd5b506102d761069d366004611cc1565b610de5565b3480156106ae57600080fd5b506102d76106bd366004611c37565b610e3a565b3480156106ce57600080fd5b5061026c60035481565b3480156106e457600080fd5b5061026c600b5481565b3480156106fa57600080fd5b5061026c610709366004611c52565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b34801561074057600080fd5b5061053761074f366004611d3f565b610e86565b34801561076057600080fd5b506102d761076f366004611d86565b610eb0565b34801561078057600080fd5b506102d761078f366004611cc1565b610f10565b3480156107a057600080fd5b50601b54610537906001600160a01b031681565b6000546001600160a01b031633146107e75760405162461bcd60e51b81526004016107de90611e6f565b60405180910390fd5b600b548111156108095760405162461bcd60e51b81526004016107de90611e0d565b601755565b336000818152600d602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108699086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600d6020908152604080832033845290915281205460001914610928576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600d82528381203382529091529190912054610903918490610f65565b6001600160a01b0385166000908152600d602090815260408083203384529091529020555b610933848484610f9f565b90505b9392505050565b6007546001600160a01b03166000908152600c602052604081205461098a906006546001600160a01b03166000908152600c602052604090205461098490600854906114bd565b906114bd565b905090565b6000546001600160a01b031633146109b95760405162461bcd60e51b81526004016107de90611e6f565b6008546109c8906103e86114ff565b8111610a0c5760405162461bcd60e51b815260206004820152601360248201527243616e2774206c696d69742074726164696e6760681b60448201526064016107de565b600955565b6000546001600160a01b03163314610a3b5760405162461bcd60e51b81526004016107de90611e6f565b60405133904780156108fc02916000818181858888f19350505050158015610a67573d6000803e3d6000fd5b50565b60006108758260001961080e565b6000546001600160a01b03163314610aa25760405162461bcd60e51b81526004016107de90611e6f565b600854610ab1906103e86114ff565b8111610af55760405162461bcd60e51b815260206004820152601360248201527243616e2774206c696d69742074726164696e6760681b60448201526064016107de565b600a55565b6000546001600160a01b03163314610b245760405162461bcd60e51b81526004016107de90611e6f565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b795760405162461bcd60e51b81526004016107de90611e6f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610bed5760405162461bcd60e51b81526004016107de90611e6f565b601c805460ff60a01b1916600160a01b179055436003819055600254610c139190611541565b600455565b6000546001600160a01b03163314610c425760405162461bcd60e51b81526004016107de90611e6f565b600b54811115610c645760405162461bcd60e51b81526004016107de90611e0d565b601855565b600080546001600160a01b03163314610c945760405162461bcd60e51b81526004016107de90611e6f565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b158015610cdc57600080fd5b505af1158015610cf0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109369190611d22565b6000546001600160a01b03163314610d3e5760405162461bcd60e51b81526004016107de90611e6f565b6001600160a01b03821615801590610d5e57506001600160a01b03811615155b610daa5760405162461bcd60e51b815260206004820152601760248201527f5a65726f20416464726573732076616c69646174696f6e00000000000000000060448201526064016107de565b601980546001600160a01b039384166001600160a01b031991821617909155601a8054929093169116179055565b6000610936338484610f9f565b6000546001600160a01b03163314610e0f5760405162461bcd60e51b81526004016107de90611e6f565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e645760405162461bcd60e51b81526004016107de90611e6f565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b600e8181548110610e9657600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314610eda5760405162461bcd60e51b81526004016107de90611e6f565b600b54841115610efc5760405162461bcd60e51b81526004016107de90611e0d565b601393909355601491909155601555601655565b6000546001600160a01b03163314610f3a5760405162461bcd60e51b81526004016107de90611e6f565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b60008184841115610f895760405162461bcd60e51b81526004016107de9190611db8565b506000610f968486611f6e565b95945050505050565b601e5460009060ff1615610fbf57610fb88484846115a0565b9050610936565b6001600160a01b03841660009081526010602052604090205460ff1615801561100157506001600160a01b03831660009081526010602052604090205460ff16155b1561105657601c54600160a01b900460ff166110565760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107de565b61105e611674565b1561106b5761106b6116cc565b6001600160a01b0384166000908152600f6020526040902054829060ff161561119c576001600160a01b03841660009081526010602052604090205460ff1661119757600a546001600160a01b0385166000908152600c60205260409020546110d49085611541565b1115806110f957506001600160a01b03841660009081526012602052604090205460ff165b6111455760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016107de565b6009548311158061116e57506001600160a01b03841660009081526011602052604090205460ff165b61118a5760405162461bcd60e51b81526004016107de90611e44565b6111948584611a1c565b90505b611335565b6001600160a01b0384166000908152600f602052604090205460ff161561122c576001600160a01b03851660009081526010602052604090205460ff16611197576009548311158061120657506001600160a01b03851660009081526011602052604090205460ff165b6112225760405162461bcd60e51b81526004016107de90611e44565b6111948584611ab0565b6001600160a01b03851660009081526010602052604090205460ff1661133557600a546001600160a01b0385166000908152600c60205260409020546112729085611541565b11158061129757506001600160a01b03841660009081526012602052604090205460ff165b6112e35760405162461bcd60e51b815260206004820152601f60248201527f4d61782057616c6c6574204c696d6974204c696d69742045786365656465640060448201526064016107de565b6009548311158061130c57506001600160a01b03851660009081526011602052604090205460ff165b6113285760405162461bcd60e51b81526004016107de90611e44565b6113328584611ad5565b90505b6001600160a01b0385166000908152600c602052604090205461135890846114bd565b6001600160a01b038087166000908152600c602052604080822093909355908616815220546113879082611541565b6001600160a01b038581166000908152600c602052604080822093909355601a5488831680835291849020549351630a5b654b60e11b8152600481019290925260248201939093529116906314b6ca9690604401600060405180830381600087803b1580156113f557600080fd5b505af1925050508015611406575060015b50601a546001600160a01b038581166000818152600c602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561146557600080fd5b505af1925050508015611476575060015b50836001600160a01b0316856001600160a01b0316600080516020611fc0833981519152836040516114aa91815260200190565b60405180910390a3506001949350505050565b600061093683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f65565b600061093683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b6e565b60008061154e8385611f15565b9050838110156109365760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107de565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600c909152918220546115f1918490610f65565b6001600160a01b038086166000908152600c602052604080822093909355908516815220546116209083611541565b6001600160a01b038085166000818152600c60205260409081902093909355915190861690600080516020611fc0833981519152906116629086815260200190565b60405180910390a35060019392505050565b336000908152600f602052604081205460ff161580156116975750601e5460ff16155b80156116ac5750601c54600160a81b900460ff165b801561098a575050601d54306000908152600c6020526040902054101590565b601e805460ff191660011790556014546016546015546000916116fa916116f4908590611541565b90611541565b306000908152600c6020526040812054919250611724600261171e85818689611b9c565b906114ff565b9050600061173283836114bd565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061176c5761176c611f9b565b6001600160a01b03928316602091820292909201015260055482519116908290600190811061179d5761179d611f9b565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b815291169063791ac947906117e3908690600090869030904290600401611ea4565b600060405180830381600087803b1580156117fd57600080fd5b505af1158015611811573d6000803e3d6000fd5b50505050600061182a83476114bd90919063ffffffff16565b9050600061184361183c8a60026114ff565b89906114bd565b90506000611865600261171e8461171e60145488611b9c90919063ffffffff16565b905060006118828361171e60155487611b9c90919063ffffffff16565b905060006118948261098487866114bd565b6019546040519192506000916001600160a01b039091169084908381818185875af1925050503d80600081146118e6576040519150601f19603f3d011682016040523d82523d6000602084013e6118eb565b606091505b50509050601a60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561193f57600080fd5b505af193505050508015611951575060015b505060008915611a0357601b5460065460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c4016060604051808303818588803b1580156119c657600080fd5b505af11580156119da573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119ff9190611d58565b5050505b5050601e805460ff191690555050505050505050505050565b60135460045460009190431015611a31575060145b6000611a42606461171e8685611b9c565b306000908152600c6020526040902054909150611a5f9082611541565b306000818152600c6020526040908190209290925590516001600160a01b03871690600080516020611fc083398151915290611a9e9085815260200190565b60405180910390a3610f9684826114bd565b60175460045460009190431015611a31575060286000611a42606461171e8685611b9c565b600080611af2606461171e60185486611b9c90919063ffffffff16565b90508015611b5c57306000908152600c6020526040902054611b149082611541565b306000818152600c6020526040908190209290925590516001600160a01b03861690600080516020611fc083398151915290611b539085815260200190565b60405180910390a35b611b6683826114bd565b949350505050565b60008183611b8f5760405162461bcd60e51b81526004016107de9190611db8565b506000610f968486611f2d565b600082611bab57506000610875565b6000611bb78385611f4f565b905082611bc48583611f2d565b146109365760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107de565b80356001600160a01b0381168114611c3257600080fd5b919050565b600060208284031215611c4957600080fd5b61093682611c1b565b60008060408385031215611c6557600080fd5b611c6e83611c1b565b9150611c7c60208401611c1b565b90509250929050565b600080600060608486031215611c9a57600080fd5b611ca384611c1b565b9250611cb160208501611c1b565b9150604084013590509250925092565b60008060408385031215611cd457600080fd5b611cdd83611c1b565b91506020830135611ced81611fb1565b809150509250929050565b60008060408385031215611d0b57600080fd5b611d1483611c1b565b946020939093013593505050565b600060208284031215611d3457600080fd5b815161093681611fb1565b600060208284031215611d5157600080fd5b5035919050565b600080600060608486031215611d6d57600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215611d9c57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b81811015611de557858101830151858201604001528201611dc9565b81811115611df7576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f4665652063616e277420626520686967686572207468616e2036250000000000604082015260600190565b602080825260119082015270151608131a5b5a5d08115e18d959591959607a1b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ef45784516001600160a01b031683529383019391830191600101611ecf565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611f2857611f28611f85565b500190565b600082611f4a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611f6957611f69611f85565b500290565b600082821015611f8057611f80611f85565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8015158114610a6757600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122098e25019ee5c3ec30596adddb3aae1803ef4c952f9e8b44562e83f6dabe28e0c64736f6c63430008070033