608060405234801561001057600080fd5b506110a6806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d7146101fe578063a9059cbb14610211578063dd62ed3e14610224578063f2fde38b1461023757600080fd5b806370a08231146101aa578063715018a6146101d35780638da5cb5b146101db57806395d89b41146101f657600080fd5b806323b872dd116100d357806323b872dd14610162578063313ce5671461017557806339509351146101845780634cd88b761461019757600080fd5b806306fdde0314610105578063095ea7b3146101235780631249c58b1461014657806318160ddd14610150575b600080fd5b61010d61024a565b60405161011a9190610b7e565b60405180910390f35b610136610131366004610be8565b6102dc565b604051901515815260200161011a565b61014e6102f6565b005b6035545b60405190815260200161011a565b610136610170366004610c12565b610336565b6040516012815260200161011a565b610136610192366004610be8565b61035a565b61014e6101a5366004610cf1565b61037c565b6101546101b8366004610d55565b6001600160a01b031660009081526033602052604090205490565b61014e6104a9565b6065546040516001600160a01b03909116815260200161011a565b61010d6104bb565b61013661020c366004610be8565b6104ca565b61013661021f366004610be8565b610545565b610154610232366004610d77565b610553565b61014e610245366004610d55565b61057e565b60606036805461025990610daa565b80601f016020809104026020016040519081016040528092919081815260200182805461028590610daa565b80156102d25780601f106102a7576101008083540402835291602001916102d2565b820191906000526020600020905b8154815290600101906020018083116102b557829003601f168201915b5050505050905090565b6000336102ea8185856105f7565b60019150505b92915050565b6102fe61071b565b6103346103136065546001600160a01b031690565b60125b61032190600a610ede565b61032f90630bebc200610eed565b610775565b565b600033610344858285610837565b61034f8585856108b1565b506001949350505050565b6000336102ea81858561036d8383610553565b6103779190610f04565b6105f7565b600054610100900460ff161580801561039c5750600054600160ff909116105b806103b65750303b1580156103b6575060005460ff166001145b61041e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610441576000805461ff0019166101001790555b610449610a5c565b6104538383610a8b565b61045e336012610316565b80156104a4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6104b161071b565b6103346000610abc565b60606037805461025990610daa565b600033816104d88286610553565b9050838110156105385760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610415565b61034f82868684036105f7565b6000336102ea8185856108b1565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b61058661071b565b6001600160a01b0381166105eb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610415565b6105f481610abc565b50565b6001600160a01b0383166106595760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610415565b6001600160a01b0382166106ba5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610415565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6065546001600160a01b031633146103345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610415565b6001600160a01b0382166107cb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610415565b80603560008282546107dd9190610f04565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b5050565b60006108438484610553565b905060001981146108ab578181101561089e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610415565b6108ab84848484036105f7565b50505050565b6001600160a01b0383166109155760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610415565b6001600160a01b0382166109775760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610415565b6001600160a01b038316600090815260336020526040902054818110156109ef5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610415565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a4f9086815260200190565b60405180910390a36108ab565b600054610100900460ff16610a835760405162461bcd60e51b815260040161041590610f17565b610334610b0e565b600054610100900460ff16610ab25760405162461bcd60e51b815260040161041590610f17565b6108338282610b3e565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610b355760405162461bcd60e51b815260040161041590610f17565b61033433610abc565b600054610100900460ff16610b655760405162461bcd60e51b815260040161041590610f17565b6036610b718382610fb0565b5060376104a48282610fb0565b600060208083528351808285015260005b81811015610bab57858101830151858201604001528201610b8f565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610be357600080fd5b919050565b60008060408385031215610bfb57600080fd5b610c0483610bcc565b946020939093013593505050565b600080600060608486031215610c2757600080fd5b610c3084610bcc565b9250610c3e60208501610bcc565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610c7557600080fd5b813567ffffffffffffffff80821115610c9057610c90610c4e565b604051601f8301601f19908116603f01168101908282118183101715610cb857610cb8610c4e565b81604052838152866020858801011115610cd157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215610d0457600080fd5b823567ffffffffffffffff80821115610d1c57600080fd5b610d2886838701610c64565b93506020850135915080821115610d3e57600080fd5b50610d4b85828601610c64565b9150509250929050565b600060208284031215610d6757600080fd5b610d7082610bcc565b9392505050565b60008060408385031215610d8a57600080fd5b610d9383610bcc565b9150610da160208401610bcc565b90509250929050565b600181811c90821680610dbe57607f821691505b602082108103610dde57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610e35578160001904821115610e1b57610e1b610de4565b80851615610e2857918102915b93841c9390800290610dff565b509250929050565b600082610e4c575060016102f0565b81610e59575060006102f0565b8160018114610e6f5760028114610e7957610e95565b60019150506102f0565b60ff841115610e8a57610e8a610de4565b50506001821b6102f0565b5060208310610133831016604e8410600b8410161715610eb8575081810a6102f0565b610ec28383610dfa565b8060001904821115610ed657610ed6610de4565b029392505050565b6000610d7060ff841683610e3d565b80820281158282048414176102f0576102f0610de4565b808201808211156102f0576102f0610de4565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f8211156104a457600081815260208120601f850160051c81016020861015610f895750805b601f850160051c820191505b81811015610fa857828155600101610f95565b505050505050565b815167ffffffffffffffff811115610fca57610fca610c4e565b610fde81610fd88454610daa565b84610f62565b602080601f8311600181146110135760008415610ffb5750858301515b600019600386901b1c1916600185901b178555610fa8565b600085815260208120601f198616915b8281101561104257888601518255948401946001909101908401611023565b50858210156110605787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212206b14a2734f7f1b66ec4645db09744c03aa0030725fb29a87a5b0a3bfbc7cd14164736f6c63430008140033