60806040526a01a784379d99db4200000060075560006008553480156200002557600080fd5b50604051806040016040528060048152602001635045504560e01b8152506040518060400160405280600781526020016615d0531350549560ca1b8152506200007d62000077620000c060201b60201c565b620000c4565b60046200008b838262000516565b5060056200009a828262000516565b505050620000ba336a52b7d2dcc80cd2e40000006200011460201b60201c565b6200060a565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620001705760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200017e600083836200020b565b8060036000828254620001929190620005e2565b90915550506001600160a01b03821660009081526001602052604081208054839290620001c1908490620005e2565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166000908152600a602052604090205460ff161580156200024e57506001600160a01b0383166000908152600a602052604090205460ff16155b6200028a5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015260640162000167565b6000546001600160a01b03838116911614801590620002b757506000546001600160a01b03848116911614155b156200031a576a01a784379d99db420000008111156200031a5760405162461bcd60e51b815260206004820152601360248201527f4920444f4e54205448494e4b20534f204d522e00000000000000000000000000604482015260640162000167565b6009546001600160a01b0316620003a8576000546001600160a01b03848116911614806200035557506000546001600160a01b038381169116145b620003a35760405162461bcd60e51b815260206004820152601660248201527f74726164696e67206973206e6f74207374617274656400000000000000000000604482015260640162000167565b505050565b60065460ff168015620003c857506009546001600160a01b038481169116145b15620003a35760075481620003f2846001600160a01b031660009081526001602052604090205490565b620003fe9190620005e2565b111580156200043b5750600854816200042c846001600160a01b031660009081526001602052604090205490565b620004389190620005e2565b10155b620003a35760405162461bcd60e51b8152602060048201526006602482015265119bdc989a5960d21b604482015260640162000167565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200049d57607f821691505b602082108103620004be57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a357600081815260208120601f850160051c81016020861015620004ed5750805b601f850160051c820191505b818110156200050e57828155600101620004f9565b505050505050565b81516001600160401b0381111562000532576200053262000472565b6200054a8162000543845462000488565b84620004c4565b602080601f831160018114620005825760008415620005695750858301515b600019600386901b1c1916600185901b1785556200050e565b600085815260208120601f198616915b82811015620005b35788860151825594840194600190910190840162000592565b5085821015620005d25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200060457634e487b7160e01b600052601160045260246000fd5b92915050565b611327806200061a6000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806349bd5a5e116100e35780638da5cb5b1161008c578063a9059cbb11610066578063a9059cbb14610331578063dd62ed3e14610344578063f2fde38b1461037d57600080fd5b80638da5cb5b1461030557806395d89b4114610316578063a457c2d71461031e57600080fd5b80637d1db4a5116100bd5780637d1db4a5146102dd578063860a32ec146102ef57806389f9a1d3146102fc57600080fd5b806349bd5a5e1461028157806370a08231146102ac578063715018a6146102d557600080fd5b806323b872dd116101455780633aa633aa1161011f5780633aa633aa14610246578063404e51291461025b57806342966c681461026e57600080fd5b806323b872dd14610211578063313ce56714610224578063395093511461023357600080fd5b806316c021291161017657806316c02129146101d357806318160ddd146101f65780631ab99e121461020857600080fd5b806306fdde0314610192578063095ea7b3146101b0575b600080fd5b61019a610390565b6040516101a79190611071565b60405180910390f35b6101c36101be3660046110f9565b610422565b60405190151581526020016101a7565b6101c36101e1366004611123565b600a6020526000908152604090205460ff1681565b6003545b6040519081526020016101a7565b6101fa60085481565b6101c361021f366004611145565b610439565b604051601281526020016101a7565b6101c36102413660046110f9565b6104fd565b610259610254366004611191565b610539565b005b6102596102693660046111d3565b6105e6565b61025961027c366004611206565b61066b565b600954610294906001600160a01b031681565b6040516001600160a01b0390911681526020016101a7565b6101fa6102ba366004611123565b6001600160a01b031660009081526001602052604090205490565b610259610678565b6101fa6a01a784379d99db4200000081565b6006546101c39060ff1681565b6101fa60075481565b6000546001600160a01b0316610294565b61019a6106de565b6101c361032c3660046110f9565b6106ed565b6101c361033f3660046110f9565b61079e565b6101fa61035236600461121f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61025961038b366004611123565b6107ab565b60606004805461039f90611249565b80601f01602080910402602001604051908101604052809291908181526020018280546103cb90611249565b80156104185780601f106103ed57610100808354040283529160200191610418565b820191906000526020600020905b8154815290600101906020018083116103fb57829003601f168201915b5050505050905090565b600061042f33848461088a565b5060015b92915050565b60006104468484846109e3565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156104e55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6104f2853385840361088a565b506001949350505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161042f9185906105349086906112cb565b61088a565b6000546001600160a01b031633146105935760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6006805460ff191694151594909417909355600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039390931692909217909155600755600855565b6000546001600160a01b031633146106405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6106753382610c06565b50565b6000546001600160a01b031633146106d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6106dc6000610d94565b565b60606005805461039f90611249565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156107875760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104dc565b610794338585840361088a565b5060019392505050565b600061042f3384846109e3565b6000546001600160a01b031633146108055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dc565b6001600160a01b0381166108815760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104dc565b61067581610d94565b6001600160a01b0383166109055760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104dc565b6001600160a01b0382166109815760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104dc565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610a5f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104dc565b6001600160a01b038216610adb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104dc565b610ae6838383610dfc565b6001600160a01b03831660009081526001602052604090205481811015610b755760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104dc565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610bac9084906112cb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bf891815260200190565b60405180910390a350505050565b6001600160a01b038216610c825760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104dc565b610c8e82600083610dfc565b6001600160a01b03821660009081526001602052604090205481811015610d1d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104dc565b6001600160a01b0383166000908152600160205260408120838303905560038054849290610d4c9084906112de565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109d6565b505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000908152600a602052604090205460ff16158015610e3e57506001600160a01b0383166000908152600a602052604090205460ff16155b610e8a5760405162461bcd60e51b815260206004820152600b60248201527f426c61636b6c697374656400000000000000000000000000000000000000000060448201526064016104dc565b6000546001600160a01b03838116911614801590610eb657506000546001600160a01b03848116911614155b15610f16576a01a784379d99db42000000811115610f165760405162461bcd60e51b815260206004820152601360248201527f4920444f4e54205448494e4b20534f204d522e0000000000000000000000000060448201526064016104dc565b6009546001600160a01b0316610f9b576000546001600160a01b0384811691161480610f4f57506000546001600160a01b038381169116145b610d8f5760405162461bcd60e51b815260206004820152601660248201527f74726164696e67206973206e6f7420737461727465640000000000000000000060448201526064016104dc565b60065460ff168015610fba57506009546001600160a01b038481169116145b15610d8f5760075481610fe2846001600160a01b031660009081526001602052604090205490565b610fec91906112cb565b11158015611025575060085481611018846001600160a01b031660009081526001602052604090205490565b61102291906112cb565b10155b610d8f5760405162461bcd60e51b815260206004820152600660248201527f466f72626964000000000000000000000000000000000000000000000000000060448201526064016104dc565b600060208083528351808285015260005b8181101561109e57858101830151858201604001528201611082565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b80356001600160a01b03811681146110f457600080fd5b919050565b6000806040838503121561110c57600080fd5b611115836110dd565b946020939093013593505050565b60006020828403121561113557600080fd5b61113e826110dd565b9392505050565b60008060006060848603121561115a57600080fd5b611163846110dd565b9250611171602085016110dd565b9150604084013590509250925092565b803580151581146110f457600080fd5b600080600080608085870312156111a757600080fd5b6111b085611181565b93506111be602086016110dd565b93969395505050506040820135916060013590565b600080604083850312156111e657600080fd5b6111ef836110dd565b91506111fd60208401611181565b90509250929050565b60006020828403121561121857600080fd5b5035919050565b6000806040838503121561123257600080fd5b61123b836110dd565b91506111fd602084016110dd565b600181811c9082168061125d57607f821691505b602082108103611296577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156104335761043361129c565b818103818111156104335761043361129c56fea264697066735822122095b978d9bf0a5c9fb6d016fd13d690219d69315af53c1946023d95ddb67a0ac464736f6c63430008130033