608060405234801561000f575f80fd5b5061001c6012600a610135565b61002b906402540be400610147565b335f9081526020819052604090205561015e565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561008d57815f19048211156100735761007361003f565b8085161561008057918102915b93841c9390800290610058565b509250929050565b5f826100a35750600161012f565b816100af57505f61012f565b81600181146100c557600281146100cf576100eb565b600191505061012f565b60ff8411156100e0576100e061003f565b50506001821b61012f565b5060208310610133831016604e8410600b841016171561010e575081810a61012f565b6101188383610053565b805f190482111561012b5761012b61003f565b0290505b92915050565b5f6101408383610095565b9392505050565b808202811582820484141761012f5761012f61003f565b610709806200016c5f395ff3fe608060405234801561000f575f80fd5b5060043610610090575f3560e01c8063313ce56711610063578063313ce5671461011b57806370a082311461013557806395d89b411461015d578063a9059cbb14610182578063dd62ed3e14610195575f80fd5b806306fdde0314610094578063095ea7b3146100cf57806318160ddd146100f257806323b872dd14610108575b5f80fd5b6100b960405180604001604052806006815260200165090f2e0ca5ab60d31b81525081565b6040516100c6919061047e565b60405180910390f35b6100e26100dd3660046104e5565b6101cd565b60405190151581526020016100c6565b6100fa6101e3565b6040519081526020016100c6565b6100e261011636600461050d565b610201565b610123601281565b60405160ff90911681526020016100c6565b6100fa610143366004610546565b6001600160a01b03165f9081526020819052604090205490565b6100b960405180604001604052806006815260200165090b2a08a5ab60d31b81525081565b6100e26101903660046104e5565b61031e565b6100fa6101a3366004610566565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b5f6101d933848461037e565b5060015b92915050565b6101ef6012600a61068b565b6101fe906402540be400610696565b81565b6001600160a01b0383165f908152602081905260408120548211156102645760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064015b60405180910390fd5b6001600160a01b0384165f9081526001602090815260408083203384529091529020548211156102cf5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b604482015260640161025b565b6102da8484846103df565b6001600160a01b0384165f9081526001602090815260408083203380855292529091205461031491869161030f9086906106ad565b61037e565b5060019392505050565b335f908152602081905260408120548211156103735760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b604482015260640161025b565b6101d93384846103df565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383165f90815260208190526040812080548392906104069084906106ad565b90915550506001600160a01b0382165f90815260208190526040812080548392906104329084906106c0565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103d291815260200190565b5f602080835283518060208501525f5b818110156104aa5785810183015185820160400152820161048e565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146104e0575f80fd5b919050565b5f80604083850312156104f6575f80fd5b6104ff836104ca565b946020939093013593505050565b5f805f6060848603121561051f575f80fd5b610528846104ca565b9250610536602085016104ca565b9150604084013590509250925092565b5f60208284031215610556575f80fd5b61055f826104ca565b9392505050565b5f8060408385031215610577575f80fd5b610580836104ca565b915061058e602084016104ca565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156105e557815f19048211156105cb576105cb610597565b808516156105d857918102915b93841c93908002906105b0565b509250929050565b5f826105fb575060016101dd565b8161060757505f6101dd565b816001811461061d576002811461062757610643565b60019150506101dd565b60ff84111561063857610638610597565b50506001821b6101dd565b5060208310610133831016604e8410600b8410161715610666575081810a6101dd565b61067083836105ab565b805f190482111561068357610683610597565b029392505050565b5f61055f83836105ed565b80820281158282048414176101dd576101dd610597565b818103818111156101dd576101dd610597565b808201808211156101dd576101dd61059756fea264697066735822122086d5bb91d7ba4765172731b475f97451715e7e9ea2e55ade944dc8629fdb54d564736f6c63430008170033