608060405234801561000f575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060408051808201909152600a81526915195d1a195c881554d160b21b602082015260059061007e908261019d565b50604080518082019091526004808252631554d11560e21b6020830152906100a6908261019d565b506003805460ff191660121790556040516aadb53acfa41aee120000009033905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906100f79085815260200190565b60405180910390a35061025c565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061012d57607f821691505b60208210810361014b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561019857805f5260205f20601f840160051c810160208510156101765750805b601f840160051c820191505b81811015610195575f8155600101610182565b50505b505050565b81516001600160401b038111156101b6576101b6610105565b6101ca816101c48454610119565b84610151565b602080601f8311600181146101fd575f84156101e65750858301515b5f19600386901b1c1916600185901b178555610254565b5f85815260208120601f198616915b8281101561022b5788860151825594840194600190910190840161020c565b508582101561024857878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b610948806102695f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c8063893d20e811610088578063a9059cbb11610063578063a9059cbb146101b5578063b09f1266146101ca578063d28d8852146101d2578063f625d62a146101da575f80fd5b8063893d20e8146101795780638da5cb5b1461019d57806395d89b41146101ad575f80fd5b806306fdde03146100cf57806318160ddd146100ed57806323b872dd14610108578063313ce5671461012b57806332424aa31461014457806370a0823114610151575b5f80fd5b6100d76101ed565b6040516100e49190610521565b60405180910390f35b6aadb53acfa41aee120000005b6040519081526020016100e4565b61011b610116366004610555565b61027d565b60405190151581526020016100e4565b60035460ff165b60405160ff90911681526020016100e4565b6003546101329060ff1681565b6100fa61015f36600461058e565b6001600160a01b03165f9081526001602052604090205490565b5f546001600160a01b03165b6040516001600160a01b0390911681526020016100e4565b5f546001600160a01b0316610185565b6100d76102d5565b6101c86101c33660046105a7565b6102e4565b005b6100d7610310565b6100d761039c565b6100d76101e83660046106ee565b6103a9565b6060600580546101fc906107e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610228906107e5565b80156102735780601f1061024a57610100808354040283529160200191610273565b820191905f5260205f20905b81548152906001019060200180831161025657829003601f168201915b5050505050905090565b5f826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516102c391815260200190565b60405180910390a35060019392505050565b6060600480546101fc906107e5565b5f8080806102f4858701876106ee565b9350935093509350610308848484846103db565b505050505050565b6004805461031d906107e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610349906107e5565b80156103945780601f1061036b57610100808354040283529160200191610394565b820191905f5260205f20905b81548152906001019060200180831161037757829003601f168201915b505050505081565b6005805461031d906107e5565b6060848484846040516020016103c29493929190610860565b6040516020818303038152906040529050949350505050565b83515f5b81811015610308578581815181106103f9576103f96108df565b60200260200101516001600160a01b03166323b872dd868381518110610421576104216108df565b602002602001015186848151811061043b5761043b6108df565b6020026020010151868581518110610455576104556108df565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af11580156104b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d591906108f3565b506001016103df565b5f81518084525f5b81811015610502576020818501810151868301820152016104e6565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f61053360208301846104de565b9392505050565b80356001600160a01b0381168114610550575f80fd5b919050565b5f805f60608486031215610567575f80fd5b6105708461053a565b925061057e6020850161053a565b9150604084013590509250925092565b5f6020828403121561059e575f80fd5b6105338261053a565b5f80602083850312156105b8575f80fd5b823567ffffffffffffffff808211156105cf575f80fd5b818501915085601f8301126105e2575f80fd5b8135818111156105f0575f80fd5b866020828501011115610601575f80fd5b60209290920196919550909350505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561065057610650610613565b604052919050565b5f67ffffffffffffffff82111561067157610671610613565b5060051b60200190565b5f82601f83011261068a575f80fd5b8135602061069f61069a83610658565b610627565b8083825260208201915060208460051b8701019350868411156106c0575f80fd5b602086015b848110156106e3576106d68161053a565b83529183019183016106c5565b509695505050505050565b5f805f8060808587031215610701575f80fd5b843567ffffffffffffffff80821115610718575f80fd5b6107248883890161067b565b955060209150818701358181111561073a575f80fd5b61074689828a0161067b565b95505060408701358181111561075a575f80fd5b61076689828a0161067b565b94505060608701358181111561077a575f80fd5b87019050601f8101881361078c575f80fd5b803561079a61069a82610658565b81815260059190911b8201830190838101908a8311156107b8575f80fd5b928401925b828410156107d6578335825292840192908401906107bd565b979a9699509497505050505050565b600181811c908216806107f957607f821691505b60208210810361081757634e487b7160e01b5f52602260045260245ffd5b50919050565b5f815180845260208085019450602084015f5b838110156108555781516001600160a01b031687529582019590820190600101610830565b509495945050505050565b608081525f610872608083018761081d565b60208382036020850152610886828861081d565b9150838203604085015261089a828761081d565b8481036060860152855180825260208088019450909101905f5b818110156108d0578451835293830193918301916001016108b4565b50909998505050505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215610903575f80fd5b81518015158114610533575f80fdfea2646970667358221220cd02105e89ee7935e61301da4808b909aa7bd59b7e8c3b73110daa451cd1dd9b64736f6c63430008180033