608060405234801561000f575f80fd5b50604080518082018252600981526810dc985e9e4810d85d60ba1b6020808301919091528251808401909352600783526610d4969650d05560ca1b9083015260015f5590600461005f8382610401565b50600561006c8282610401565b5050505f61007e61017160201b60201c565b600680546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100f573d4077d48fa30fb725065fea87f86e61e54b52e8b6b033b2e3c9fd0803ce8000000610175565b60076020527ffb8300561d0f5ac262cbb80ee52388e84c194edd9ed154294385a94a483c603a8054600160ff1991821681179092557313b327b306cbdf78f12f6c91b5501cc4f95c6bd35f527f5df47e8d5a5101037fc1c3553d19a762b8d2b1319c8b11e02233c1741a4c8ff4805490911690911790556104e0565b3390565b6b033b2e3c9fd0803ce80000008161018c60035490565b61019691906104bb565b11156101f35760405162461bcd60e51b815260206004820152602160248201527f45524332304361707065643a20636f696e20616d6f756e7420657863656564656044820152601960fa1b60648201526084015b60405180910390fd5b6101fd8282610201565b5050565b6001600160a01b0382166102575760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101ea565b6102625f83836102e8565b8060035f82825461027391906104bb565b90915550506001600160a01b0382165f908152600160205260408120805483929061029f9084906104bb565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6008546001600160a01b0390811690831603610365576001600160a01b0383165f9081526007602052604090205460ff166103655760405162461bcd60e51b815260206004820152601d60248201527f4372617a792043617420697320666f722068756d616e73206f6e6c792100000060448201526064016101ea565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061039257607f821691505b6020821081036103b057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561036557805f5260205f20601f840160051c810160208510156103db5750805b601f840160051c820191505b818110156103fa575f81556001016103e7565b5050505050565b81516001600160401b0381111561041a5761041a61036a565b61042e81610428845461037e565b846103b6565b6020601f821160018114610460575f83156104495750848201515b5f19600385901b1c1916600184901b1784556103fa565b5f84815260208120601f198516915b8281101561048f578785015182556020948501946001909201910161046f565b50848210156104ac57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b808201808211156104da57634e487b7160e01b5f52601160045260245ffd5b92915050565b610b67806104ed5f395ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806378051f4d11610088578063a457c2d711610063578063a457c2d7146101d1578063a9059cbb146101e4578063dd62ed3e146101f7578063f7e58a631461022f575f80fd5b806378051f4d146101995780638da5cb5b146101ae57806395d89b41146101c9575f80fd5b806323b872dd116100c357806323b872dd1461013c578063313ce5671461014f578063395093511461015e57806370a0823114610171575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610242565b6040516100fe919061098a565b60405180910390f35b61011a6101153660046109da565b6102d2565b60405190151581526020016100fe565b6003545b6040519081526020016100fe565b61011a61014a366004610a02565b6102e8565b604051601281526020016100fe565b61011a61016c3660046109da565b6103ae565b61012e61017f366004610a3c565b6001600160a01b03165f9081526001602052604090205490565b6101ac6101a7366004610a3c565b6103e4565b005b6006546040516001600160a01b0390911681526020016100fe565b6100f1610460565b61011a6101df3660046109da565b61046f565b61011a6101f23660046109da565b610509565b61012e610205366004610a55565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b6101ac61023d366004610a86565b610529565b60606004805461025190610abf565b80601f016020809104026020016040519081016040528092919081815260200182805461027d90610abf565b80156102c85780601f1061029f576101008083540402835291602001916102c8565b820191905f5260205f20905b8154815290600101906020018083116102ab57829003601f168201915b5050505050905090565b5f6102de3384846105ad565b5060015b92915050565b5f6102f16106d0565b6102fc848484610727565b6001600160a01b0384165f908152600260209081526040808320338452909152902054828110156103855760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61039985336103948685610b0b565b6105ad565b60019150506103a760015f55565b9392505050565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916102de918590610394908690610b1e565b6006546001600160a01b0316331461043e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161037c565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b60606005805461025190610abf565b335f9081526002602090815260408083206001600160a01b0386168452909152812054828110156104f05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161037c565b6104ff33856103948685610b0b565b5060019392505050565b5f6105126106d0565b61051d338484610727565b5060016102e260015f55565b6006546001600160a01b031633146105835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161037c565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03831661060f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037c565b6001600160a01b0382166106705760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037c565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60025f54036107215760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161037c565b60025f55565b6001600160a01b03831661078b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037c565b6001600160a01b0382166107ed5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037c565b6107f8838383610908565b6001600160a01b0383165f908152600160205260409020548181101561086f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037c565b6108798282610b0b565b6001600160a01b038086165f9081526001602052604080822093909355908516815290812080548492906108ae908490610b1e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108fa91815260200190565b60405180910390a350505050565b6008546001600160a01b0390811690831603610985576001600160a01b0383165f9081526007602052604090205460ff166109855760405162461bcd60e51b815260206004820152601d60248201527f4372617a792043617420697320666f722068756d616e73206f6e6c7921000000604482015260640161037c565b505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146109d5575f80fd5b919050565b5f80604083850312156109eb575f80fd5b6109f4836109bf565b946020939093013593505050565b5f805f60608486031215610a14575f80fd5b610a1d846109bf565b9250610a2b602085016109bf565b929592945050506040919091013590565b5f60208284031215610a4c575f80fd5b6103a7826109bf565b5f8060408385031215610a66575f80fd5b610a6f836109bf565b9150610a7d602084016109bf565b90509250929050565b5f8060408385031215610a97575f80fd5b610aa0836109bf565b915060208301358015158114610ab4575f80fd5b809150509250929050565b600181811c90821680610ad357607f821691505b602082108103610af157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156102e2576102e2610af7565b808201808211156102e2576102e2610af756fea2646970667358221220f16ada069430cbe6fe4cf37219adfc0e734abe79df780e41c5f2337312752b1164736f6c634300081a0033