0x608060405234801561000f575f80fd5b5060043610610132575f3560e01c80635431c94e116100b457806395d89b411161007957806395d89b41146102a9578063a457c2d7146102b1578063a9059cbb146102c4578063ad5c4648146102d7578063dd62ed3e146102fe578063f2fde38b14610311575f80fd5b80635431c94e1461024d57806370a0823114610260578063715018a6146102885780638a8c523c146102905780638da5cb5b14610298575f80fd5b806323b872dd116100fa57806323b872dd146101dd578063313ce567146101f057806339509351146101ff578063452ed4f11461021257806353371be014610239575f80fd5b806306fdde03146101365780630758d92414610154578063095ea7b31461019357806318160ddd146101b65780632307b441146101c8575b5f80fd5b61013e610324565b60405161014b9190610f22565b60405180910390f35b61017b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161014b565b6101a66101a1366004610f72565b6103b4565b604051901515815260200161014b565b6002545b60405190815260200161014b565b6101db6101d6366004610fe2565b6103cd565b005b6101a66101eb36600461104e565b6104aa565b6040516012815260200161014b565b6101a661020d366004610f72565b6104cd565b61017b7f000000000000000000000000a89a8c005d91fa82e7ab2063b2f5b9c05eaad08f81565b6005546101a690600160a01b900460ff1681565b6101db61025b366004611088565b6104ee565b6101ba61026e3660046110b9565b6001600160a01b03165f9081526020819052604090205490565b6101db6105e8565b6101db61065b565b6005546001600160a01b031661017b565b61013e6106f4565b6101a66102bf366004610f72565b610703565b6101a66102d2366004610f72565b61077d565b61017b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6101ba61030c366004611088565b61078a565b6101db61031f3660046110b9565b6107b4565b606060038054610333906110d9565b80601f016020809104026020016040519081016040528092919081815260200182805461035f906110d9565b80156103aa5780601f10610381576101008083540402835291602001916103aa565b820191905f5260205f20905b81548152906001019060200180831161038d57829003601f168201915b5050505050905090565b5f336103c181858561089e565b60019150505b92915050565b6005546001600160a01b031633146104005760405162461bcd60e51b81526004016103f790611111565b60405180910390fd5b8281146104485760405162461bcd60e51b81526020600482015260166024820152750c2e4e4c2f2e640d8cadccee8d040dad2e6dac2e8c6d60531b60448201526064016103f7565b5f5b838110156104a35761049b3386868481811061046857610468611146565b905060200201602081019061047d91906110b9565b85858581811061048f5761048f611146565b905060200201356109c1565b60010161044a565b5050505050565b5f336104b7858285610b64565b6104c2858585610bdc565b506001949350505050565b5f336103c18185856104df838361078a565b6104e9919061115a565b61089e565b6005546001600160a01b031633146105185760405162461bcd60e51b81526004016103f790611111565b6001600160a01b03821661056e5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016103f7565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa1580156105b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d69190611179565b90506105e3838383610c90565b505050565b6005546001600160a01b031633146106125760405162461bcd60e51b81526004016103f790611111565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146106855760405162461bcd60e51b81526004016103f790611111565b600554600160a01b900460ff16156106df5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016103f7565b6005805460ff60a01b1916600160a01b179055565b606060048054610333906110d9565b5f3381610710828661078a565b9050838110156107705760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103f7565b6104c2828686840361089e565b5f336103c1818585610bdc565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6005546001600160a01b031633146107de5760405162461bcd60e51b81526004016103f790611111565b6001600160a01b0381166108435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103f7565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109005760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103f7565b6001600160a01b0382166109615760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103f7565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a255760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103f7565b6001600160a01b038216610a875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103f7565b6001600160a01b0383165f9081526020819052604090205481811015610afe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103f7565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b5f610b6f848461078a565b90505f198114610bd65781811015610bc95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103f7565b610bd6848484840361089e565b50505050565b826001600160a01b0316610bf86005546001600160a01b031690565b6001600160a01b031614158015610c325750816001600160a01b0316610c266005546001600160a01b031690565b6001600160a01b031614155b15610c8557600554600160a01b900460ff16610c855760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016103f7565b6105e38383836109c1565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526105e3928692915f91610d1f918516908490610d9c565b8051909150156105e35780806020019051810190610d3d9190611190565b6105e35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103f7565b6060610daa84845f85610db2565b949350505050565b606082471015610e135760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103f7565b5f80866001600160a01b03168587604051610e2e91906111af565b5f6040518083038185875af1925050503d805f8114610e68576040519150601f19603f3d011682016040523d82523d5f602084013e610e6d565b606091505b5091509150610e7e87838387610e89565b979650505050505050565b60608315610ef75782515f03610ef0576001600160a01b0385163b610ef05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f7565b5081610daa565b610daa8383815115610f0c5781518083602001fd5b8060405162461bcd60e51b81526004016103f791905b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610f6d575f80fd5b919050565b5f8060408385031215610f83575f80fd5b610f8c83610f57565b946020939093013593505050565b5f8083601f840112610faa575f80fd5b50813567ffffffffffffffff811115610fc1575f80fd5b6020830191508360208260051b8501011115610fdb575f80fd5b9250929050565b5f805f8060408587031215610ff5575f80fd5b843567ffffffffffffffff81111561100b575f80fd5b61101787828801610f9a565b909550935050602085013567ffffffffffffffff811115611036575f80fd5b61104287828801610f9a565b95989497509550505050565b5f805f60608486031215611060575f80fd5b61106984610f57565b925061107760208501610f57565b929592945050506040919091013590565b5f8060408385031215611099575f80fd5b6110a283610f57565b91506110b060208401610f57565b90509250929050565b5f602082840312156110c9575f80fd5b6110d282610f57565b9392505050565b600181811c908216806110ed57607f821691505b60208210810361110b57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b808201808211156103c757634e487b7160e01b5f52601160045260245ffd5b5f60208284031215611189575f80fd5b5051919050565b5f602082840312156111a0575f80fd5b815180151581146110d2575f80fd5b5f82518060208501845e5f92019182525091905056fea2646970667358221220f0def1064967008320a1627da75c7a26b8c4d88f6d96b91e6e3759f693d6420864736f6c634300081a0033
0x60e060405234801561000f575f80fd5b506040518060400160405280600b81526020016a4d616761446f6e616c647360a81b815250604051806040016040528060068152602001654d634d61676160d01b815250816003908161006291906105db565b50600461006f82826105db565b5050505f61008161035f60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100e4336b0282b82666abfd3da9000000610363565b5f466001036101085750737a250d5630b4cf539739df2c5dacb4c659f2488d6101e3565b4660050361012b5750737a250d5630b4cf539739df2c5dacb4c659f2488d6101e3565b4660610361014e575073d99d1c33f9fc3444f8101754abc46c52416550d16101e3565b4661a4b1036101725750731b02da8cb0d097eb8d57a175b88c7d8b479975066101e3565b46612105036101965750734752ba5dbc23f44d87826276bf6fd6b1c372ad246101e3565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e6669677572656400000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03811660a0819052604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801561022b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024f9190610695565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ca9190610695565b60c0516040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303815f875af1158015610318573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061033c9190610695565b6001600160a01b031660805260a051600254610359913391610420565b506106e7565b3390565b6001600160a01b0382166103b95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101da565b8060025f8282546103ca91906106c2565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0383166104825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016101da565b6001600160a01b0382166104e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016101da565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061056b57607f821691505b60208210810361058957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156105d657805f5260205f20601f840160051c810160208510156105b45750805b601f840160051c820191505b818110156105d3575f81556001016105c0565b50505b505050565b81516001600160401b038111156105f4576105f4610543565b610608816106028454610557565b8461058f565b6020601f82116001811461063a575f83156106235750848201515b5f19600385901b1c1916600184901b1784556105d3565b5f84815260208120601f198516915b828110156106695787850151825560209485019460019092019101610649565b508482101561068657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156106a5575f80fd5b81516001600160a01b03811681146106bb575f80fd5b9392505050565b808201808211156106e157634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c0516111fb6107115f395f6102dc01525f61015901525f61021701526111fb5ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80635431c94e116100b457806395d89b411161007957806395d89b41146102a9578063a457c2d7146102b1578063a9059cbb146102c4578063ad5c4648146102d7578063dd62ed3e146102fe578063f2fde38b14610311575f80fd5b80635431c94e1461024d57806370a0823114610260578063715018a6146102885780638a8c523c146102905780638da5cb5b14610298575f80fd5b806323b872dd116100fa57806323b872dd146101dd578063313ce567146101f057806339509351146101ff578063452ed4f11461021257806353371be014610239575f80fd5b806306fdde03146101365780630758d92414610154578063095ea7b31461019357806318160ddd146101b65780632307b441146101c8575b5f80fd5b61013e610324565b60405161014b9190610f22565b60405180910390f35b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161014b565b6101a66101a1366004610f72565b6103b4565b604051901515815260200161014b565b6002545b60405190815260200161014b565b6101db6101d6366004610fe2565b6103cd565b005b6101a66101eb36600461104e565b6104aa565b6040516012815260200161014b565b6101a661020d366004610f72565b6104cd565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b6005546101a690600160a01b900460ff1681565b6101db61025b366004611088565b6104ee565b6101ba61026e3660046110b9565b6001600160a01b03165f9081526020819052604090205490565b6101db6105e8565b6101db61065b565b6005546001600160a01b031661017b565b61013e6106f4565b6101a66102bf366004610f72565b610703565b6101a66102d2366004610f72565b61077d565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b6101ba61030c366004611088565b61078a565b6101db61031f3660046110b9565b6107b4565b606060038054610333906110d9565b80601f016020809104026020016040519081016040528092919081815260200182805461035f906110d9565b80156103aa5780601f10610381576101008083540402835291602001916103aa565b820191905f5260205f20905b81548152906001019060200180831161038d57829003601f168201915b5050505050905090565b5f336103c181858561089e565b60019150505b92915050565b6005546001600160a01b031633146104005760405162461bcd60e51b81526004016103f790611111565b60405180910390fd5b8281146104485760405162461bcd60e51b81526020600482015260166024820152750c2e4e4c2f2e640d8cadccee8d040dad2e6dac2e8c6d60531b60448201526064016103f7565b5f5b838110156104a35761049b3386868481811061046857610468611146565b905060200201602081019061047d91906110b9565b85858581811061048f5761048f611146565b905060200201356109c1565b60010161044a565b5050505050565b5f336104b7858285610b64565b6104c2858585610bdc565b506001949350505050565b5f336103c18185856104df838361078a565b6104e9919061115a565b61089e565b6005546001600160a01b031633146105185760405162461bcd60e51b81526004016103f790611111565b6001600160a01b03821661056e5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016103f7565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa1580156105b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d69190611179565b90506105e3838383610c90565b505050565b6005546001600160a01b031633146106125760405162461bcd60e51b81526004016103f790611111565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146106855760405162461bcd60e51b81526004016103f790611111565b600554600160a01b900460ff16156106df5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016103f7565b6005805460ff60a01b1916600160a01b179055565b606060048054610333906110d9565b5f3381610710828661078a565b9050838110156107705760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103f7565b6104c2828686840361089e565b5f336103c1818585610bdc565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6005546001600160a01b031633146107de5760405162461bcd60e51b81526004016103f790611111565b6001600160a01b0381166108435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103f7565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109005760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103f7565b6001600160a01b0382166109615760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103f7565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a255760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103f7565b6001600160a01b038216610a875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103f7565b6001600160a01b0383165f9081526020819052604090205481811015610afe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103f7565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b5f610b6f848461078a565b90505f198114610bd65781811015610bc95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103f7565b610bd6848484840361089e565b50505050565b826001600160a01b0316610bf86005546001600160a01b031690565b6001600160a01b031614158015610c325750816001600160a01b0316610c266005546001600160a01b031690565b6001600160a01b031614155b15610c8557600554600160a01b900460ff16610c855760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016103f7565b6105e38383836109c1565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526105e3928692915f91610d1f918516908490610d9c565b8051909150156105e35780806020019051810190610d3d9190611190565b6105e35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103f7565b6060610daa84845f85610db2565b949350505050565b606082471015610e135760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103f7565b5f80866001600160a01b03168587604051610e2e91906111af565b5f6040518083038185875af1925050503d805f8114610e68576040519150601f19603f3d011682016040523d82523d5f602084013e610e6d565b606091505b5091509150610e7e87838387610e89565b979650505050505050565b60608315610ef75782515f03610ef0576001600160a01b0385163b610ef05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103f7565b5081610daa565b610daa8383815115610f0c5781518083602001fd5b8060405162461bcd60e51b81526004016103f791905b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610f6d575f80fd5b919050565b5f8060408385031215610f83575f80fd5b610f8c83610f57565b946020939093013593505050565b5f8083601f840112610faa575f80fd5b50813567ffffffffffffffff811115610fc1575f80fd5b6020830191508360208260051b8501011115610fdb575f80fd5b9250929050565b5f805f8060408587031215610ff5575f80fd5b843567ffffffffffffffff81111561100b575f80fd5b61101787828801610f9a565b909550935050602085013567ffffffffffffffff811115611036575f80fd5b61104287828801610f9a565b95989497509550505050565b5f805f60608486031215611060575f80fd5b61106984610f57565b925061107760208501610f57565b929592945050506040919091013590565b5f8060408385031215611099575f80fd5b6110a283610f57565b91506110b060208401610f57565b90509250929050565b5f602082840312156110c9575f80fd5b6110d282610f57565b9392505050565b600181811c908216806110ed57607f821691505b60208210810361110b57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b808201808211156103c757634e487b7160e01b5f52601160045260245ffd5b5f60208284031215611189575f80fd5b5051919050565b5f602082840312156111a0575f80fd5b815180151581146110d2575f80fd5b5f82518060208501845e5f92019182525091905056fea2646970667358221220f0def1064967008320a1627da75c7a26b8c4d88f6d96b91e6e3759f693d6420864736f6c634300081a0033