608060405234801561000f575f80fd5b50604051610e20380380610e2083398101604081905261002e916101df565b826040518060400160405280600781526020016629a19026b7b7b760c91b81525060405180604001604052806002815260200161534360f01b815250816003908161007991906102b5565b50600461008682826102b5565b5050600580546001600160a01b0319166001600160a01b0384169081179091556040519091505f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100f2836100e384600a61046a565b6100ed908461047c565b6100fa565b5050506104a6565b6001600160a01b0382166101545760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546101659190610493565b90915550506001600160a01b0382165f9081526020819052604081208054839290610191908490610493565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b5f805f606084860312156101f1575f80fd5b83516001600160a01b0381168114610207575f80fd5b602085015160409095015190969495509392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061024657607f821691505b60208210810361026457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101da57805f5260205f20601f840160051c8101602085101561028f5750805b601f840160051c820191505b818110156102ae575f815560010161029b565b5050505050565b81516001600160401b038111156102ce576102ce61021e565b6102e2816102dc8454610232565b8461026a565b602080601f831160018114610315575f84156102fe5750858301515b5f19600386901b1c1916600185901b17855561036c565b5f85815260208120601f198616915b8281101561034357888601518255948401946001909101908401610324565b508582101561036057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156103c257815f19048211156103a8576103a8610374565b808516156103b557918102915b93841c939080029061038d565b509250929050565b5f826103d857506001610464565b816103e457505f610464565b81600181146103fa576002811461040457610420565b6001915050610464565b60ff84111561041557610415610374565b50506001821b610464565b5060208310610133831016604e8410600b8410161715610443575081810a610464565b61044d8383610388565b805f190482111561046057610460610374565b0290505b92915050565b5f61047583836103ca565b9392505050565b808202811582820484141761046457610464610374565b8082018082111561046457610464610374565b61096d806104b35f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c806370a082311161008857806395d89b411161006357806395d89b41146101a4578063a457c2d7146101ac578063a9059cbb146101bf578063dd62ed3e146101d2575f80fd5b806370a0823114610157578063715018a61461017f5780638da5cb5b14610189575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610122578063313ce567146101355780633950935114610144575b5f80fd5b6100d761020a565b6040516100e491906107de565b60405180910390f35b6101006100fb36600461082e565b61029a565b60405190151581526020016100e4565b6002545b6040519081526020016100e4565b610100610130366004610856565b6102b0565b604051601281526020016100e4565b61010061015236600461082e565b61035d565b61011461016536600461088f565b6001600160a01b03165f9081526020819052604090205490565b610187610398565b005b6005546040516001600160a01b0390911681526020016100e4565b6100d761043b565b6101006101ba36600461082e565b61044a565b6101006101cd36600461082e565b6104e2565b6101146101e03660046108af565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b606060038054610219906108e0565b80601f0160208091040260200160405190810160405280929190818152602001828054610245906108e0565b80156102905780601f1061026757610100808354040283529160200191610290565b820191905f5260205f20905b81548152906001019060200180831161027357829003601f168201915b5050505050905090565b5f6102a63384846104ee565b5060015b92915050565b5f6102bc848484610611565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156103455760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61035285338584036104ee565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916102a6918590610393908690610918565b6104ee565b6005546001600160a01b031633146103f25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161033c565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b606060048054610219906108e0565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156104cb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161033c565b6104d833858584036104ee565b5060019392505050565b5f6102a6338484610611565b6001600160a01b0383166105505760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161033c565b6001600160a01b0382166105b15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161033c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166106755760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161033c565b6001600160a01b0382166106d75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161033c565b6001600160a01b0383165f908152602081905260409020548181101561074e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161033c565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290610784908490610918565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107d091815260200190565b60405180910390a350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610829575f80fd5b919050565b5f806040838503121561083f575f80fd5b61084883610813565b946020939093013593505050565b5f805f60608486031215610868575f80fd5b61087184610813565b925061087f60208501610813565b9150604084013590509250925092565b5f6020828403121561089f575f80fd5b6108a882610813565b9392505050565b5f80604083850312156108c0575f80fd5b6108c983610813565b91506108d760208401610813565b90509250929050565b600181811c908216806108f457607f821691505b60208210810361091257634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156102aa57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220500ecee7852eaa5a7e27c458f3066de9038ae363650a78c63301b65b0e0e142564736f6c63430008190033000000000000000000000000f69ce754e35f466d365a207277eaab71128e1c94000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000001e8480