0x6080604052600280546001600160a01b03191673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc217905534801561003657600080fd5b50600080546001600160a01b031916737bd8586e77a3cb75322fd678280da96bc6345a8a9081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b031916737bd8586e77a3cb75322fd678280da96bc6345a8a17905561131c806100c16000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b146101165780639e5d4c4914610129578063f2fde38b1461014a578063f4fa891d1461015d578063fa461e331461017057600080fd5b80633fc8cef3146100a35780634543f79e146100d357806377432b8c146100e85780637939d89e146100f0578063797df80914610103575b600080fd5b6002546100b6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100e66100e1366004610d4d565b610183565b005b6100e6610232565b6100e66100fe366004610d4d565b61028b565b6100e6610111366004610d71565b6102dc565b6000546100b6906001600160a01b031681565b61013c610137366004610e1c565b61063f565b6040516100ca929190610f1d565b6100e6610158366004610d4d565b6106d5565b6100e661016b366004610d71565b61074a565b6100e661017e366004610f40565b610aa0565b6000546001600160a01b031633146101b65760405162461bcd60e51b81526004016101ad90610fc0565b60405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156101fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102219190610fe6565b905061022e823383610cb1565b5050565b6000546001600160a01b0316331461025c5760405162461bcd60e51b81526004016101ad90610fc0565b6040514790339082156108fc029083906000818181858888f1935050505015801561022e573d6000803e3d6000fd5b6000546001600160a01b031633146102b55760405162461bcd60e51b81526004016101ad90610fc0565b600180546001600160a01b0319166001600160a01b0383161790556102d9816106d5565b50565b600160005a6040516370a0823160e01b81523060048201529091506000906001600160a01b038716906370a0823190602401602060405180830381865afa15801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f9190610fe6565b9050600080896001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b69190611024565b5050505050915091506000808a6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610400573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104249190611024565b5050505050915091508060020b8360020b121561044357999a99909290915b886001600160a01b03168a6001600160a01b03161115610461579798975b60006040518060a001604052808e6001600160a01b031681526020018d6001600160a01b031681526020018c6001600160a01b031681526020018b6001600160a01b0316815260200189151581525090508c6001600160a01b031663128acb08308a8c87866040516020016104d691906110c3565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161050595949392919061110c565b60408051808303816000875af1158015610523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105479190611152565b505060003a5a610557908a61118c565b61056191906111a5565b61056b90886111bc565b6040516370a0823160e01b815230600482015290915081906001600160a01b038e16906370a0823190602401602060405180830381865afa1580156105b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d89190610fe6565b1161062f5760405162461bcd60e51b815260206004820152602160248201527f746f6b656e302070726f66697420646f6573206e6f74206578636565642067616044820152607360f81b60648201526084016101ad565b5050505050505050505050505050565b600080546060906001600160a01b0316331461066d5760405162461bcd60e51b81526004016101ad90610fc0565b846001600160a01b0316848460405161068691906111cf565b60006040518083038185875af1925050503d80600081146106c3576040519150601f19603f3d011682016040523d82523d6000602084013e6106c8565b606091505b5090969095509350505050565b6000546001600160a01b031633146106ff5760405162461bcd60e51b81526004016101ad90610fc0565b600080546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000805a6040516370a0823160e01b81523060048201529091506000906001600160a01b038616906370a0823190602401602060405180830381865afa158015610798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bc9190610fe6565b9050600080896001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156107ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108239190611024565b5050505050915091506000808a6001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa15801561086d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108919190611024565b5050505050915091508060020b8360020b13156108b057999a99909290915b886001600160a01b03168a6001600160a01b031611156108ce579798975b60006040518060a001604052808e6001600160a01b031681526020018d6001600160a01b031681526020018c6001600160a01b031681526020018b6001600160a01b0316815260200189151581525090508c6001600160a01b031663128acb08308a8c878660405160200161094391906110c3565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161097295949392919061110c565b60408051808303816000875af1158015610990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b49190611152565b505060003a5a6109c4908a61118c565b6109ce91906111a5565b6109d890886111bc565b6002546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a499190610fe6565b1161062f5760405162461bcd60e51b815260206004820152602160248201527f746f6b656e312070726f66697420646f6573206e6f74206578636565642067616044820152607360f81b60648201526084016101ad565b6000610aae828401846111eb565b80519091506001600160a01b03163303610bf657608081015160208201519015906001600160a01b031663128acb08308360008a12610af557610af089611283565b610afe565b610afe8a611283565b85610b2757610b22600173fffd8963efd1fc6a506488495d951d5263988d2661129f565b610b37565b610b376401000276a360016112c6565b87604051602001610b4891906110c3565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610b7795949392919061110c565b60408051808303816000875af1158015610b95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb99190611152565b50506000861315610bd857610bd382604001513388610cb1565b610bf0565b6000851315610bf057610bf082606001513387610cb1565b50610caa565b60208101516001600160a01b03163303610c71576000851315610c4057806080015115610c3157610c2c81606001513387610cb1565b610caa565b610c2c81604001513387610cb1565b6000841315610c2c57806080015115610c6257610c2c81606001513386610cb1565b610c2c81604001513386610cb1565b60405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21039b2b73232b960911b60448201526064016101ad565b5050505050565b600060405163a9059cbb60e01b81526001600160a01b0384166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610d325760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016101ad565b50505050565b6001600160a01b03811681146102d957600080fd5b600060208284031215610d5f57600080fd5b8135610d6a81610d38565b9392505050565b600080600080600060a08688031215610d8957600080fd5b8535610d9481610d38565b94506020860135610da481610d38565b93506040860135610db481610d38565b92506060860135610dc481610d38565b949793965091946080013592915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e1457610e14610dd5565b604052919050565b600080600060608486031215610e3157600080fd5b8335610e3c81610d38565b92506020848101359250604085013567ffffffffffffffff80821115610e6157600080fd5b818701915087601f830112610e7557600080fd5b813581811115610e8757610e87610dd5565b610e99601f8201601f19168501610deb565b91508082528884828501011115610eaf57600080fd5b80848401858401376000848284010152508093505050509250925092565b60005b83811015610ee8578181015183820152602001610ed0565b50506000910152565b60008151808452610f09816020860160208601610ecd565b601f01601f19169290920160200192915050565b8215158152604060208201526000610f386040830184610ef1565b949350505050565b60008060008060608587031215610f5657600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610f7c57600080fd5b818701915087601f830112610f9057600080fd5b813581811115610f9f57600080fd5b886020828501011115610fb157600080fd5b95989497505060200194505050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b600060208284031215610ff857600080fd5b5051919050565b805161ffff8116811461101157600080fd5b919050565b80151581146102d957600080fd5b600080600080600080600060e0888a03121561103f57600080fd5b875161104a81610d38565b8097505060208801518060020b811461106257600080fd5b955061107060408901610fff565b945061107e60608901610fff565b935061108c60808901610fff565b925060a088015160ff811681146110a257600080fd5b60c08901519092506110b381611016565b8091505092959891949750929550565b81516001600160a01b0390811682526020808401518216908301526040808401518216908301526060808401519091169082015260809182015115159181019190915260a00190565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a06080820181905260009061114790830184610ef1565b979650505050505050565b6000806040838503121561116557600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b8181038181111561119f5761119f611176565b92915050565b808202811582820484141761119f5761119f611176565b8082018082111561119f5761119f611176565b600082516111e1818460208701610ecd565b9190910192915050565b600060a082840312156111fd57600080fd5b60405160a0810181811067ffffffffffffffff8211171561122057611220610dd5565b604052823561122e81610d38565b8152602083013561123e81610d38565b6020820152604083013561125181610d38565b6040820152606083013561126481610d38565b6060820152608083013561127781611016565b60808201529392505050565b6000600160ff1b820161129857611298611176565b5060000390565b6001600160a01b038281168282160390808211156112bf576112bf611176565b5092915050565b6001600160a01b038181168382160190808211156112bf576112bf61117656fea26469706673582212206a3617a5350f479a8f88252b3e9b18fe59929afdc96101771eea79c2cb9eb68b64736f6c63430008140033