0x6080604052600436106100dd5760003560e01c80638705fcd41161007f578063ddca3f4311610059578063ddca3f43146102a6578063f2fde38b146102ca578063f3fef3a3146102ea578063ffa2fd021461030a576100dd565b80638705fcd4146102485780638da5cb5b14610268578063c4d66de814610286576100dd565b80633339657d116100bb5780633339657d1461014d57806341275358146101a257806363d5a3d9146101da578063715018a614610233576100dd565b80630bd2f005146100e25780630c8833ce146101045780630efe6a8b1461013a575b600080fd5b3480156100ee57600080fd5b506101026100fd3660046110ba565b61031f565b005b34801561011057600080fd5b5061012461011f366004610ff7565b6104b1565b6040516101319190611106565b60405180910390f35b6101026101483660046110ba565b610573565b34801561015957600080fd5b5061016d61016836600461102f565b610870565b604080516001600160a01b0396871681529590941660208601529284019190915260608301521515608082015260a001610131565b3480156101ae57600080fd5b50606a546101c2906001600160a01b031681565b6040516001600160a01b039091168152602001610131565b3480156101e657600080fd5b5061016d6101f53660046110ee565b606860205260009081526040902080546001820154600283015460038401546004909401546001600160a01b03938416949390921692909160ff1685565b34801561023f57600080fd5b506101026108da565b34801561025457600080fd5b50610102610263366004610fdb565b6108ee565b34801561027457600080fd5b506033546001600160a01b03166101c2565b34801561029257600080fd5b506101026102a1366004610fdb565b610918565b3480156102b257600080fd5b506102bc60695481565b604051908152602001610131565b3480156102d657600080fd5b506101026102e5366004610fdb565b610a4a565b3480156102f657600080fd5b5061010261030536600461108f565b610ac3565b34801561031657600080fd5b50610124610ccc565b336000908152606b602090815260408083206001600160a01b0387168452909152812080548490811061036257634e487b7160e01b600052603260045260246000fd5b60009182526020909120600590910201600481015490915060ff16156103cf5760405162461bcd60e51b815260206004820152601860248201527f4c6f636b20686173206265656e207465726d696e61746564000000000000000060448201526064015b60405180910390fd5b80546001600160a01b031633146104385760405162461bcd60e51b815260206004820152602760248201527f4f6e6c7920746865206c6f636b206f776e65722063616e20657874656e6420746044820152666865206c6f636b60c81b60648201526084016103c6565b4282116104575760405162461bcd60e51b81526004016103c6906111cd565b600381018290558054604080516001600160a01b039283168152918616602083015281018390527f1c96e331bccd226df98fd6657b7e827834bb9c0c95e3df457c0178fe170dc30a9060600160405180910390a150505050565b6001600160a01b038083166000908152606b602090815260408083209385168352928152828220805484518184028101840190955280855260609493919290919084015b828210156105665760008481526020908190206040805160a0810182526005860290920180546001600160a01b03908116845260018083015490911684860152600282015492840192909252600381015460608401526004015460ff161515608083015290835290920191016104f5565b5050505090505b92915050565b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b038416906323b872dd90606401602060405180830381600087803b1580156105c157600080fd5b505af11580156105d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f9919061106f565b6106385760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b60448201526064016103c6565b60695434101561067e5760405162461bcd60e51b81526020600482015260116024820152702332b29036bab9ba103132903830b4b21760791b60448201526064016103c6565b42811161069d5760405162461bcd60e51b81526004016103c6906111cd565b6040805160a081018252338082526001600160a01b03868116602080850182815285870189815260608701898152600060808901818152978152606b855289812095815294845297842080546001808201835591865293909420875160059094020180546001600160a01b031990811694871694909417815591519382018054909316939094169290921790559051600282015592516003840155516004909201805460ff19169215159290921790915560655461075d90606690610e20565b5060658054600090815260686020908152604091829020845181546001600160a01b03199081166001600160a01b03928316178355928601516001808401805490951691909216179092559184015160028301556060840151600383015560808401516004909201805460ff19169215159290921790915590546107e091611210565b606555606a546040516001600160a01b03909116903480156108fc02916000818181858888f1935050505015801561081c573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810185905290810183905233907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7906060015b60405180910390a250505050565b606b602052826000526040600020602052816000526040600020818154811061089857600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401546001600160a01b039384169750929091169450925060ff1685565b6108e2610e33565b6108ec6000610e8d565b565b6108f6610e33565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16158080156109385750600054600160ff909116105b806109525750303b158015610952575060005460ff166001145b6109b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103c6565b6000805460ff1916600117905580156109d8576000805461ff0019166101001790555b6109e0610edf565b606a80546001600160a01b0319166001600160a01b03841617905560006069558015610a46576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b610a52610e33565b6001600160a01b038116610ab75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103c6565b610ac081610e8d565b50565b336000908152606b602090815260408083206001600160a01b03861684529091528120805483908110610b0657634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020190508060030154421015610b6a5760405162461bcd60e51b815260206004820152601960248201527f4c6f636b20686173206e6f742065787069726564207965742e0000000000000060448201526064016103c6565b80546001600160a01b03163314610bd15760405162461bcd60e51b815260206004820152602560248201527f53656e646572206d75737420626520746865206f776e6572206f6620746865206044820152643637b1b59760d91b60648201526084016103c6565b60028101805460009091556004808301805460ff19166001908117909155830154835460405163a9059cbb60e01b81526001600160a01b039182169381019390935260248301849052169063a9059cbb90604401602060405180830381600087803b158015610c3f57600080fd5b505af1158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c77919061106f565b5060018201546002830154604080516001600160a01b0390931683526020830191909152429082015233907ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb56790606001610862565b60606000610cda6066610f0e565b67ffffffffffffffff811115610d0057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610d5957816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181610d1e5790505b50905060005b610d696066610f0e565b811015610e1a5760686000610d7f606684610f18565b81526020808201929092526040908101600020815160a08101835281546001600160a01b03908116825260018301541693810193909352600281015491830191909152600381015460608301526004015460ff16151560808201528251839083908110610dfc57634e487b7160e01b600052603260045260246000fd5b60200260200101819052508080610e1290611228565b915050610d5f565b50905090565b6000610e2c8383610f24565b9392505050565b6033546001600160a01b031633146108ec5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610f065760405162461bcd60e51b81526004016103c690611182565b6108ec610f73565b600061056d825490565b6000610e2c8383610fa3565b6000818152600183016020526040812054610f6b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561056d565b50600061056d565b600054610100900460ff16610f9a5760405162461bcd60e51b81526004016103c690611182565b6108ec33610e8d565b6000826000018281548110610fc857634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b600060208284031215610fec578081fd5b8135610e2c81611259565b60008060408385031215611009578081fd5b823561101481611259565b9150602083013561102481611259565b809150509250929050565b600080600060608486031215611043578081fd5b833561104e81611259565b9250602084013561105e81611259565b929592945050506040919091013590565b600060208284031215611080578081fd5b81518015158114610e2c578182fd5b600080604083850312156110a1578182fd5b82356110ac81611259565b946020939093013593505050565b6000806000606084860312156110ce578283fd5b83356110d981611259565b95602085013595506040909401359392505050565b6000602082840312156110ff578081fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561117557815180516001600160a01b03908116865287820151168786015285810151868601526060808201519086015260809081015115159085015260a09093019290850190600101611123565b5091979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526023908201527f4e6577206c6f636b2074696d65206d75737420626520696e207468652066757460408201526275726560e81b606082015260800190565b6000821982111561122357611223611243565b500190565b600060001982141561123c5761123c611243565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610ac057600080fdfea2646970667358221220ca52c3b0e01449e690ae4b3c0192c04a9fcc61625cf0c3640798beb9e910e6c064736f6c63430008020033
0x608060405234801561001057600080fd5b506112a4806100206000396000f3fe6080604052600436106100dd5760003560e01c80638705fcd41161007f578063ddca3f4311610059578063ddca3f43146102a6578063f2fde38b146102ca578063f3fef3a3146102ea578063ffa2fd021461030a576100dd565b80638705fcd4146102485780638da5cb5b14610268578063c4d66de814610286576100dd565b80633339657d116100bb5780633339657d1461014d57806341275358146101a257806363d5a3d9146101da578063715018a614610233576100dd565b80630bd2f005146100e25780630c8833ce146101045780630efe6a8b1461013a575b600080fd5b3480156100ee57600080fd5b506101026100fd3660046110ba565b61031f565b005b34801561011057600080fd5b5061012461011f366004610ff7565b6104b1565b6040516101319190611106565b60405180910390f35b6101026101483660046110ba565b610573565b34801561015957600080fd5b5061016d61016836600461102f565b610870565b604080516001600160a01b0396871681529590941660208601529284019190915260608301521515608082015260a001610131565b3480156101ae57600080fd5b50606a546101c2906001600160a01b031681565b6040516001600160a01b039091168152602001610131565b3480156101e657600080fd5b5061016d6101f53660046110ee565b606860205260009081526040902080546001820154600283015460038401546004909401546001600160a01b03938416949390921692909160ff1685565b34801561023f57600080fd5b506101026108da565b34801561025457600080fd5b50610102610263366004610fdb565b6108ee565b34801561027457600080fd5b506033546001600160a01b03166101c2565b34801561029257600080fd5b506101026102a1366004610fdb565b610918565b3480156102b257600080fd5b506102bc60695481565b604051908152602001610131565b3480156102d657600080fd5b506101026102e5366004610fdb565b610a4a565b3480156102f657600080fd5b5061010261030536600461108f565b610ac3565b34801561031657600080fd5b50610124610ccc565b336000908152606b602090815260408083206001600160a01b0387168452909152812080548490811061036257634e487b7160e01b600052603260045260246000fd5b60009182526020909120600590910201600481015490915060ff16156103cf5760405162461bcd60e51b815260206004820152601860248201527f4c6f636b20686173206265656e207465726d696e61746564000000000000000060448201526064015b60405180910390fd5b80546001600160a01b031633146104385760405162461bcd60e51b815260206004820152602760248201527f4f6e6c7920746865206c6f636b206f776e65722063616e20657874656e6420746044820152666865206c6f636b60c81b60648201526084016103c6565b4282116104575760405162461bcd60e51b81526004016103c6906111cd565b600381018290558054604080516001600160a01b039283168152918616602083015281018390527f1c96e331bccd226df98fd6657b7e827834bb9c0c95e3df457c0178fe170dc30a9060600160405180910390a150505050565b6001600160a01b038083166000908152606b602090815260408083209385168352928152828220805484518184028101840190955280855260609493919290919084015b828210156105665760008481526020908190206040805160a0810182526005860290920180546001600160a01b03908116845260018083015490911684860152600282015492840192909252600381015460608401526004015460ff161515608083015290835290920191016104f5565b5050505090505b92915050565b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b038416906323b872dd90606401602060405180830381600087803b1580156105c157600080fd5b505af11580156105d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f9919061106f565b6106385760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b60448201526064016103c6565b60695434101561067e5760405162461bcd60e51b81526020600482015260116024820152702332b29036bab9ba103132903830b4b21760791b60448201526064016103c6565b42811161069d5760405162461bcd60e51b81526004016103c6906111cd565b6040805160a081018252338082526001600160a01b03868116602080850182815285870189815260608701898152600060808901818152978152606b855289812095815294845297842080546001808201835591865293909420875160059094020180546001600160a01b031990811694871694909417815591519382018054909316939094169290921790559051600282015592516003840155516004909201805460ff19169215159290921790915560655461075d90606690610e20565b5060658054600090815260686020908152604091829020845181546001600160a01b03199081166001600160a01b03928316178355928601516001808401805490951691909216179092559184015160028301556060840151600383015560808401516004909201805460ff19169215159290921790915590546107e091611210565b606555606a546040516001600160a01b03909116903480156108fc02916000818181858888f1935050505015801561081c573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810185905290810183905233907fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7906060015b60405180910390a250505050565b606b602052826000526040600020602052816000526040600020818154811061089857600080fd5b6000918252602090912060059091020180546001820154600283015460038401546004909401546001600160a01b039384169750929091169450925060ff1685565b6108e2610e33565b6108ec6000610e8d565b565b6108f6610e33565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16158080156109385750600054600160ff909116105b806109525750303b158015610952575060005460ff166001145b6109b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103c6565b6000805460ff1916600117905580156109d8576000805461ff0019166101001790555b6109e0610edf565b606a80546001600160a01b0319166001600160a01b03841617905560006069558015610a46576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b610a52610e33565b6001600160a01b038116610ab75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103c6565b610ac081610e8d565b50565b336000908152606b602090815260408083206001600160a01b03861684529091528120805483908110610b0657634e487b7160e01b600052603260045260246000fd5b906000526020600020906005020190508060030154421015610b6a5760405162461bcd60e51b815260206004820152601960248201527f4c6f636b20686173206e6f742065787069726564207965742e0000000000000060448201526064016103c6565b80546001600160a01b03163314610bd15760405162461bcd60e51b815260206004820152602560248201527f53656e646572206d75737420626520746865206f776e6572206f6620746865206044820152643637b1b59760d91b60648201526084016103c6565b60028101805460009091556004808301805460ff19166001908117909155830154835460405163a9059cbb60e01b81526001600160a01b039182169381019390935260248301849052169063a9059cbb90604401602060405180830381600087803b158015610c3f57600080fd5b505af1158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c77919061106f565b5060018201546002830154604080516001600160a01b0390931683526020830191909152429082015233907ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb56790606001610862565b60606000610cda6066610f0e565b67ffffffffffffffff811115610d0057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610d5957816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181610d1e5790505b50905060005b610d696066610f0e565b811015610e1a5760686000610d7f606684610f18565b81526020808201929092526040908101600020815160a08101835281546001600160a01b03908116825260018301541693810193909352600281015491830191909152600381015460608301526004015460ff16151560808201528251839083908110610dfc57634e487b7160e01b600052603260045260246000fd5b60200260200101819052508080610e1290611228565b915050610d5f565b50905090565b6000610e2c8383610f24565b9392505050565b6033546001600160a01b031633146108ec5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610f065760405162461bcd60e51b81526004016103c690611182565b6108ec610f73565b600061056d825490565b6000610e2c8383610fa3565b6000818152600183016020526040812054610f6b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561056d565b50600061056d565b600054610100900460ff16610f9a5760405162461bcd60e51b81526004016103c690611182565b6108ec33610e8d565b6000826000018281548110610fc857634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b600060208284031215610fec578081fd5b8135610e2c81611259565b60008060408385031215611009578081fd5b823561101481611259565b9150602083013561102481611259565b809150509250929050565b600080600060608486031215611043578081fd5b833561104e81611259565b9250602084013561105e81611259565b929592945050506040919091013590565b600060208284031215611080578081fd5b81518015158114610e2c578182fd5b600080604083850312156110a1578182fd5b82356110ac81611259565b946020939093013593505050565b6000806000606084860312156110ce578283fd5b83356110d981611259565b95602085013595506040909401359392505050565b6000602082840312156110ff578081fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b8281101561117557815180516001600160a01b03908116865287820151168786015285810151868601526060808201519086015260809081015115159085015260a09093019290850190600101611123565b5091979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526023908201527f4e6577206c6f636b2074696d65206d75737420626520696e207468652066757460408201526275726560e81b606082015260800190565b6000821982111561122357611223611243565b500190565b600060001982141561123c5761123c611243565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610ac057600080fdfea2646970667358221220ca52c3b0e01449e690ae4b3c0192c04a9fcc61625cf0c3640798beb9e910e6c064736f6c63430008020033