0x608060405234801561001057600080fd5b50610d53806100206000396000f3fe60806040526004361061004e5760003560e01c806310d1e85c1461005a578063205c28781461007c5780635b2e99171461009c57806394655f2b146100bc578063fa461e33146100d157600080fd5b3661005557005b600080fd5b34801561006657600080fd5b5061007a610075366004610b40565b6100f1565b005b34801561008857600080fd5b5061007a610097366004610ad5565b61012a565b3480156100a857600080fd5b5061007a6100b7366004610b00565b610185565b3480156100c857600080fd5b5061007a61026c565b3480156100dd57600080fd5b5061007a6100ec366004610bf2565b610462565b327353d8a6a3368ffe7b844782d8a037012497110d811461011157600080fd5b81610122336028830184840161048f565b505050505050565b337353d8a6a3368ffe7b844782d8a037012497110d811461014a57600080fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610180573d6000803e3d6000fd5b505050565b337353d8a6a3368ffe7b844782d8a037012497110d81146101a557600080fd5b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820183905283169063a9059cbb90604401602060405180830381600087803b1580156101ef57600080fd5b505af1158015610203573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102279190610ba8565b6101805760405162461bcd60e51b81526020600482015260116024820152705472616e73666572206661696c65643f2160781b60448201526064015b60405180910390fd5b337353d8a6a3368ffe7b844782d8a037012497110d811461028c57600080fd5b610299600060283661048f565b60043560f881901c9060e081901c62ffffff169060601c6fffffffffffffffffffffffffffffffff16620f42408211156102d457620f424091505b6040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b15801561032157600080fd5b505afa158015610335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103599190610c43565b905081811161039d5760405162461bcd60e51b815260206004820152601060248201526f088d2c8dc4ee840cec2d2dc40eecae8d60831b6044820152606401610263565b600184161561042057600281048282038110156103b957508181035b604051632e1a7d4d60e01b81526004810182905273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d90602401600060405180830381600087803b15801561040657600080fd5b505af115801561041a573d6000803e3d6000fd5b50505050505b620f424082820384026040519190049350419084156108fc029085906000818181858888f1935050505015801561045b573d6000803e3d6000fd5b5050505050565b327353d8a6a3368ffe7b844782d8a037012497110d811461048257600080fd5b8161045b33602883018484015b60008080806001600160a01b0387166106e65785358060f81c94508060181b60601c93508060081b60f01c80600081146104d4578882013592508260601c94506104d8565b3094505b50505050601785013560801c60ff84166105585760405163022c0d9f60e01b81526001600160a01b0384169063022c0d9f90610521908490600090879082903690600401610ccc565b600060405180830381600087803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b505050506106dd565b8360ff16600114156105995760405163022c0d9f60e01b81526001600160a01b0384169063022c0d9f90610521906000908590879083903690600401610ccc565b8360ff166002141561064a57604051630251596160e31b81526001600160a01b0384169063128acb08906105f29085906000908682039073fffd8963efd1fc6a506488495d951d5263988d259083903690600401610c84565b6040805180830381600087803b15801561060b57600080fd5b505af115801561061f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106439190610bcf565b50506106dd565b8360ff166003141561069557604051630251596160e31b81526001600160a01b0384169063128acb08906105f29085906001906000878103916401000276a491903690600401610c84565b60405162461bcd60e51b815260206004820152601b60248201527f556e6b6e6f776e20706f6f6c20747970652061742073746172742100000000006044820152606401610263565b50505050505050565b8560005b86881015610a835787358060f81c96508060181b60601c95508060081b60f01c8060008114610724578482013592508260601c9650610728565b3096505b505050601788013560801c925060ff86166107ca5760278801975080156107c55760405163022c0d9f60e01b8152600481018490526000602482018190526001600160a01b03868116604484015260806064840152608483019190915286169063022c0d9f9060a4015b600060405180830381600087803b1580156107ac57600080fd5b505af11580156107c0573d6000803e3d6000fd5b505050505b610a60565b8560ff166001141561082f5760278801975080156107c55760405163022c0d9f60e01b8152600060048201819052602482018590526001600160a01b03868116604484015260806064840152608483019190915286169063022c0d9f9060a401610792565b8560ff16600214156109015760278801975080156107c557604051630251596160e31b8152602719830190838903602801906001600160a01b0388169063128acb08906108a19089906000908a82039073fffd8963efd1fc6a506488495d951d5263988d259089908990600401610c84565b6040805180830381600087803b1580156108ba57600080fd5b505af11580156108ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f29190610bcf565b50505050505050505050505050565b8560ff16600314156109665760278801975080156107c557604051630251596160e31b8152602719830190838903602801906001600160a01b0388169063128acb08906108a190899060019060008b9003906401000276a49089908990600401610c84565b8560ff1660041415610a235760038801975080156107c55760405163a9059cbb60e01b81526001600160a01b0385166004820152600f1983013560801c60248201819052935073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29063a9059cbb90604401602060405180830381600087803b1580156109e557600080fd5b505af11580156109f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1d9190610ba8565b50610a60565b60405162461bcd60e51b8152602060048201526012602482015271556e6b6e6f776e20706f6f6c20747970652160701b6044820152606401610263565b886001600160a01b0316856001600160a01b03161415610a7e575060015b6106ea565b505050505050505050565b60008083601f840112610a9f578182fd5b50813567ffffffffffffffff811115610ab6578182fd5b602083019150836020828501011115610ace57600080fd5b9250929050565b60008060408385031215610ae7578182fd5b8235610af281610d05565b946020939093013593505050565b600080600060608486031215610b14578081fd5b8335610b1f81610d05565b92506020840135610b2f81610d05565b929592945050506040919091013590565b600080600080600060808688031215610b57578081fd5b8535610b6281610d05565b94506020860135935060408601359250606086013567ffffffffffffffff811115610b8b578182fd5b610b9788828901610a8e565b969995985093965092949392505050565b600060208284031215610bb9578081fd5b81518015158114610bc8578182fd5b9392505050565b60008060408385031215610be1578182fd5b505080516020909101519092909150565b60008060008060608587031215610c07578384fd5b8435935060208501359250604085013567ffffffffffffffff811115610c2b578283fd5b610c3787828801610a8e565b95989497509550505050565b600060208284031215610c54578081fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0387811682528615156020830152604082018690528416606082015260a060808201819052600090610cc09083018486610c5b565b98975050505050505050565b85815284602082015260018060a01b0384166040820152608060608201526000610cfa608083018486610c5b565b979650505050505050565b6001600160a01b0381168114610d1a57600080fd5b5056fea2646970667358221220f839c71f60642f7b0db7eb268bcb383f5d363f7a95e5ec3a8780351fe1356f9d64736f6c63430008040033