0x60806040523480156200001157600080fd5b506040518060400160405280601181526020017021b7b6322334902a32b1b4102a37b5b2b760791b8152506040518060400160405280600381526020016210d19560ea1b81525081600390805190602001906200007092919062000207565b5080516200008690600490602084019062000207565b50506005805460ff1916601217905550620000a8620000a23390565b620000c5565b620000bf336aa56fa5b99019a5c80000006200011f565b62000311565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200017a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200018e9190620002ad565b90915550506001600160a01b03821660009081526020819052604081208054839290620001bd908490620002ad565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200021590620002d4565b90600052602060002090601f01602090048101928262000239576000855562000284565b82601f106200025457805160ff191683800117855562000284565b8280016001018555821562000284579182015b828111156200028457825182559160200191906001019062000267565b506200029292915062000296565b5090565b5b8082111562000292576000815560010162000297565b60008219821115620002cf57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620002e957607f821691505b602082108114156200030b57634e487b7160e01b600052602260045260246000fd5b50919050565b610fa480620003216000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80635d799f87116100a2578063a457c2d711610071578063a457c2d714610242578063a9059cbb14610255578063be45fd6214610268578063dd62ed3e1461027b578063f2fde38b146102b457600080fd5b80635d799f87146101d557806370a08231146101e85780638da5cb5b1461021157806395d89b411461023a57600080fd5b8063313ce567116100de578063313ce56714610176578063395093511461018b57806342966c681461019e5780635a3b7e42146101b357600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610163575b600080fd5b6101186102c7565b6040516101259190610c6f565b60405180910390f35b61014161013c366004610ca5565b610359565b6040519015158152602001610125565b6002545b604051908152602001610125565b610141610171366004610ccf565b61036f565b60055460405160ff9091168152602001610125565b610141610199366004610ca5565b6103c1565b6101b16101ac366004610d0b565b6103f8565b005b60408051808201909152600681526565726332323360d01b6020820152610118565b6101b16101e3366004610d24565b610405565b6101556101f6366004610d57565b6001600160a01b031660009081526020819052604090205490565b60055461010090046001600160a01b03166040516001600160a01b039091168152602001610125565b610118610552565b610141610250366004610ca5565b610561565b610141610263366004610ca5565b610598565b610141610276366004610d72565b6105b7565b610155610289366004610d24565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101b16102c2366004610d57565b610606565b6060600380546102d690610df9565b80601f016020809104026020016040519081016040528092919081815260200182805461030290610df9565b801561034f5780601f106103245761010080835404028352916020019161034f565b820191906000526020600020905b81548152906001019060200180831161033257829003601f168201915b5050505050905090565b60006103663384846106d4565b50600192915050565b600061037c8484846107f9565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546103b79186916103b2908690610e4a565b6106d4565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103669185906103b2908690610e61565b61040233826108ea565b50565b6005546001600160a01b0361010090910416331461046a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156104b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d59190610e79565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015610528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054c9190610e92565b50505050565b6060600480546102d690610df9565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103669185906103b2908690610e4a565b60408051600080825260208201909252610366903390859085906109d5565b60006105fb33868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109d592505050565b506001949350505050565b6005546001600160a01b036101009091041633146106665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610461565b6001600160a01b0381166106cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610461565b61040281610b8c565b6001600160a01b0383166107365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610461565b6001600160a01b0382166107975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610461565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661081f5760405162461bcd60e51b815260040161046190610eb4565b6001600160a01b0382166108455760405162461bcd60e51b815260040161046190610efa565b6001600160a01b038316600090815260208190526040902054610869908290610e4a565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610899908290610e61565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016107ec565b6001600160a01b03821661094a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610461565b6001600160a01b03821660009081526020819052604081208054839290610972908490610e4a565b92505081905550806002600082825461098b9190610e4a565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0384166109fb5760405162461bcd60e51b815260040161046190610eb4565b6001600160a01b038316610a215760405162461bcd60e51b815260040161046190610efa565b6001600160a01b038416600090815260208190526040902054610a45908390610e4a565b6001600160a01b038086166000908152602081905260408082209390935590851681522054610a75908390610e61565b6001600160a01b038416600081815260208190526040902091909155610a9a90610be6565b15610b02576040516344a1f60160e11b81526001600160a01b03841690638943ec0290610acf90879086908690600401610f3e565b600060405180830381600087803b158015610ae957600080fd5b505af1158015610afd573d6000803e3d6000fd5b505050505b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b4791815260200190565b60405180910390a37f3ba9136826ac751de05d770d8d34fa4440ada49a5fb0e9aa1678aece66dad97681604051610b7e9190610c6f565b60405180910390a150505050565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610c1a57508115155b949350505050565b6000815180845260005b81811015610c4857602081850181015186830182015201610c2c565b81811115610c5a576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610c826020830184610c22565b9392505050565b80356001600160a01b0381168114610ca057600080fd5b919050565b60008060408385031215610cb857600080fd5b610cc183610c89565b946020939093013593505050565b600080600060608486031215610ce457600080fd5b610ced84610c89565b9250610cfb60208501610c89565b9150604084013590509250925092565b600060208284031215610d1d57600080fd5b5035919050565b60008060408385031215610d3757600080fd5b610d4083610c89565b9150610d4e60208401610c89565b90509250929050565b600060208284031215610d6957600080fd5b610c8282610c89565b60008060008060608587031215610d8857600080fd5b610d9185610c89565b935060208501359250604085013567ffffffffffffffff80821115610db557600080fd5b818701915087601f830112610dc957600080fd5b813581811115610dd857600080fd5b886020828501011115610dea57600080fd5b95989497505060200194505050565b600181811c90821680610e0d57607f821691505b60208210811415610e2e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610e5c57610e5c610e34565b500390565b60008219821115610e7457610e74610e34565b500190565b600060208284031215610e8b57600080fd5b5051919050565b600060208284031215610ea457600080fd5b81518015158114610c8257600080fd5b60208082526026908201527f4552433232333a207472616e736665722066726f6d20746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526024908201527f4552433232333a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60018060a01b0384168152826020820152606060408201526000610f656060830184610c22565b9594505050505056fea2646970667358221220272a8bbac0cb4bee5c45fd5b08df61028c5fb8edbf7109d2e20a05b66d0a08d064736f6c634300080a0033
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80635d799f87116100a2578063a457c2d711610071578063a457c2d714610242578063a9059cbb14610255578063be45fd6214610268578063dd62ed3e1461027b578063f2fde38b146102b457600080fd5b80635d799f87146101d557806370a08231146101e85780638da5cb5b1461021157806395d89b411461023a57600080fd5b8063313ce567116100de578063313ce56714610176578063395093511461018b57806342966c681461019e5780635a3b7e42146101b357600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610163575b600080fd5b6101186102c7565b6040516101259190610c6f565b60405180910390f35b61014161013c366004610ca5565b610359565b6040519015158152602001610125565b6002545b604051908152602001610125565b610141610171366004610ccf565b61036f565b60055460405160ff9091168152602001610125565b610141610199366004610ca5565b6103c1565b6101b16101ac366004610d0b565b6103f8565b005b60408051808201909152600681526565726332323360d01b6020820152610118565b6101b16101e3366004610d24565b610405565b6101556101f6366004610d57565b6001600160a01b031660009081526020819052604090205490565b60055461010090046001600160a01b03166040516001600160a01b039091168152602001610125565b610118610552565b610141610250366004610ca5565b610561565b610141610263366004610ca5565b610598565b610141610276366004610d72565b6105b7565b610155610289366004610d24565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101b16102c2366004610d57565b610606565b6060600380546102d690610df9565b80601f016020809104026020016040519081016040528092919081815260200182805461030290610df9565b801561034f5780601f106103245761010080835404028352916020019161034f565b820191906000526020600020905b81548152906001019060200180831161033257829003601f168201915b5050505050905090565b60006103663384846106d4565b50600192915050565b600061037c8484846107f9565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546103b79186916103b2908690610e4a565b6106d4565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103669185906103b2908690610e61565b61040233826108ea565b50565b6005546001600160a01b0361010090910416331461046a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156104b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d59190610e79565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015610528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054c9190610e92565b50505050565b6060600480546102d690610df9565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103669185906103b2908690610e4a565b60408051600080825260208201909252610366903390859085906109d5565b60006105fb33868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109d592505050565b506001949350505050565b6005546001600160a01b036101009091041633146106665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610461565b6001600160a01b0381166106cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610461565b61040281610b8c565b6001600160a01b0383166107365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610461565b6001600160a01b0382166107975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610461565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661081f5760405162461bcd60e51b815260040161046190610eb4565b6001600160a01b0382166108455760405162461bcd60e51b815260040161046190610efa565b6001600160a01b038316600090815260208190526040902054610869908290610e4a565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610899908290610e61565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016107ec565b6001600160a01b03821661094a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610461565b6001600160a01b03821660009081526020819052604081208054839290610972908490610e4a565b92505081905550806002600082825461098b9190610e4a565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0384166109fb5760405162461bcd60e51b815260040161046190610eb4565b6001600160a01b038316610a215760405162461bcd60e51b815260040161046190610efa565b6001600160a01b038416600090815260208190526040902054610a45908390610e4a565b6001600160a01b038086166000908152602081905260408082209390935590851681522054610a75908390610e61565b6001600160a01b038416600081815260208190526040902091909155610a9a90610be6565b15610b02576040516344a1f60160e11b81526001600160a01b03841690638943ec0290610acf90879086908690600401610f3e565b600060405180830381600087803b158015610ae957600080fd5b505af1158015610afd573d6000803e3d6000fd5b505050505b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b4791815260200190565b60405180910390a37f3ba9136826ac751de05d770d8d34fa4440ada49a5fb0e9aa1678aece66dad97681604051610b7e9190610c6f565b60405180910390a150505050565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610c1a57508115155b949350505050565b6000815180845260005b81811015610c4857602081850181015186830182015201610c2c565b81811115610c5a576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610c826020830184610c22565b9392505050565b80356001600160a01b0381168114610ca057600080fd5b919050565b60008060408385031215610cb857600080fd5b610cc183610c89565b946020939093013593505050565b600080600060608486031215610ce457600080fd5b610ced84610c89565b9250610cfb60208501610c89565b9150604084013590509250925092565b600060208284031215610d1d57600080fd5b5035919050565b60008060408385031215610d3757600080fd5b610d4083610c89565b9150610d4e60208401610c89565b90509250929050565b600060208284031215610d6957600080fd5b610c8282610c89565b60008060008060608587031215610d8857600080fd5b610d9185610c89565b935060208501359250604085013567ffffffffffffffff80821115610db557600080fd5b818701915087601f830112610dc957600080fd5b813581811115610dd857600080fd5b886020828501011115610dea57600080fd5b95989497505060200194505050565b600181811c90821680610e0d57607f821691505b60208210811415610e2e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610e5c57610e5c610e34565b500390565b60008219821115610e7457610e74610e34565b500190565b600060208284031215610e8b57600080fd5b5051919050565b600060208284031215610ea457600080fd5b81518015158114610c8257600080fd5b60208082526026908201527f4552433232333a207472616e736665722066726f6d20746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526024908201527f4552433232333a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60018060a01b0384168152826020820152606060408201526000610f656060830184610c22565b9594505050505056fea2646970667358221220272a8bbac0cb4bee5c45fd5b08df61028c5fb8edbf7109d2e20a05b66d0a08d064736f6c634300080a0033