0x608060405234801561001057600080fd5b50600436106101585760003560e01c806370a08231116100c357806395d89b411161007c57806395d89b41146102cc578063a457c2d7146102d4578063a9059cbb146102e7578063c4590d3f146102fa578063dd62ed3e1461030d578063f2fde38b1461034657600080fd5b806370a0823114610277578063715018a61461028a5780638187f51614610292578063860a32ec146102a557806389f9a1d3146102b25780638da5cb5b146102bb57600080fd5b806323b872dd1161011557806323b872dd146101f1578063313ce567146102045780633950935114610213578063404e51291461022657806342966c681461023957806349bd5a5e1461024c57600080fd5b806306fdde031461015d578063095ea7b31461017b57806316c021291461019e57806318160ddd146101c15780631ab99e12146101d357806322731396146101dc575b600080fd5b610165610359565b6040516101729190610de2565b60405180910390f35b61018e610189366004610e4c565b6103eb565b6040519015158152602001610172565b61018e6101ac366004610e76565b600a6020526000908152604090205460ff1681565b6003545b604051908152602001610172565b6101c560085481565b6101ef6101ea366004610ea8565b610402565b005b61018e6101ff366004610ec3565b610448565b60405160128152602001610172565b61018e610221366004610e4c565b6104f2565b6101ef610234366004610eff565b61052e565b6101ef610247366004610f32565b610583565b60095461025f906001600160a01b031681565b6040516001600160a01b039091168152602001610172565b6101c5610285366004610e76565b610590565b6101ef6105ab565b6101ef6102a0366004610e76565b6105e1565b60065461018e9060ff1681565b6101c560075481565b6000546001600160a01b031661025f565b61016561062d565b61018e6102e2366004610e4c565b61063c565b61018e6102f5366004610e4c565b6106d5565b6101ef610308366004610f4b565b6106e2565b6101c561031b366004610f6d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101ef610354366004610e76565b610717565b60606004805461036890610f97565b80601f016020809104026020016040519081016040528092919081815260200182805461039490610f97565b80156103e15780601f106103b6576101008083540402835291602001916103e1565b820191906000526020600020905b8154815290600101906020018083116103c457829003601f168201915b5050505050905090565b60006103f83384846107af565b5060015b92915050565b6000546001600160a01b031633146104355760405162461bcd60e51b815260040161042c90610fd1565b60405180910390fd5b6006805460ff1916911515919091179055565b60006104558484846108d4565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156104da5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161042c565b6104e785338584036107af565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916103f891859061052990869061101c565b6107af565b6000546001600160a01b031633146105585760405162461bcd60e51b815260040161042c90610fd1565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b61058d3382610aae565b50565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b031633146105d55760405162461bcd60e51b815260040161042c90610fd1565b6105df6000610c05565b565b6000546001600160a01b0316331461060b5760405162461bcd60e51b815260040161042c90610fd1565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60606005805461036890610f97565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156106be5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161042c565b6106cb33858584036107af565b5060019392505050565b60006103f83384846108d4565b6000546001600160a01b0316331461070c5760405162461bcd60e51b815260040161042c90610fd1565b600791909155600855565b6000546001600160a01b031633146107415760405162461bcd60e51b815260040161042c90610fd1565b6001600160a01b0381166107a65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042c565b61058d81610c05565b6001600160a01b0383166108115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161042c565b6001600160a01b0382166108725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161042c565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166109385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161042c565b6001600160a01b03821661099a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161042c565b6109a5838383610c55565b6001600160a01b03831660009081526001602052604090205481811015610a1d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161042c565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610a5490849061101c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610aa091815260200190565b60405180910390a350505050565b6001600160a01b038216610b0e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161042c565b610b1a82600083610c55565b6001600160a01b03821660009081526001602052604090205481811015610b8e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161042c565b6001600160a01b0383166000908152600160205260408120838303905560038054849290610bbd90849061102f565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016108c7565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000908152600a602052604090205460ff16158015610c9757506001600160a01b0383166000908152600a602052604090205460ff16155b610cd15760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015260640161042c565b6009546001600160a01b0316610d4f576000546001600160a01b0384811691161480610d0a57506000546001600160a01b038381169116145b610c005760405162461bcd60e51b81526020600482015260166024820152751d1c98591a5b99c81a5cc81b9bdd081cdd185c9d195960521b604482015260640161042c565b60065460ff168015610d6e57506009546001600160a01b038481169116145b15610c005760075481610d8084610590565b610d8a919061101c565b11158015610dad575060085481610da084610590565b610daa919061101c565b10155b610c005760405162461bcd60e51b8152602060048201526006602482015265119bdc989a5960d21b604482015260640161042c565b600060208083528351808285015260005b81811015610e0f57858101830151858201604001528201610df3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610e4757600080fd5b919050565b60008060408385031215610e5f57600080fd5b610e6883610e30565b946020939093013593505050565b600060208284031215610e8857600080fd5b610e9182610e30565b9392505050565b80358015158114610e4757600080fd5b600060208284031215610eba57600080fd5b610e9182610e98565b600080600060608486031215610ed857600080fd5b610ee184610e30565b9250610eef60208501610e30565b9150604084013590509250925092565b60008060408385031215610f1257600080fd5b610f1b83610e30565b9150610f2960208401610e98565b90509250929050565b600060208284031215610f4457600080fd5b5035919050565b60008060408385031215610f5e57600080fd5b50508035926020909101359150565b60008060408385031215610f8057600080fd5b610f8983610e30565b9150610f2960208401610e30565b600181811c90821680610fab57607f821691505b602082108103610fcb57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156103fc576103fc611006565b818103818111156103fc576103fc61100656fea2646970667358221220650b73cfc3f385722e02b8b2d5ea461cde080f055afecd0bb9d4f96ae1b7df1b64736f6c63430008120033
0x6080604052620000126012600a6200055e565b62000023906404e3b2920062000576565b600b553480156200003357600080fd5b506040518060400160405280600d81526020016c416c6c20596f7572204261736560981b81525060405180604001604052806006815260200165594f4241534560d01b815250620000936200008d6200012060201b60201c565b62000124565b6004620000a1838262000634565b506005620000b0828262000634565b505050620000c733600b546200017460201b60201c565b6006805460ff19166001179055600b546103e890620000e890600a62000576565b620000f4919062000700565b600755600b546103e8906200010b90600162000576565b62000117919062000700565b60085562000739565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620001d05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b620001de600083836200026b565b8060036000828254620001f2919062000723565b90915550506001600160a01b038216600090815260016020526040812080548392906200022190849062000723565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166000908152600a602052604090205460ff16158015620002ae57506001600160a01b0383166000908152600a602052604090205460ff16155b620002ea5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401620001c7565b6009546001600160a01b031662000378576000546001600160a01b03848116911614806200032557506000546001600160a01b038381169116145b620003735760405162461bcd60e51b815260206004820152601660248201527f74726164696e67206973206e6f742073746172746564000000000000000000006044820152606401620001c7565b505050565b60065460ff1680156200039857506009546001600160a01b038481169116145b15620003735760075481620003b8846200042e60201b620005901760201c565b620003c4919062000723565b11158015620003f7575060085481620003e8846200042e60201b620005901760201c565b620003f4919062000723565b10155b620003735760405162461bcd60e51b8152602060048201526006602482015265119bdc989a5960d21b6044820152606401620001c7565b6001600160a01b031660009081526001602052604090205490565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004a057816000190482111562000484576200048462000449565b808516156200049257918102915b93841c939080029062000464565b509250929050565b600082620004b95750600162000558565b81620004c85750600062000558565b8160018114620004e15760028114620004ec576200050c565b600191505062000558565b60ff84111562000500576200050062000449565b50506001821b62000558565b5060208310610133831016604e8410600b841016171562000531575081810a62000558565b6200053d83836200045f565b806000190482111562000554576200055462000449565b0290505b92915050565b60006200056f60ff841683620004a8565b9392505050565b808202811582820484141762000558576200055862000449565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005bb57607f821691505b602082108103620005dc57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200037357600081815260208120601f850160051c810160208610156200060b5750805b601f850160051c820191505b818110156200062c5782815560010162000617565b505050505050565b81516001600160401b0381111562000650576200065062000590565b6200066881620006618454620005a6565b84620005e2565b602080601f831160018114620006a05760008415620006875750858301515b600019600386901b1c1916600185901b1785556200062c565b600085815260208120601f198616915b82811015620006d157888601518255948401946001909101908401620006b0565b5085821015620006f05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000826200071e57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000558576200055862000449565b61107880620007496000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806370a08231116100c357806395d89b411161007c57806395d89b41146102cc578063a457c2d7146102d4578063a9059cbb146102e7578063c4590d3f146102fa578063dd62ed3e1461030d578063f2fde38b1461034657600080fd5b806370a0823114610277578063715018a61461028a5780638187f51614610292578063860a32ec146102a557806389f9a1d3146102b25780638da5cb5b146102bb57600080fd5b806323b872dd1161011557806323b872dd146101f1578063313ce567146102045780633950935114610213578063404e51291461022657806342966c681461023957806349bd5a5e1461024c57600080fd5b806306fdde031461015d578063095ea7b31461017b57806316c021291461019e57806318160ddd146101c15780631ab99e12146101d357806322731396146101dc575b600080fd5b610165610359565b6040516101729190610de2565b60405180910390f35b61018e610189366004610e4c565b6103eb565b6040519015158152602001610172565b61018e6101ac366004610e76565b600a6020526000908152604090205460ff1681565b6003545b604051908152602001610172565b6101c560085481565b6101ef6101ea366004610ea8565b610402565b005b61018e6101ff366004610ec3565b610448565b60405160128152602001610172565b61018e610221366004610e4c565b6104f2565b6101ef610234366004610eff565b61052e565b6101ef610247366004610f32565b610583565b60095461025f906001600160a01b031681565b6040516001600160a01b039091168152602001610172565b6101c5610285366004610e76565b610590565b6101ef6105ab565b6101ef6102a0366004610e76565b6105e1565b60065461018e9060ff1681565b6101c560075481565b6000546001600160a01b031661025f565b61016561062d565b61018e6102e2366004610e4c565b61063c565b61018e6102f5366004610e4c565b6106d5565b6101ef610308366004610f4b565b6106e2565b6101c561031b366004610f6d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101ef610354366004610e76565b610717565b60606004805461036890610f97565b80601f016020809104026020016040519081016040528092919081815260200182805461039490610f97565b80156103e15780601f106103b6576101008083540402835291602001916103e1565b820191906000526020600020905b8154815290600101906020018083116103c457829003601f168201915b5050505050905090565b60006103f83384846107af565b5060015b92915050565b6000546001600160a01b031633146104355760405162461bcd60e51b815260040161042c90610fd1565b60405180910390fd5b6006805460ff1916911515919091179055565b60006104558484846108d4565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156104da5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161042c565b6104e785338584036107af565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916103f891859061052990869061101c565b6107af565b6000546001600160a01b031633146105585760405162461bcd60e51b815260040161042c90610fd1565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b61058d3382610aae565b50565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b031633146105d55760405162461bcd60e51b815260040161042c90610fd1565b6105df6000610c05565b565b6000546001600160a01b0316331461060b5760405162461bcd60e51b815260040161042c90610fd1565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b60606005805461036890610f97565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156106be5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161042c565b6106cb33858584036107af565b5060019392505050565b60006103f83384846108d4565b6000546001600160a01b0316331461070c5760405162461bcd60e51b815260040161042c90610fd1565b600791909155600855565b6000546001600160a01b031633146107415760405162461bcd60e51b815260040161042c90610fd1565b6001600160a01b0381166107a65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042c565b61058d81610c05565b6001600160a01b0383166108115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161042c565b6001600160a01b0382166108725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161042c565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166109385760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161042c565b6001600160a01b03821661099a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161042c565b6109a5838383610c55565b6001600160a01b03831660009081526001602052604090205481811015610a1d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161042c565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610a5490849061101c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610aa091815260200190565b60405180910390a350505050565b6001600160a01b038216610b0e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161042c565b610b1a82600083610c55565b6001600160a01b03821660009081526001602052604090205481811015610b8e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161042c565b6001600160a01b0383166000908152600160205260408120838303905560038054849290610bbd90849061102f565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016108c7565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000908152600a602052604090205460ff16158015610c9757506001600160a01b0383166000908152600a602052604090205460ff16155b610cd15760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015260640161042c565b6009546001600160a01b0316610d4f576000546001600160a01b0384811691161480610d0a57506000546001600160a01b038381169116145b610c005760405162461bcd60e51b81526020600482015260166024820152751d1c98591a5b99c81a5cc81b9bdd081cdd185c9d195960521b604482015260640161042c565b60065460ff168015610d6e57506009546001600160a01b038481169116145b15610c005760075481610d8084610590565b610d8a919061101c565b11158015610dad575060085481610da084610590565b610daa919061101c565b10155b610c005760405162461bcd60e51b8152602060048201526006602482015265119bdc989a5960d21b604482015260640161042c565b600060208083528351808285015260005b81811015610e0f57858101830151858201604001528201610df3565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610e4757600080fd5b919050565b60008060408385031215610e5f57600080fd5b610e6883610e30565b946020939093013593505050565b600060208284031215610e8857600080fd5b610e9182610e30565b9392505050565b80358015158114610e4757600080fd5b600060208284031215610eba57600080fd5b610e9182610e98565b600080600060608486031215610ed857600080fd5b610ee184610e30565b9250610eef60208501610e30565b9150604084013590509250925092565b60008060408385031215610f1257600080fd5b610f1b83610e30565b9150610f2960208401610e98565b90509250929050565b600060208284031215610f4457600080fd5b5035919050565b60008060408385031215610f5e57600080fd5b50508035926020909101359150565b60008060408385031215610f8057600080fd5b610f8983610e30565b9150610f2960208401610e30565b600181811c90821680610fab57607f821691505b602082108103610fcb57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156103fc576103fc611006565b818103818111156103fc576103fc61100656fea2646970667358221220650b73cfc3f385722e02b8b2d5ea461cde080f055afecd0bb9d4f96ae1b7df1b64736f6c63430008120033