0x608060405266470de4df82000060015534801561001b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a81b0319163317600160a01b179055612a04806100846000396000f3fe608060405260043610620000ff5760003560e01c806383a1364a1162000095578063b3f006741162000060578063b3f0067414620003b3578063cde7cced14620003d5578063efdcd97414620003ec578063f2fde38b146200041157600080fd5b806383a1364a146200027f5780638da5cb5b14620002b3578063a28a1f7114620002e7578063a6817117146200032857600080fd5b80634c7ababd11620000d65780634c7ababd14620001e75780635b6a9eb4146200020e57806364e8921114620002355780636a5dab9f146200025a57600080fd5b806322df78d0146200010c57806326f3ed2b146200013c57806336ed16e2146200017257600080fd5b366200010757005b600080fd5b3480156200011957600080fd5b50600254600160a01b900460ff1660405190151581526020015b60405180910390f35b3480156200014957600080fd5b50600254600160a81b900464ffffffffff1660405164ffffffffff909116815260200162000133565b3480156200017f57600080fd5b50620001976200019136600462001232565b62000436565b60408051981515895264ffffffffff90971660208901526001600160a01b0395861696880196909652939092166060860152608085015260a084015260c083015260e08201526101000162000133565b348015620001f457600080fd5b506200020c620002063660046200126f565b620004f7565b005b3480156200021b57600080fd5b506200022660015481565b60405190815260200162000133565b3480156200024257600080fd5b506200020c62000254366004620012d4565b62000898565b3480156200026757600080fd5b506200020c62000279366004620012fd565b620008ca565b3480156200028c57600080fd5b50620002a46200029e3660046200131d565b62000915565b6040516200013391906200133d565b348015620002c057600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200162000133565b348015620002f457600080fd5b50620002ce6200030636600462001232565b64ffffffffff166000908152600360205260409020546001600160a01b031690565b3480156200033557600080fd5b506200034d6200034736600462001232565b620009b1565b604080519a15158b5264ffffffffff998a1660208c01526001600160a01b03988916908b015295871660608a015293861660808901529190941660a087015292841660c08601529190921660e08401526101008301526101208201526101400162000133565b348015620003c057600080fd5b50600254620002ce906001600160a01b031681565b6200020c620003e63660046200138a565b62000a7b565b348015620003f957600080fd5b506200020c6200040b3660046200131d565b620010b1565b3480156200041e57600080fd5b506200020c620004303660046200131d565b62001158565b600080600080600080600080600360008a64ffffffffff1664ffffffffff16815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663af74e6296040518163ffffffff1660e01b815260040161010060405180830381865afa158015620004b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004dc9190620013d1565b97509750975097509750975097509750919395975091939597565b64ffffffffff84166000908152600360205260409020546001600160a01b0316336001600160a01b0316146200058c5760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c7920746865206c6f636b657220636f6e74726163742063616e2063616c60448201526e36103a3434b990333ab731ba34b7b760891b60648201526084015b60405180910390fd5b806001600160a01b0316826001600160a01b0316146200078a5760005b6001600160a01b03831660009081526004602052604090205481101562000788576001600160a01b0383166000908152600460205260409020805464ffffffffff871691908390811062000601576200060162001460565b90600052602060002090600691828204019190066005029054906101000a900464ffffffffff1664ffffffffff160362000773576001600160a01b038316600090815260046020526040902080546200065d906001906200148c565b8154811062000670576200067062001460565b90600052602060002090600691828204019190066005029054906101000a900464ffffffffff1660046000856001600160a01b03166001600160a01b031681526020019081526020016000208281548110620006d057620006d062001460565b90600052602060002090600691828204019190066005026101000a81548164ffffffffff021916908364ffffffffff16021790555060046000846001600160a01b03166001600160a01b031681526020019081526020016000208054806200073c576200073c620014a8565b60019003818190600052602060002090600691828204019190066005026101000a81549064ffffffffff0219169055905562000788565b806200077f81620014be565b915050620005a9565b505b6000805b6001600160a01b03851660009081526004602052604090205481101562000839576001600160a01b0385166000908152600460205260409020805464ffffffffff8816919083908110620007e657620007e662001460565b90600052602060002090600691828204019190066005029054906101000a900464ffffffffff1664ffffffffff160362000824576001915062000839565b806200083081620014be565b9150506200078e565b508062000891576001600160a01b038416600090815260046020908152604082208054600181018255908352912060068083049091018054919092066005026101000a64ffffffffff81810219909216918816021790555b5050505050565b6000546001600160a01b03163314620008c55760405162461bcd60e51b81526004016200058390620014da565b600155565b6000546001600160a01b03163314620008f75760405162461bcd60e51b81526004016200058390620014da565b60028054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b038116600090815260046020908152604091829020805483518184028101840190945280845260609392830182828015620009a557602002820191906000526020600020906000905b82829054906101000a900464ffffffffff1664ffffffffff1681526020019060050190602082600401049283019260010382029150808411620009655790505b50505050509050919050565b600080600080600080600080600080600360008c64ffffffffff1664ffffffffff16815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b0316634c02bf0b6040518163ffffffff1660e01b815260040161014060405180830381865afa15801562000a34573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a5a919062001522565b99509950995099509950995099509950995099509193959799509193959799565b600254600160a01b900460ff1662000ad65760405162461bcd60e51b815260206004820152601b60248201527f4c6f636b6572206372656174696f6e2069732064697361626c65640000000000604482015260640162000583565b60015434101562000b215760405162461bcd60e51b815260206004820152601460248201527313195cdcc81d1a185b881b5a5b88185b5bdd5b9d60621b604482015260640162000583565b60025460405134916001600160a01b03169082156108fc029083906000818181858888f1935050505015801562000b5c573d6000803e3d6000fd5b5060028054600091600160a81b90910464ffffffffff1690601562000b8183620015f8565b91906101000a81548164ffffffffff021916908364ffffffffff1602179055509050308162000bad3390565b878660405162000bbd9062001210565b6001600160a01b03958616815264ffffffffff94851660208201529285166040840152931660608201529116608082015260a001604051809103906000f08015801562000c0e573d6000803e3d6000fd5b5064ffffffffff8216600090815260036020526040902080546001600160a01b0319166001600160a01b0392831690811790915590869081166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b0391821660048201529085166024820152604481018990526064016020604051808303816000875af115801562000ca3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cc991906200161f565b5060046000336001600160a01b03166001600160a01b031681526020019081526020016000208390806001815401808255809150506001900390600052602060002090600691828204019190066005029091909190916101000a81548164ffffffffff021916908364ffffffffff16021790555060046000886001600160a01b03166001600160a01b031681526020019081526020016000208390806001815401808255809150506001900390600052602060002090600691828204019190066005029091909190916101000a81548164ffffffffff021916908364ffffffffff16021790555060046000836001600160a01b03166001600160a01b031681526020019081526020016000208390806001815401808255809150506001900390600052602060002090600691828204019190066005029091909190916101000a81548164ffffffffff021916908364ffffffffff1602179055506000806000600360008764ffffffffff1664ffffffffff16815260200190815260200160002060009054906101000a90046001600160a01b03166001600160a01b031663af74e6296040518163ffffffff1660e01b815260040161010060405180830381865afa15801562000e9c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ec29190620013d1565b5050505093509350509250821562000fbb5760046000836001600160a01b03166001600160a01b031681526020019081526020016000208690806001815401808255809150506001900390600052602060002090600691828204019190066005029091909190916101000a81548164ffffffffff021916908364ffffffffff16021790555060046000826001600160a01b03166001600160a01b031681526020019081526020016000208690806001815401808255809150506001900390600052602060002090600691828204019190066005029091909190916101000a81548164ffffffffff021916908364ffffffffff1602179055505b806001600160a01b0316826001600160a01b03168b6001600160a01b03167f531cba00a411ade37b4ca8175d92c94149f19536bd8e5a83d581aa7f040d192e89620010033390565b6040516370a0823160e01b81526001600160a01b038c811660048301528b16906370a0823190602401602060405180830381865afa1580156200104a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200107091906200163f565b6040805164ffffffffff94851681526001600160a01b039093166020840152820152908d16606082015260800160405180910390a450505050505050505050565b6000546001600160a01b03163314620010de5760405162461bcd60e51b81526004016200058390620014da565b6001600160a01b038116620011365760405162461bcd60e51b815260206004820152601b60248201527f4e65772052656365697665722063616e6e6f74206265207a65726f0000000000604482015260640162000583565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314620011855760405162461bcd60e51b81526004016200058390620014da565b620011908162001193565b50565b6000546001600160a01b03163314620011c05760405162461bcd60e51b81526004016200058390620014da565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611375806200165a83390190565b64ffffffffff811681146200119057600080fd5b6000602082840312156200124557600080fd5b813562001252816200121e565b9392505050565b6001600160a01b03811681146200119057600080fd5b600080600080608085870312156200128657600080fd5b843562001293816200121e565b93506020850135620012a58162001259565b92506040850135620012b78162001259565b91506060850135620012c98162001259565b939692955090935050565b600060208284031215620012e757600080fd5b5035919050565b80151581146200119057600080fd5b6000602082840312156200131057600080fd5b81356200125281620012ee565b6000602082840312156200133057600080fd5b8135620012528162001259565b6020808252825182820181905260009190848201906040850190845b818110156200137e57835164ffffffffff168352928401929184019160010162001359565b50909695505050505050565b600080600060608486031215620013a057600080fd5b8335620013ad8162001259565b9250602084013591506040840135620013c6816200121e565b809150509250925092565b600080600080600080600080610100898b031215620013ef57600080fd5b8851620013fc81620012ee565b60208a01519098506200140f816200121e565b60408a0151909750620014228162001259565b60608a0151909650620014358162001259565b60808a015160a08b015160c08c015160e0909c01519a9d999c50979a91999098919650945092505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115620014a257620014a262001476565b92915050565b634e487b7160e01b600052603160045260246000fd5b600060018201620014d357620014d362001476565b5060010190565b60208082526028908201527f4f6e6c7920746865206f776e65722063616e2065786563757465207468697320604082015267333ab731ba34b7b760c11b606082015260800190565b6000806000806000806000806000806101408b8d0312156200154357600080fd5b8a516200155081620012ee565b60208c0151909a5062001563816200121e565b60408c0151909950620015768162001259565b60608c0151909850620015898162001259565b60808c01519097506200159c8162001259565b60a08c0151909650620015af8162001259565b60c08c0151909550620015c2816200121e565b60e08c0151909450620015d5816200121e565b809350506101008b015191506101208b015190509295989b9194979a5092959850565b600064ffffffffff80831681810362001615576200161562001476565b6001019392505050565b6000602082840312156200163257600080fd5b81516200125281620012ee565b6000602082840312156200165257600080fd5b505191905056fe60806040523480156200001157600080fd5b506040516200137538038062001375833981016040819052620000349162000288565b600080546001600160a01b0319166001600160a01b03851617905582620000636000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3504264ffffffffff168164ffffffffff1611620001105760405162461bcd60e51b815260206004820152602160248201527f556e6c6f636b2074696d65206d75737420626520696e207468652066757475726044820152606560f81b606482015260840160405180910390fd5b600180546001600160a01b038781167fffffffffffff0000000000ff000000000000000000000000000000000000000090921691909117600160a81b64ffffffffff8881169190910291909117909255600280546001600160a01b031916858316908117909155600380549287166001600160c81b031990931692909217600160a01b428516021764ffffffffff60c81b1916600160c81b93851693909302929092179055604051630f24ca7d60e01b815260048101919091527346b25d849f5ac645cd3b418ba25f38c65f72dcce90630f24ca7d90602401602060405180830381865af415801562000207573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022d9190620002f8565b60018054911515600160a01b0260ff60a01b1990921691909117905550620003239350505050565b80516001600160a01b03811681146200026d57600080fd5b919050565b805164ffffffffff811681146200026d57600080fd5b600080600080600060a08688031215620002a157600080fd5b620002ac8662000255565b9450620002bc6020870162000272565b9350620002cc6040870162000255565b9250620002dc6060870162000255565b9150620002ec6080870162000272565b90509295509295909350565b6000602082840312156200030b57600080fd5b815180151581146200031c57600080fd5b9392505050565b61104280620003336000396000f3fe60806040526004361061008a5760003560e01c8063a0ef91df11610059578063a0ef91df14610174578063af74e62914610189578063b05fb26f146101ed578063d88e7f4e14610217578063f2fde38b1461023757600080fd5b80633ccfd60b146100965780634c02bf0b146100ad578063894760691461012c5780638da5cb5b1461014c57600080fd5b3661009157005b600080fd5b3480156100a257600080fd5b506100ab610257565b005b3480156100b957600080fd5b506100c2610408565b604080519a15158b5264ffffffffff998a1660208c01526001600160a01b03988916908b015295871660608a015293861660808901529190941660a087015292841660c08601529190921660e0840152610100830152610120820152610140015b60405180910390f35b34801561013857600080fd5b506100ab610147366004610d5b565b610505565b34801561015857600080fd5b506000546040516001600160a01b039091168152602001610123565b34801561018057600080fd5b506100ab6106f6565b34801561019557600080fd5b5061019e6107ba565b60408051981515895264ffffffffff90971660208901526001600160a01b0395861696880196909652939092166060860152608085015260a084015260c083015260e082015261010001610123565b3480156101f957600080fd5b50600154600160a01b900460ff166040519015158152602001610123565b34801561022357600080fd5b506100ab610232366004610d7f565b6108f9565b34801561024357600080fd5b506100ab610252366004610d5b565b610b62565b6000546001600160a01b0316331461028a5760405162461bcd60e51b815260040161028190610db9565b60405180910390fd5b600354600160f01b900460ff16156102b45760405162461bcd60e51b815260040161028190610e01565b6003805460ff60f01b1916600160f01b179081905564ffffffffff600160c81b90910481164290911610156103355760405162461bcd60e51b815260206004820152602160248201527f5761697420756e74696c20756e6c6f636b54696d6520746f20776974686472616044820152607760f81b6064820152608401610281565b6002546001600160a01b031663a9059cbb6103586000546001600160a01b031690565b610360610b98565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156103ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103cf9190610e6b565b506040517f2610969932116214bd675dc19941eeba897ba78afe8423eaaa3046445eea28cd90600090a16003805460ff60f01b19169055565b60015460ff600160a01b8204169064ffffffffff600160a81b909104163060008080808080806104406000546001600160a01b031690565b6002546003549198506001600160a01b0390811697508116955064ffffffffff600160a01b820481169550600160c81b90910416925061047e610b98565b9150600260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f79190610e8d565b905090919293949596979899565b6000546001600160a01b0316331461052f5760405162461bcd60e51b815260040161028190610db9565b600354600160f01b900460ff16156105595760405162461bcd60e51b815260040161028190610e01565b6003805460ff60f01b1916600160f01b1790556002546001600160a01b03908116908216036105e65760405162461bcd60e51b815260206004820152603360248201527f557365202777697468647261772720746f2077697468647261772074686520706044820152723934b6b0b93c903637b1b5b2b2103a37b5b2b760691b6064820152608401610281565b806001600160a01b03811663a9059cbb6106086000546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa15801561064c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106709190610e8d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156106bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106df9190610e6b565b50506003805460ff60f01b1916905550565b905090565b6000546001600160a01b031633146107205760405162461bcd60e51b815260040161028190610db9565b600354600160f01b900460ff161561074a5760405162461bcd60e51b815260040161028190610e01565b6003805460ff60f01b1916600160f01b17905560006107716000546001600160a01b031690565b6040519091506001600160a01b038216904780156108fc02916000818181858888f193505050501580156107a9573d6000803e3d6000fd5b50506003805460ff60f01b19169055565b600154600090600160a81b810464ffffffffff1690829081908190819081908190600160a01b900460ff166107f257600097506108ef565b600254604051632590dc9d60e01b81526001600160a01b0390911660048201527346b25d849f5ac645cd3b418ba25f38c65f72dcce90632590dc9d9060240160c060405180830381865af492505050801561086a575060408051601f3d908101601f1916820190925261086791810190610ea6565b60015b6108db57610876610f04565b806308c379a00361089f575061088a610f5b565b8061089557506108a1565b60009850506108ef565b505b3d8080156108cb576040519150601f19603f3d011682016040523d82523d6000602084013e6108d0565b606091505b5060009850506108ef565b60019d50949a509298509096509450925090505b9091929394959697565b6000546001600160a01b031633146109235760405162461bcd60e51b815260040161028190610db9565b600354600160f01b900460ff161561094d5760405162461bcd60e51b815260040161028190610e01565b6003805460ff60f01b1916600160f01b17905564ffffffffff811615610a6e5760035464ffffffffff600160c81b90910481169082161080159061099f57504264ffffffffff168164ffffffffff1610155b610a115760405162461bcd60e51b815260206004820152603f60248201527f4e657720756e6c6f636b2074696d65206d75737420626520612066757475726560448201527f2074696d65206265796f6e64207468652070726576696f75732076616c7565006064820152608401610281565b6003805464ffffffffff60c81b1916600160c81b64ffffffffff8481168202929092179283905560405192041681527fd316ae9629b69e6caec00227e7056a9d6b297beb56bf61e651212156c716567e9060200160405180910390a15b81156107a9576000610a7e610b98565b6002549091506001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604481018690526064016020604051808303816000875af1158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190610e6b565b507f2a89b2e3d580398d6dc2db5e0f336b52602bbaa51afa9bb5cdf59239cf0d2bea81610b35610b98565b610b3f9190610fe5565b60405190815260200160405180910390a15050506003805460ff60f01b19169055565b6000546001600160a01b03163314610b8c5760405162461bcd60e51b815260040161028190610db9565b610b9581610c05565b50565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610be1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610e8d565b6000546001600160a01b03163314610c2f5760405162461bcd60e51b815260040161028190610db9565b6000546001600160a01b0316610c4482610ccc565b600154600354604051634c7ababd60e01b8152600160a81b830464ffffffffff1660048201526001600160a01b03858116602483015284811660448301529182166064820152911690634c7ababd90608401600060405180830381600087803b158015610cb057600080fd5b505af1158015610cc4573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610cf65760405162461bcd60e51b815260040161028190610db9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610b9557600080fd5b600060208284031215610d6d57600080fd5b8135610d7881610d46565b9392505050565b60008060408385031215610d9257600080fd5b82359150602083013564ffffffffff81168114610dae57600080fd5b809150509250929050565b60208082526028908201527f4f6e6c7920746865206f776e65722063616e2065786563757465207468697320604082015267333ab731ba34b7b760c11b606082015260800190565b60208082526044908201527f5472616e73666572696e67206973206c6f636b65642e205761697420666f722060408201527f7468652070726576696f7573207472616e73616374696f6e20746f20636f6d706060820152636c65746560e01b608082015260a00190565b600060208284031215610e7d57600080fd5b81518015158114610d7857600080fd5b600060208284031215610e9f57600080fd5b5051919050565b60008060008060008060c08789031215610ebf57600080fd5b8651610eca81610d46565b6020880151909650610edb81610d46565b6040880151606089015160808a015160a0909a0151989b929a5090989097909650945092505050565b600060033d1115610f1d5760046000803e5060005160e01c5b90565b601f8201601f1916810167ffffffffffffffff81118282101715610f5457634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d1015610f695790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715610f9957505050505090565b8285019150815181811115610fb15750505050505090565b843d8701016020828501011115610fcb5750505050505090565b610fda60208286010187610f20565b509095945050505050565b8181038181111561100657634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220fb990ff650cfbcd60c6fc2b57a0ff825b3db1bbe81b656ea41c4174449c12c6d64736f6c63430008120033a264697066735822122080d480cb77c003f10f9dc987f040aa2c3dc0fb1a466af1401d8dfbf4fab2c0a364736f6c63430008120033