0x60806040526004361061023f5760003560e01c806385141a771161012e578063aacebbe3116100ab578063f2fde38b1161006f578063f2fde38b146106de578063f52be97c146106fe578063f570d4de1461071e578063f66895a31461073e578063f887ea401461075957600080fd5b8063aacebbe314610608578063c5d32bb214610628578063d695609b14610658578063dd62ed3e14610678578063edaa1168146106be57600080fd5b80639e252f00116100f25780639e252f0014610580578063a28a4d86146105a0578063a457c2d7146105a8578063a8aa1b31146105c8578063a9059cbb146105e857600080fd5b806385141a77146104ea5780638a8c523c146105185780638cd4426d1461052d5780638da5cb5b1461054d57806395d89b411461056b57600080fd5b80634324deae116101bc578063715018a611610180578063715018a614610450578063728f8eea14610465578063751039fc14610495578063832c2bd2146104aa5780638514022d146104ca57600080fd5b80634324deae146103a35780634ada218b146103c35780635dbdb7e3146103e457806366a88d961461040457806370a082311461041a57600080fd5b806323b872dd1161020357806323b872dd14610307578063251ef09514610327578063313ce56714610347578063395093511461036357806342b6fa111461038357600080fd5b806306fdde031461024b578063095ea7b3146102765780631340538f146102a657806318160ddd146102c8578063215d92a6146102e757600080fd5b3661024657005b600080fd5b34801561025757600080fd5b50610260610779565b60405161026d919061215c565b60405180910390f35b34801561028257600080fd5b506102966102913660046121cf565b61080b565b604051901515815260200161026d565b3480156102b257600080fd5b506102c66102c1366004612209565b610822565b005b3480156102d457600080fd5b506002545b60405190815260200161026d565b3480156102f357600080fd5b506102c66103023660046122e5565b610873565b34801561031357600080fd5b50610296610322366004612337565b610909565b34801561033357600080fd5b506102c6610342366004612378565b6109ba565b34801561035357600080fd5b506040516012815260200161026d565b34801561036f57600080fd5b5061029661037e3660046121cf565b610a50565b34801561038f57600080fd5b506102c661039e3660046123b5565b610a87565b3480156103af57600080fd5b506102c66103be3660046123b5565b610acd565b3480156103cf57600080fd5b5060075461029690600160b01b900460ff1681565b3480156103f057600080fd5b506102c66103ff3660046123ce565b610b13565b34801561041057600080fd5b506102d9600a5481565b34801561042657600080fd5b506102d96104353660046123ce565b6001600160a01b031660009081526020819052604090205490565b34801561045c57600080fd5b506102c6610b61565b34801561047157600080fd5b50601054601154610480919082565b6040805192835260208301919091520161026d565b3480156104a157600080fd5b50610296610b97565b3480156104b657600080fd5b506102c66104c53660046123ce565b610bd0565b3480156104d657600080fd5b506102c66104e53660046123eb565b610c1b565b3480156104f657600080fd5b5061050061dead81565b6040516001600160a01b03909116815260200161026d565b34801561052457600080fd5b506102c6610c70565b34801561053957600080fd5b506102c66105483660046121cf565b610d0f565b34801561055957600080fd5b506005546001600160a01b0316610500565b34801561057757600080fd5b50610260610dcb565b34801561058c57600080fd5b506102c661059b3660046123b5565b610dda565b6102c6610e3e565b3480156105b457600080fd5b506102966105c33660046121cf565b61109f565b3480156105d457600080fd5b50600754610500906001600160a01b031681565b3480156105f457600080fd5b506102966106033660046121cf565b61113a565b34801561061457600080fd5b506102c66106233660046123ce565b611147565b34801561063457600080fd5b506102966106433660046123ce565b60146020526000908152604090205460ff1681565b34801561066457600080fd5b506102c6610673366004612419565b611193565b34801561068457600080fd5b506102d961069336600461243b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106ca57600080fd5b506102c66106d93660046123b5565b6111db565b3480156106ea57600080fd5b506102c66106f93660046123ce565b611272565b34801561070a57600080fd5b506102c6610719366004612419565b61130d565b34801561072a57600080fd5b506102c6610739366004612378565b611355565b34801561074a57600080fd5b50601254601354610480919082565b34801561076557600080fd5b50600654610500906001600160a01b031681565b60606003805461078890612469565b80601f01602080910402602001604051908101604052809291908181526020018280546107b490612469565b80156108015780601f106107d657610100808354040283529160200191610801565b820191906000526020600020905b8154815290600101906020018083116107e457829003601f168201915b5050505050905090565b60006108183384846113e7565b5060015b92915050565b6005546001600160a01b031633146108555760405162461bcd60e51b815260040161084c906124a3565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461089d5760405162461bcd60e51b815260040161084c906124a3565b60005b82518110156109045781601560008584815181106108c0576108c06124d8565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806108fc81612504565b9150506108a0565b505050565b600061091684848461150b565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561099b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161084c565b6109af85336109aa868561251d565b6113e7565b506001949350505050565b6005546001600160a01b031633146109e45760405162461bcd60e51b815260040161084c906124a3565b60005b8151811015610a4c57600060146000848481518110610a0857610a086124d8565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a4481612504565b9150506109e7565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108189185906109aa908690612530565b6005546001600160a01b03163314610ab15760405162461bcd60e51b815260040161084c906124a3565b610abd6012600a612627565b610ac79082612636565b60095550565b6005546001600160a01b03163314610af75760405162461bcd60e51b815260040161084c906124a3565b610b036012600a612627565b610b0d9082612636565b600a5550565b6005546001600160a01b03163314610b3d5760405162461bcd60e51b815260040161084c906124a3565b6001600160a01b03166000908152601460205260409020805460ff19166001179055565b6005546001600160a01b03163314610b8b5760405162461bcd60e51b815260040161084c906124a3565b610b956000611b07565b565b6005546000906001600160a01b03163314610bc45760405162461bcd60e51b815260040161084c906124a3565b50600854600a55600190565b6005546001600160a01b03163314610bfa5760405162461bcd60e51b815260040161084c906124a3565b6001600160a01b03166000908152601460205260409020805460ff19169055565b6005546001600160a01b03163314610c455760405162461bcd60e51b815260040161084c906124a3565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610c9a5760405162461bcd60e51b815260040161084c906124a3565b600754600160b01b900460ff1615610cf45760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161084c565b6007805461ffff60a81b191661010160a81b17905543600b55565b6005546001600160a01b03163314610d395760405162461bcd60e51b815260040161084c906124a3565b816001600160a01b031663a9059cbb610d5a6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610da7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610904919061264d565b60606004805461078890612469565b6005546001600160a01b03163314610e045760405162461bcd60e51b815260040161084c906124a3565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a4c573d6000803e3d6000fd5b6005546001600160a01b03163314610e685760405162461bcd60e51b815260040161084c906124a3565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee5919061266a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f56919061266a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc7919061266a565b600680546001600160a01b038581166001600160a01b03199283168117845560078054868416941693909317909255306000818152600160209081526040808320958352948152848220600019905594548282529481905283812054935163f305d71960e01b8152959650939091169363f305d7199334936110559392909190819033904290600401612687565b60606040518083038185885af1158015611073573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061109891906126c2565b5050505050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111215760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161084c565b61113033856109aa868561251d565b5060019392505050565b600061081833848461150b565b6005546001600160a01b031633146111715760405162461bcd60e51b815260040161084c906124a3565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111bd5760405162461bcd60e51b815260040161084c906124a3565b60408051808201909152828152602001819052601091909155601155565b6005546001600160a01b031633146112055760405162461bcd60e51b815260040161084c906124a3565b600754600160b01b900460ff161561126d5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b606482015260840161084c565b600c55565b6005546001600160a01b0316331461129c5760405162461bcd60e51b815260040161084c906124a3565b6001600160a01b0381166113015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161084c565b61130a81611b07565b50565b6005546001600160a01b031633146113375760405162461bcd60e51b815260040161084c906124a3565b60408051808201909152828152602001819052601291909155601355565b6005546001600160a01b0316331461137f5760405162461bcd60e51b815260040161084c906124a3565b60005b8151811015610a4c576001601460008484815181106113a3576113a36124d8565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806113df81612504565b915050611382565b6001600160a01b0383166114495760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161084c565b6001600160a01b0382166114aa5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161084c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161156d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161084c565b6001600160a01b03831660009081526015602052604090205460ff161580156115af57506001600160a01b03821660009081526015602052604090205460ff16155b6115fb5760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e7300000000000000604482015260640161084c565b6001600160a01b03831660009081526014602052604090205460ff1615801561163d57506001600160a01b03821660009081526014602052604090205460ff16155b1561169157600754600160b01b900460ff166116915760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161084c565b6005546001600160a01b031632036116ae57610904838383611b59565b6007546001600160a01b0384811691161480156116e457506001600160a01b03821660009081526014602052604090205460ff16155b80156116fa5750600754600160a01b900460ff16155b1561177a57600a5481611722846001600160a01b031660009081526020819052604090205490565b61172c9190612530565b111561177a5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161084c565b6007546001600160a01b038481169116148015906117b157506001600160a01b03821660009081526014602052604090205460ff16155b80156117d657506001600160a01b03831660009081526014602052604090205460ff16155b80156117ec5750600754600160a01b900460ff16155b15611881576007546001600160a01b0383811691161461188157600a5481611829846001600160a01b031660009081526020819052604090205490565b6118339190612530565b11156118815760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161084c565b6001600160a01b03831660009081526014602052604090205460ff16806118c057506001600160a01b03821660009081526014602052604090205460ff165b15611903576001600160a01b03831660009081526014602052604090205460ff16156118f157610904838383611cb7565b6118ff43633b9aca00612530565b600c555b6000806000611925604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526014602052604081205460ff1615801561196757506001600160a01b03871660009081526014602052604090205460ff16155b80156119815750600c54600b5461197e9190612530565b43105b600754909150600160a01b900460ff16806119b457506001600160a01b03881660009081526014602052604090205460ff165b806119d757506001600160a01b03871660009081526014602052604090205460ff165b156119e55760009250611a67565b6007546001600160a01b038881169116148015611a00575080155b15611a1f57601254601354611a159190612530565b9450849350611a67565b80611a5857601054601154611a349190612530565b60408051808201909152601054815260115460208201529095508594509150611a67565b8015611a6757600d5494508493505b6064611a738588612636565b611a7d91906126f0565b600754909350600160a81b900460ff168015611aa757506007546001600160a01b03898116911614155b15611ab657611ab68583611d35565b611aca8888611ac5868a61251d565b611b59565b8215611afd578415611afd5760006064611ae48789612636565b611aee91906126f0565b9050611afb893083611b59565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611b7f5760405162461bcd60e51b815260040161084c90612712565b6001600160a01b038216611ba55760405162461bcd60e51b815260040161084c90612757565b6001600160a01b03831660009081526020819052604090205481811015611c1d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161084c565b611c27828261251d565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611c5d908490612530565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ca991815260200190565b60405180910390a350505050565b6001600160a01b038316611cdd5760405162461bcd60e51b815260040161084c90612712565b6001600160a01b038216611d035760405162461bcd60e51b815260040161084c90612757565b6001600160a01b0380841660009081526020819052604080822054928516825281208054849290611c5d908490612530565b600754600160a01b900460ff16610a4c576007805460ff60a01b1916600160a01b1790558115611e8157306000908152602081905260409020546009548110611e7f5760016009541115611d8857506009545b6000611d95846002612636565b9050600081846020015184611daa9190612636565b611db491906126f0565b90506000611dc2828561251d565b905047611dce82611e92565b6000611dda824761251d565b90506000876020015186611dee919061251d565b611df890836126f0565b90506000886020015182611e0c9190612636565b90508015611e1e57611e1e8682611fec565b600080600c5443611e2f919061251d565b119050600081611e40576000611e57565b8a51611e4d856002612636565b611e579190612636565b90508015611e7557600e54611e75906001600160a01b031682612043565b5050505050505050505b505b6007805460ff60a01b191690555050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ec757611ec76124d8565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f44919061266a565b81600181518110611f5757611f576124d8565b6001600160a01b039283166020918202929092010152600654611f7d91309116846113e7565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611fb690859060009086903090429060040161279a565b600060405180830381600087803b158015611fd057600080fd5b505af1158015611fe4573d6000803e3d6000fd5b505050505050565b6006546120049030906001600160a01b0316846113e7565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d7199083906110559030908790600090819061dead904290600401612687565b804710156120935760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161084c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146120e0576040519150601f19603f3d011682016040523d82523d6000602084013e6120e5565b606091505b50509050806109045760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161084c565b600060208083528351808285015260005b818110156121895785810183015185820160400152820161216d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461130a57600080fd5b80356121ca816121aa565b919050565b600080604083850312156121e257600080fd5b82356121ed816121aa565b946020939093013593505050565b801515811461130a57600080fd5b60006020828403121561221b57600080fd5b8135612226816121fb565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261225457600080fd5b8135602067ffffffffffffffff808311156122715761227161222d565b8260051b604051601f19603f830116810181811084821117156122965761229661222d565b6040529384528581018301938381019250878511156122b457600080fd5b83870191505b848210156122da576122cb826121bf565b835291830191908301906122ba565b979650505050505050565b600080604083850312156122f857600080fd5b823567ffffffffffffffff81111561230f57600080fd5b61231b85828601612243565b925050602083013561232c816121fb565b809150509250929050565b60008060006060848603121561234c57600080fd5b8335612357816121aa565b92506020840135612367816121aa565b929592945050506040919091013590565b60006020828403121561238a57600080fd5b813567ffffffffffffffff8111156123a157600080fd5b6123ad84828501612243565b949350505050565b6000602082840312156123c757600080fd5b5035919050565b6000602082840312156123e057600080fd5b8135612226816121aa565b600080604083850312156123fe57600080fd5b8235612409816121aa565b9150602083013561232c816121fb565b6000806040838503121561242c57600080fd5b50508035926020909101359150565b6000806040838503121561244e57600080fd5b8235612459816121aa565b9150602083013561232c816121aa565b600181811c9082168061247d57607f821691505b60208210810361249d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612516576125166124ee565b5060010190565b8181038181111561081c5761081c6124ee565b8082018082111561081c5761081c6124ee565b600181815b8085111561257e578160001904821115612564576125646124ee565b8085161561257157918102915b93841c9390800290612548565b509250929050565b6000826125955750600161081c565b816125a25750600061081c565b81600181146125b857600281146125c2576125de565b600191505061081c565b60ff8411156125d3576125d36124ee565b50506001821b61081c565b5060208310610133831016604e8410600b8410161715612601575081810a61081c565b61260b8383612543565b806000190482111561261f5761261f6124ee565b029392505050565b600061222660ff841683612586565b808202811582820484141761081c5761081c6124ee565b60006020828403121561265f57600080fd5b8151612226816121fb565b60006020828403121561267c57600080fd5b8151612226816121aa565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156126d757600080fd5b8351925060208401519150604084015190509250925092565b60008261270d57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127ea5784516001600160a01b0316835293830193918301916001016127c5565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220271edaa87aba4b7d7c24796e07ce16c0a3d149e7516ac43e651702dc27944b1564736f6c63430008130033
0x60806040526007805462ffffff60a01b19169055620000216012600a62000459565b6200003190633b9aca0062000471565b600855612710600854600562000048919062000471565b6200005491906200048b565b600955606460085460046200006a919062000471565b6200007691906200048b565b600a556000600c8190556005600d55600e80546001600160a01b031990811673745afa497d46ae02ea709c288e88b9970f38e3df17909155600f80549091167374db971fcea31081bd8a64ac1124348262a74c5b1790556040805180820182526001808252602091820184905260108190556011849055825180840190935280835291018290526012556013553480156200011057600080fd5b5060405180604001604052806004815260200163426f7a6f60e01b81525060405180604001604052806004815260200163424f5a4f60e01b81525081600390816200015c919062000552565b5060046200016b828262000552565b50505062000188620001826200022c60201b60201c565b62000230565b6200019c336008546200028260201b60201c565b306000908152601460205260408082208054600160ff1991821681179092553384528284208054821683179055600e546001600160a01b0390811685528385208054831684179055600f54168452918320805483168217905561dead9092527f8b9e18c5e04efe171d1e4f682ad90d753958a5ffe56db5290b0236c8e0b6db00805490911690911790556200061e565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002eb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200039b5781600019048211156200037f576200037f62000344565b808516156200038d57918102915b93841c93908002906200035f565b509250929050565b600082620003b45750600162000453565b81620003c35750600062000453565b8160018114620003dc5760028114620003e75762000407565b600191505062000453565b60ff841115620003fb57620003fb62000344565b50506001821b62000453565b5060208310610133831016604e8410600b84101617156200042c575081810a62000453565b6200043883836200035a565b80600019048211156200044f576200044f62000344565b0290505b92915050565b60006200046a60ff841683620003a3565b9392505050565b808202811582820484141762000453576200045362000344565b600082620004a957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004d957607f821691505b602082108103620004fa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033f57600081815260208120601f850160051c81016020861015620005295750805b601f850160051c820191505b818110156200054a5782815560010162000535565b505050505050565b81516001600160401b038111156200056e576200056e620004ae565b62000586816200057f8454620004c4565b8462000500565b602080601f831160018114620005be5760008415620005a55750858301515b600019600386901b1c1916600185901b1785556200054a565b600085815260208120601f198616915b82811015620005ef57888601518255948401946001909101908401620005ce565b50858210156200060e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612841806200062e6000396000f3fe60806040526004361061023f5760003560e01c806385141a771161012e578063aacebbe3116100ab578063f2fde38b1161006f578063f2fde38b146106de578063f52be97c146106fe578063f570d4de1461071e578063f66895a31461073e578063f887ea401461075957600080fd5b8063aacebbe314610608578063c5d32bb214610628578063d695609b14610658578063dd62ed3e14610678578063edaa1168146106be57600080fd5b80639e252f00116100f25780639e252f0014610580578063a28a4d86146105a0578063a457c2d7146105a8578063a8aa1b31146105c8578063a9059cbb146105e857600080fd5b806385141a77146104ea5780638a8c523c146105185780638cd4426d1461052d5780638da5cb5b1461054d57806395d89b411461056b57600080fd5b80634324deae116101bc578063715018a611610180578063715018a614610450578063728f8eea14610465578063751039fc14610495578063832c2bd2146104aa5780638514022d146104ca57600080fd5b80634324deae146103a35780634ada218b146103c35780635dbdb7e3146103e457806366a88d961461040457806370a082311461041a57600080fd5b806323b872dd1161020357806323b872dd14610307578063251ef09514610327578063313ce56714610347578063395093511461036357806342b6fa111461038357600080fd5b806306fdde031461024b578063095ea7b3146102765780631340538f146102a657806318160ddd146102c8578063215d92a6146102e757600080fd5b3661024657005b600080fd5b34801561025757600080fd5b50610260610779565b60405161026d919061215c565b60405180910390f35b34801561028257600080fd5b506102966102913660046121cf565b61080b565b604051901515815260200161026d565b3480156102b257600080fd5b506102c66102c1366004612209565b610822565b005b3480156102d457600080fd5b506002545b60405190815260200161026d565b3480156102f357600080fd5b506102c66103023660046122e5565b610873565b34801561031357600080fd5b50610296610322366004612337565b610909565b34801561033357600080fd5b506102c6610342366004612378565b6109ba565b34801561035357600080fd5b506040516012815260200161026d565b34801561036f57600080fd5b5061029661037e3660046121cf565b610a50565b34801561038f57600080fd5b506102c661039e3660046123b5565b610a87565b3480156103af57600080fd5b506102c66103be3660046123b5565b610acd565b3480156103cf57600080fd5b5060075461029690600160b01b900460ff1681565b3480156103f057600080fd5b506102c66103ff3660046123ce565b610b13565b34801561041057600080fd5b506102d9600a5481565b34801561042657600080fd5b506102d96104353660046123ce565b6001600160a01b031660009081526020819052604090205490565b34801561045c57600080fd5b506102c6610b61565b34801561047157600080fd5b50601054601154610480919082565b6040805192835260208301919091520161026d565b3480156104a157600080fd5b50610296610b97565b3480156104b657600080fd5b506102c66104c53660046123ce565b610bd0565b3480156104d657600080fd5b506102c66104e53660046123eb565b610c1b565b3480156104f657600080fd5b5061050061dead81565b6040516001600160a01b03909116815260200161026d565b34801561052457600080fd5b506102c6610c70565b34801561053957600080fd5b506102c66105483660046121cf565b610d0f565b34801561055957600080fd5b506005546001600160a01b0316610500565b34801561057757600080fd5b50610260610dcb565b34801561058c57600080fd5b506102c661059b3660046123b5565b610dda565b6102c6610e3e565b3480156105b457600080fd5b506102966105c33660046121cf565b61109f565b3480156105d457600080fd5b50600754610500906001600160a01b031681565b3480156105f457600080fd5b506102966106033660046121cf565b61113a565b34801561061457600080fd5b506102c66106233660046123ce565b611147565b34801561063457600080fd5b506102966106433660046123ce565b60146020526000908152604090205460ff1681565b34801561066457600080fd5b506102c6610673366004612419565b611193565b34801561068457600080fd5b506102d961069336600461243b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106ca57600080fd5b506102c66106d93660046123b5565b6111db565b3480156106ea57600080fd5b506102c66106f93660046123ce565b611272565b34801561070a57600080fd5b506102c6610719366004612419565b61130d565b34801561072a57600080fd5b506102c6610739366004612378565b611355565b34801561074a57600080fd5b50601254601354610480919082565b34801561076557600080fd5b50600654610500906001600160a01b031681565b60606003805461078890612469565b80601f01602080910402602001604051908101604052809291908181526020018280546107b490612469565b80156108015780601f106107d657610100808354040283529160200191610801565b820191906000526020600020905b8154815290600101906020018083116107e457829003601f168201915b5050505050905090565b60006108183384846113e7565b5060015b92915050565b6005546001600160a01b031633146108555760405162461bcd60e51b815260040161084c906124a3565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461089d5760405162461bcd60e51b815260040161084c906124a3565b60005b82518110156109045781601560008584815181106108c0576108c06124d8565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806108fc81612504565b9150506108a0565b505050565b600061091684848461150b565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561099b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161084c565b6109af85336109aa868561251d565b6113e7565b506001949350505050565b6005546001600160a01b031633146109e45760405162461bcd60e51b815260040161084c906124a3565b60005b8151811015610a4c57600060146000848481518110610a0857610a086124d8565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a4481612504565b9150506109e7565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108189185906109aa908690612530565b6005546001600160a01b03163314610ab15760405162461bcd60e51b815260040161084c906124a3565b610abd6012600a612627565b610ac79082612636565b60095550565b6005546001600160a01b03163314610af75760405162461bcd60e51b815260040161084c906124a3565b610b036012600a612627565b610b0d9082612636565b600a5550565b6005546001600160a01b03163314610b3d5760405162461bcd60e51b815260040161084c906124a3565b6001600160a01b03166000908152601460205260409020805460ff19166001179055565b6005546001600160a01b03163314610b8b5760405162461bcd60e51b815260040161084c906124a3565b610b956000611b07565b565b6005546000906001600160a01b03163314610bc45760405162461bcd60e51b815260040161084c906124a3565b50600854600a55600190565b6005546001600160a01b03163314610bfa5760405162461bcd60e51b815260040161084c906124a3565b6001600160a01b03166000908152601460205260409020805460ff19169055565b6005546001600160a01b03163314610c455760405162461bcd60e51b815260040161084c906124a3565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610c9a5760405162461bcd60e51b815260040161084c906124a3565b600754600160b01b900460ff1615610cf45760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161084c565b6007805461ffff60a81b191661010160a81b17905543600b55565b6005546001600160a01b03163314610d395760405162461bcd60e51b815260040161084c906124a3565b816001600160a01b031663a9059cbb610d5a6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610da7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610904919061264d565b60606004805461078890612469565b6005546001600160a01b03163314610e045760405162461bcd60e51b815260040161084c906124a3565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a4c573d6000803e3d6000fd5b6005546001600160a01b03163314610e685760405162461bcd60e51b815260040161084c906124a3565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee5919061266a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f56919061266a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610fa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc7919061266a565b600680546001600160a01b038581166001600160a01b03199283168117845560078054868416941693909317909255306000818152600160209081526040808320958352948152848220600019905594548282529481905283812054935163f305d71960e01b8152959650939091169363f305d7199334936110559392909190819033904290600401612687565b60606040518083038185885af1158015611073573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061109891906126c2565b5050505050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111215760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161084c565b61113033856109aa868561251d565b5060019392505050565b600061081833848461150b565b6005546001600160a01b031633146111715760405162461bcd60e51b815260040161084c906124a3565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111bd5760405162461bcd60e51b815260040161084c906124a3565b60408051808201909152828152602001819052601091909155601155565b6005546001600160a01b031633146112055760405162461bcd60e51b815260040161084c906124a3565b600754600160b01b900460ff161561126d5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b606482015260840161084c565b600c55565b6005546001600160a01b0316331461129c5760405162461bcd60e51b815260040161084c906124a3565b6001600160a01b0381166113015760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161084c565b61130a81611b07565b50565b6005546001600160a01b031633146113375760405162461bcd60e51b815260040161084c906124a3565b60408051808201909152828152602001819052601291909155601355565b6005546001600160a01b0316331461137f5760405162461bcd60e51b815260040161084c906124a3565b60005b8151811015610a4c576001601460008484815181106113a3576113a36124d8565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806113df81612504565b915050611382565b6001600160a01b0383166114495760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161084c565b6001600160a01b0382166114aa5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161084c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161156d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161084c565b6001600160a01b03831660009081526015602052604090205460ff161580156115af57506001600160a01b03821660009081526015602052604090205460ff16155b6115fb5760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e7300000000000000604482015260640161084c565b6001600160a01b03831660009081526014602052604090205460ff1615801561163d57506001600160a01b03821660009081526014602052604090205460ff16155b1561169157600754600160b01b900460ff166116915760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161084c565b6005546001600160a01b031632036116ae57610904838383611b59565b6007546001600160a01b0384811691161480156116e457506001600160a01b03821660009081526014602052604090205460ff16155b80156116fa5750600754600160a01b900460ff16155b1561177a57600a5481611722846001600160a01b031660009081526020819052604090205490565b61172c9190612530565b111561177a5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161084c565b6007546001600160a01b038481169116148015906117b157506001600160a01b03821660009081526014602052604090205460ff16155b80156117d657506001600160a01b03831660009081526014602052604090205460ff16155b80156117ec5750600754600160a01b900460ff16155b15611881576007546001600160a01b0383811691161461188157600a5481611829846001600160a01b031660009081526020819052604090205490565b6118339190612530565b11156118815760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161084c565b6001600160a01b03831660009081526014602052604090205460ff16806118c057506001600160a01b03821660009081526014602052604090205460ff165b15611903576001600160a01b03831660009081526014602052604090205460ff16156118f157610904838383611cb7565b6118ff43633b9aca00612530565b600c555b6000806000611925604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526014602052604081205460ff1615801561196757506001600160a01b03871660009081526014602052604090205460ff16155b80156119815750600c54600b5461197e9190612530565b43105b600754909150600160a01b900460ff16806119b457506001600160a01b03881660009081526014602052604090205460ff165b806119d757506001600160a01b03871660009081526014602052604090205460ff165b156119e55760009250611a67565b6007546001600160a01b038881169116148015611a00575080155b15611a1f57601254601354611a159190612530565b9450849350611a67565b80611a5857601054601154611a349190612530565b60408051808201909152601054815260115460208201529095508594509150611a67565b8015611a6757600d5494508493505b6064611a738588612636565b611a7d91906126f0565b600754909350600160a81b900460ff168015611aa757506007546001600160a01b03898116911614155b15611ab657611ab68583611d35565b611aca8888611ac5868a61251d565b611b59565b8215611afd578415611afd5760006064611ae48789612636565b611aee91906126f0565b9050611afb893083611b59565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611b7f5760405162461bcd60e51b815260040161084c90612712565b6001600160a01b038216611ba55760405162461bcd60e51b815260040161084c90612757565b6001600160a01b03831660009081526020819052604090205481811015611c1d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161084c565b611c27828261251d565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611c5d908490612530565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ca991815260200190565b60405180910390a350505050565b6001600160a01b038316611cdd5760405162461bcd60e51b815260040161084c90612712565b6001600160a01b038216611d035760405162461bcd60e51b815260040161084c90612757565b6001600160a01b0380841660009081526020819052604080822054928516825281208054849290611c5d908490612530565b600754600160a01b900460ff16610a4c576007805460ff60a01b1916600160a01b1790558115611e8157306000908152602081905260409020546009548110611e7f5760016009541115611d8857506009545b6000611d95846002612636565b9050600081846020015184611daa9190612636565b611db491906126f0565b90506000611dc2828561251d565b905047611dce82611e92565b6000611dda824761251d565b90506000876020015186611dee919061251d565b611df890836126f0565b90506000886020015182611e0c9190612636565b90508015611e1e57611e1e8682611fec565b600080600c5443611e2f919061251d565b119050600081611e40576000611e57565b8a51611e4d856002612636565b611e579190612636565b90508015611e7557600e54611e75906001600160a01b031682612043565b5050505050505050505b505b6007805460ff60a01b191690555050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ec757611ec76124d8565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f44919061266a565b81600181518110611f5757611f576124d8565b6001600160a01b039283166020918202929092010152600654611f7d91309116846113e7565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611fb690859060009086903090429060040161279a565b600060405180830381600087803b158015611fd057600080fd5b505af1158015611fe4573d6000803e3d6000fd5b505050505050565b6006546120049030906001600160a01b0316846113e7565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d7199083906110559030908790600090819061dead904290600401612687565b804710156120935760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161084c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146120e0576040519150601f19603f3d011682016040523d82523d6000602084013e6120e5565b606091505b50509050806109045760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161084c565b600060208083528351808285015260005b818110156121895785810183015185820160400152820161216d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461130a57600080fd5b80356121ca816121aa565b919050565b600080604083850312156121e257600080fd5b82356121ed816121aa565b946020939093013593505050565b801515811461130a57600080fd5b60006020828403121561221b57600080fd5b8135612226816121fb565b9392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261225457600080fd5b8135602067ffffffffffffffff808311156122715761227161222d565b8260051b604051601f19603f830116810181811084821117156122965761229661222d565b6040529384528581018301938381019250878511156122b457600080fd5b83870191505b848210156122da576122cb826121bf565b835291830191908301906122ba565b979650505050505050565b600080604083850312156122f857600080fd5b823567ffffffffffffffff81111561230f57600080fd5b61231b85828601612243565b925050602083013561232c816121fb565b809150509250929050565b60008060006060848603121561234c57600080fd5b8335612357816121aa565b92506020840135612367816121aa565b929592945050506040919091013590565b60006020828403121561238a57600080fd5b813567ffffffffffffffff8111156123a157600080fd5b6123ad84828501612243565b949350505050565b6000602082840312156123c757600080fd5b5035919050565b6000602082840312156123e057600080fd5b8135612226816121aa565b600080604083850312156123fe57600080fd5b8235612409816121aa565b9150602083013561232c816121fb565b6000806040838503121561242c57600080fd5b50508035926020909101359150565b6000806040838503121561244e57600080fd5b8235612459816121aa565b9150602083013561232c816121aa565b600181811c9082168061247d57607f821691505b60208210810361249d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612516576125166124ee565b5060010190565b8181038181111561081c5761081c6124ee565b8082018082111561081c5761081c6124ee565b600181815b8085111561257e578160001904821115612564576125646124ee565b8085161561257157918102915b93841c9390800290612548565b509250929050565b6000826125955750600161081c565b816125a25750600061081c565b81600181146125b857600281146125c2576125de565b600191505061081c565b60ff8411156125d3576125d36124ee565b50506001821b61081c565b5060208310610133831016604e8410600b8410161715612601575081810a61081c565b61260b8383612543565b806000190482111561261f5761261f6124ee565b029392505050565b600061222660ff841683612586565b808202811582820484141761081c5761081c6124ee565b60006020828403121561265f57600080fd5b8151612226816121fb565b60006020828403121561267c57600080fd5b8151612226816121aa565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156126d757600080fd5b8351925060208401519150604084015190509250925092565b60008261270d57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127ea5784516001600160a01b0316835293830193918301916001016127c5565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220271edaa87aba4b7d7c24796e07ce16c0a3d149e7516ac43e651702dc27944b1564736f6c63430008130033