60806040523480156200001157600080fd5b506040516200101a3803806200101a8339810160408190526200003491620001db565b604080518082018252600980825268434f504550494c4c5360b81b6020808401829052845180860190955291845290830152906003620000758382620002b7565b506004620000848282620002b7565b505050620000c3826200009c620000ee60201b60201c565b620000ac9060ff16600a62000498565b620000bd90641949da4cc8620004ad565b620000f3565b620000e681620000d66012600a62000498565b620000bd906352a87f38620004ad565b5050620004dd565b601290565b6001600160a01b0382166200014e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620001629190620004c7565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b80516001600160a01b0381168114620001d657600080fd5b919050565b60008060408385031215620001ef57600080fd5b620001fa83620001be565b91506200020a60208401620001be565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200023e57607f821691505b6020821081036200025f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b957600081815260208120601f850160051c810160208610156200028e5750805b601f850160051c820191505b81811015620002af578281556001016200029a565b505050505050565b81516001600160401b03811115620002d357620002d362000213565b620002eb81620002e4845462000229565b8462000265565b602080601f8311600181146200032357600084156200030a5750858301515b600019600386901b1c1916600185901b178555620002af565b600085815260208120601f198616915b82811015620003545788860151825594840194600190910190840162000333565b5085821015620003735787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003da578160001904821115620003be57620003be62000383565b80851615620003cc57918102915b93841c93908002906200039e565b509250929050565b600082620003f35750600162000492565b81620004025750600062000492565b81600181146200041b5760028114620004265762000446565b600191505062000492565b60ff8411156200043a576200043a62000383565b50506001821b62000492565b5060208310610133831016604e8410600b84101617156200046b575081810a62000492565b62000477838362000399565b80600019048211156200048e576200048e62000383565b0290505b92915050565b6000620004a68383620003e2565b9392505050565b808202811582820484141762000492576200049262000383565b8082018082111562000492576200049262000383565b610b2d80620004ed6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101bd578063a457c2d7146101c5578063a9059cbb146101d8578063dd62ed3e146101eb57600080fd5b806342966c681461016c57806370a082311461018157806379cc6790146101aa57600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a578063395093511461015957600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610224565b6040516100f9919061095e565b60405180910390f35b6101156101103660046109c8565b6102b6565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b6101156101453660046109f2565b6102d0565b604051601281526020016100f9565b6101156101673660046109c8565b6102f4565b61017f61017a366004610a2e565b610333565b005b61012961018f366004610a47565b6001600160a01b031660009081526020819052604090205490565b61017f6101b83660046109c8565b610340565b6100ec610359565b6101156101d33660046109c8565b610368565b6101156101e63660046109c8565b610417565b6101296101f9366004610a69565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60606003805461023390610a9c565b80601f016020809104026020016040519081016040528092919081815260200182805461025f90610a9c565b80156102ac5780601f10610281576101008083540402835291602001916102ac565b820191906000526020600020905b81548152906001019060200180831161028f57829003601f168201915b5050505050905090565b6000336102c4818585610425565b60019150505b92915050565b6000336102de85828561057e565b6102e9858585610610565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906102c4908290869061032e908790610ad6565b610425565b61033d33826107fd565b50565b61034b82338361057e565b61035582826107fd565b5050565b60606004805461023390610a9c565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561040a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102e98286868403610425565b6000336102c4818585610610565b6001600160a01b0383166104a05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610401565b6001600160a01b03821661051c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610401565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461060a57818110156105fd5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610401565b61060a8484848403610425565b50505050565b6001600160a01b03831661068c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610401565b6001600160a01b0382166107085760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610401565b6001600160a01b038316600090815260208190526040902054818110156107975760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610401565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361060a565b6001600160a01b0382166108795760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610401565b6001600160a01b038216600090815260208190526040902054818110156109085760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610401565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610571565b600060208083528351808285015260005b8181101561098b5785810183015185820160400152820161096f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109c357600080fd5b919050565b600080604083850312156109db57600080fd5b6109e4836109ac565b946020939093013593505050565b600080600060608486031215610a0757600080fd5b610a10846109ac565b9250610a1e602085016109ac565b9150604084013590509250925092565b600060208284031215610a4057600080fd5b5035919050565b600060208284031215610a5957600080fd5b610a62826109ac565b9392505050565b60008060408385031215610a7c57600080fd5b610a85836109ac565b9150610a93602084016109ac565b90509250929050565b600181811c90821680610ab057607f821691505b602082108103610ad057634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102ca57634e487b7160e01b600052601160045260246000fdfea26469706673582212203b7e5e511e6ff5818613f8c4b1c7ac31ce2d86b69e541fbc7c23cccba0127cd264736f6c63430008110033000000000000000000000000a46cdf5a59bba669e5c031a7c8fdf493364b61c00000000000000000000000005eff0eabc6ed78648050c0ad4a50d8b5f61c3983