60806040525f60058190556001600681905560078290556008829055600b80546001600160a01b03191661dead179055600c819055600d819055600e829055600f819055601082905560118290556012829055601381905560148290556015556022556023805464010001000064ffffff00ff1990911617905534801562000085575f80fd5b5060405162002b0938038062002b09833981016040819052620000a891620005b3565b600980546001600160a01b038085166001600160a01b031992831617909255600a805492841692909116821790556018805461010092909202610100600160a81b03199092169190911790556007546006546005546200011692916200010f91906200041f565b906200041f565b600c55601054600f54600e546200013492916200010f91906200041f565b600d556014546013546012546200015292916200010f91906200041f565b60155560408051808201909152600d81526c416e677279204265617665727360981b6020820152601690620001889082620006a4565b5060408051808201909152600581526420a723a2a960d91b6020820152601790620001b49082620006a4565b5060188054600960ff1990911681179091555f80546001600160a01b0319166001600160a01b038616179055620001ed90600a62000879565b620001f9908562000889565b601f556018546200020f9060ff16600a62000879565b6200022a6103e86200022387601e6200048e565b9062000514565b62000236919062000889565b6020556018546200024c9060ff16600a62000879565b620002606103e86200022387601e6200048e565b6200026c919062000889565b602155601854620002829060ff16600a62000879565b620002966103e86200022387601e6200048e565b620002a2919062000889565b601e55601854620002b89060ff16600a62000879565b620002c590600162000889565b6022556001600160a01b038381165f818152600160208181526040808420805460ff19908116851790915560098054881686528286208054831686179055600a805489168752838720805484168717905530808852848820805485168817905588885260028652848820805485168817905582548a168852848820805485168817905581548a1688528488208054851688179055600b80548b1689528589208054861689179055818952858920805486168917905589895260038752858920805486168917905592548a168852848820805485168817905590548916875283872080548416871790559054909716855281852080548216851790559584528084208054909616909217909455601f54838352601985528183208190559051908152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505062000926565b5f806200042d8385620008a3565b905083811015620004855760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b90505b92915050565b5f825f036200049f57505f62000488565b5f620004ac838562000889565b905082620004bb8583620008b9565b14620004855760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016200047c565b5f6200048583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200055d60201b60201c565b5f8183620005805760405162461bcd60e51b81526004016200047c9190620008d9565b505f6200058e8486620008b9565b95945050505050565b80516001600160a01b0381168114620005ae575f80fd5b919050565b5f805f8060808587031215620005c7575f80fd5b84519350620005d96020860162000597565b9250620005e96040860162000597565b9150620005f96060860162000597565b905092959194509250565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200062d57607f821691505b6020821081036200064c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200069f575f81815260208120601f850160051c810160208610156200067a5750805b601f850160051c820191505b818110156200069b5782815560010162000686565b5050505b505050565b81516001600160401b03811115620006c057620006c062000604565b620006d881620006d1845462000618565b8462000652565b602080601f8311600181146200070e575f8415620006f65750858301515b5f19600386901b1c1916600185901b1785556200069b565b5f85815260208120601f198616915b828110156200073e578886015182559484019460019091019084016200071d565b50858210156200075c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620007c057815f1904821115620007a457620007a46200076c565b80851615620007b257918102915b93841c939080029062000785565b509250929050565b5f82620007d85750600162000488565b81620007e657505f62000488565b8160018114620007ff57600281146200080a576200082a565b600191505062000488565b60ff8411156200081e576200081e6200076c565b50506001821b62000488565b5060208310610133831016604e8410600b84101617156200084f575081810a62000488565b6200085b838362000780565b805f19048211156200087157620008716200076c565b029392505050565b5f6200048560ff841683620007c8565b80820281158282048414176200048857620004886200076c565b808201808211156200048857620004886200076c565b5f82620008d457634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020808352835180828501525f5b818110156200090657858101830151858201604001528201620008e8565b505f604082860101526040601f19601f8301168501019250505092915050565b6121d580620009345f395ff3fe6080604052600436106102c2575f3560e01c806388790a681161016f578063c469b6dd116100d8578063dc44b6a011610092578063f0cd1dac1161006d578063f0cd1dac14610811578063f2fde38b14610826578063f872858a14610845578063fb1eb14b14610866575f80fd5b8063dc44b6a0146107b0578063dd62ed3e146107c5578063ed99530714610809575f80fd5b8063c469b6dd14610727578063c5d241891461073c578063c860795214610751578063cab0347114610766578063d187f4171461077b578063da00097d14610790575f80fd5b8063a08e671f11610129578063a08e671f14610673578063a0c973f114610688578063a457c2d7146106b6578063a83f53a7146106d5578063a9059cbb146106ea578063b2bdfa7b14610709575f80fd5b806388790a68146105dc5780638a8c523c146105f15780638da5cb5b146106055780638ea5220f14610621578063958c2e521461064057806395d89b411461065f575f80fd5b80635ca058221161022b578063768dc710116101e55780637d1db4a5116101c05780637d1db4a51461056f578063807c2d9c1461058457806382eefb431461059957806384270812146105ae575f80fd5b8063768dc7101461050d5780637abdc1ca1461053b5780637bfbea7614610550575f80fd5b80635ca058221461044d57806361a23c691461047b57806370a0823114610490578063715018a6146104c4578063751039fc146104da57806375f0a874146104ee575f80fd5b80632b112e491161027c5780632b112e49146103b3578063313ce567146103c757806339509351146103e85780634a74bb0214610407578063557ed1ba1461042657806357a5802f14610438575f80fd5b806306fdde03146102cd578063095ea7b3146102f757806316f2f1a81461032657806318160ddd1461034957806323b872dd1461035d57806327c8f8351461037c575f80fd5b366102c957005b5f80fd5b3480156102d8575f80fd5b506102e161087b565b6040516102ee9190611df0565b60405180910390f35b348015610302575f80fd5b50610316610311366004611e52565b61090b565b60405190151581526020016102ee565b348015610331575f80fd5b5061033b60085481565b6040519081526020016102ee565b348015610354575f80fd5b50601f5461033b565b348015610368575f80fd5b50610316610377366004611e7c565b610921565b348015610387575f80fd5b50600b5461039b906001600160a01b031681565b6040516001600160a01b0390911681526020016102ee565b3480156103be575f80fd5b5061033b61098a565b3480156103d2575f80fd5b5060185460405160ff90911681526020016102ee565b3480156103f3575f80fd5b50610316610402366004611e52565b6109b5565b348015610412575f80fd5b506023546103169062010000900460ff1681565b348015610431575f80fd5b504261033b565b348015610443575f80fd5b5061033b60125481565b348015610458575f80fd5b50610316610467366004611eba565b60046020525f908152604090205460ff1681565b348015610486575f80fd5b5061033b60135481565b34801561049b575f80fd5b5061033b6104aa366004611eba565b6001600160a01b03165f9081526019602052604090205490565b3480156104cf575f80fd5b506104d86109ea565b005b3480156104e5575f80fd5b506104d8610a64565b3480156104f9575f80fd5b50600a5461039b906001600160a01b031681565b348015610518575f80fd5b50610316610527366004611eba565b60016020525f908152604090205460ff1681565b348015610546575f80fd5b5061033b60115481565b34801561055b575f80fd5b50601c5461039b906001600160a01b031681565b34801561057a575f80fd5b5061033b60215481565b34801561058f575f80fd5b5061033b60205481565b3480156105a4575f80fd5b5061033b600d5481565b3480156105b9575f80fd5b506103166105c8366004611eba565b60026020525f908152604090205460ff1681565b3480156105e7575f80fd5b5061033b600e5481565b3480156105fc575f80fd5b506104d8610a99565b348015610610575f80fd5b505f546001600160a01b031661039b565b34801561062c575f80fd5b5060095461039b906001600160a01b031681565b34801561064b575f80fd5b50601b5461039b906001600160a01b031681565b34801561066a575f80fd5b506102e1610ad1565b34801561067e575f80fd5b5061033b60155481565b348015610693575f80fd5b506103166106a2366004611eba565b60036020525f908152604090205460ff1681565b3480156106c1575f80fd5b506103166106d0366004611e52565b610ae0565b3480156106e0575f80fd5b5061033b60145481565b3480156106f5575f80fd5b50610316610704366004611e52565b610b2d565b348015610714575f80fd5b505f5461039b906001600160a01b031681565b348015610732575f80fd5b5061033b60075481565b348015610747575f80fd5b5061033b60065481565b34801561075c575f80fd5b5061033b600f5481565b348015610771575f80fd5b5061033b60105481565b348015610786575f80fd5b5061033b601e5481565b34801561079b575f80fd5b50602354610316906301000000900460ff1681565b3480156107bb575f80fd5b5061033b60055481565b3480156107d0575f80fd5b5061033b6107df366004611ed5565b6001600160a01b039182165f908152601a6020908152604080832093909416825291909152205490565b6104d8610b39565b34801561081c575f80fd5b5061033b600c5481565b348015610831575f80fd5b506104d8610840366004611eba565b610dcd565b348015610850575f80fd5b5060235461031690640100000000900460ff1681565b348015610871575f80fd5b5061033b601d5481565b60606016805461088a90611f0c565b80601f01602080910402602001604051908101604052809291908181526020018280546108b690611f0c565b80156109015780601f106108d857610100808354040283529160200191610901565b820191905f5260205f20905b8154815290600101906020018083116108e457829003601f168201915b5050505050905090565b5f610917338484610eb4565b5060015b92915050565b5f61092d848484610fd7565b5061097f843361097a85604051806060016040528060288152602001612133602891396001600160a01b038a165f908152601a602090815260408083203384529091529020549190611391565b610eb4565b5060015b9392505050565b600b546001600160a01b03165f90815260196020526040812054601f546109b0916113c9565b905090565b335f818152601a602090815260408083206001600160a01b0387168452909152812054909161091791859061097a908661140a565b5f546001600160a01b03163314610a1c5760405162461bcd60e51b8152600401610a1390611f44565b60405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610a8d5760405162461bcd60e51b8152600401610a1390611f44565b5f196021819055602055565b5f546001600160a01b03163314610ac25760405162461bcd60e51b8152600401610a1390611f44565b6023805460ff19166001179055565b60606017805461088a90611f0c565b5f610917338461097a8560405180606001604052806025815260200161217b60259139335f908152601a602090815260408083206001600160a01b038d1684529091529020549190611391565b5f61097f338484610fd7565b5f546001600160a01b03163314610b625760405162461bcd60e51b8152600401610a1390611f44565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bb6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bda9190611f79565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c25573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c499190611f79565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610c93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb79190611f79565b601c80546001600160a01b03199081166001600160a01b039384169081178355601b80549092168585161782555f908152600460209081526040808320805460ff199081166001908117909255601f5430808752601a865284872088548b1688528652848720919091559654881685526002845282852080549091169091179055925484835260199091529190205492169163f305d7199134915f80610d645f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610d8696959493929190611f94565b60606040518083038185885af1158015610da2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610dc79190611fcf565b50505050565b5f546001600160a01b03163314610df65760405162461bcd60e51b8152600401610a1390611f44565b6001600160a01b038116610e5b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a13565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610f165760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a13565b6001600160a01b038216610f775760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a13565b6001600160a01b038381165f818152601a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b03841661103c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a13565b6001600160a01b03831661109e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a13565b5f82116110ff5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a13565b60235460ff166111b8576001600160a01b0384165f9081526001602052604090205460ff168061114657506001600160a01b0383165f9081526001602052604090205460ff165b6111b85760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610a13565b602354610100900460ff16156111da576111d3848484611468565b9050610983565b6001600160a01b0384165f9081526003602052604090205460ff1615801561121a57506001600160a01b0383165f9081526003602052604090205460ff16155b15611282576021548211156112825760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a13565b305f90815260196020526040902054602254811080159081906112ad5750602354610100900460ff16155b80156112d157506001600160a01b0386165f9081526004602052604090205460ff16155b80156112e5575060235462010000900460ff165b801561130957506001600160a01b0386165f9081526001602052604090205460ff16155b801561132d57506001600160a01b0385165f9081526001602052604090205460ff16155b15611353576023546301000000900460ff161561134a5760225491505b61135382611538565b6018545f906001600160a01b0388811661010090920416146113755784611377565b5f5b905061138587878388611660565b60019350505050610983565b5f81848411156113b45760405162461bcd60e51b8152600401610a139190611df0565b505f6113c0848661200e565b95945050505050565b5f61098383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611391565b5f806114168385612021565b9050838110156109835760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a13565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526019909152918220546114b8918490611391565b6001600160a01b038086165f9081526019602052604080822093909355908516815220546114e6908361140a565b6001600160a01b038085165f8181526019602052604090819020939093559151908616905f8051602061215b833981519152906115269086815260200190565b60405180910390a35060019392505050565b6023805461ff0019166101001790556015546012545f916115699160029161156391829087906117f2565b90611870565b90505f61157683836113c9565b9050611581816118b1565b60125447905f906115a090611597906002611870565b601554906113c9565b90505f6115c1600261156384611563601254886117f290919063ffffffff16565b90505f6115dd83611563601454876117f290919063ffffffff16565b90505f6115f4826115ee87866113c9565b906113c9565b9050801561161257600a54611612906001600160a01b031682611a3a565b811561162e5760095461162e906001600160a01b031683611a3a565b5f8311801561163c57505f87115b1561164b5761164b8784611a72565b50506023805461ff0019169055505050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152601990915291909120546116b1918490611391565b6001600160a01b0385165f90815260196020908152604080832093909355600190529081205460ff16806116fc57506001600160a01b0384165f9081526001602052604090205460ff165b6117105761170b858584611b16565b611712565b815b602354909150640100000000900460ff16801561174757506001600160a01b0384165f9081526002602052604090205460ff16155b156117815760205461177782611771876001600160a01b03165f9081526019602052604090205490565b9061140a565b1115611781575f80fd5b6001600160a01b0384165f908152601960205260409020546117a3908261140a565b6001600160a01b038086165f8181526019602052604090819020939093559151908716905f8051602061215b833981519152906117e39085815260200190565b60405180910390a35050505050565b5f825f0361180157505f61091b565b5f61180c8385612034565b905082611819858361204b565b146109835760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a13565b5f61098383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d31565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106118e4576118e461206a565b6001600160a01b03928316602091820292909201810191909152601b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561193b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061195f9190611f79565b816001815181106119725761197261206a565b6001600160a01b039283166020918202929092010152601b546119989130911684610eb4565b601b5460405163791ac94760e01b81526001600160a01b039091169063791ac947906119d09085905f908690309042906004016120c0565b5f604051808303815f87803b1580156119e7575f80fd5b505af11580156119f9573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611a2e9291906120fb565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015611a6d573d5f803e3d5ffd5b505050565b601b54611a8a9030906001600160a01b031684610eb4565b601b5460185460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611ace92309289925f928392610100900416904290600401611f94565b60606040518083038185885af1158015611aea573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611b0f9190611fcf565b5050505050565b6018546040516370a0823160e01b81526101009091046001600160a01b031660048201525f90819030906370a0823190602401602060405180830381865afa158015611b64573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b88919061211b565b6001600160a01b0386165f90815260046020526040812054919250908190819060ff1615611c1c57611bd66064611563611bcf600854600c546113c990919063ffffffff16565b89906117f2565b92505f600854118015611bec5750601e54601d54105b15611c1757611c0b6064611563600854896117f290919063ffffffff16565b9150611c178883611d5d565b611cac565b6001600160a01b0387165f9081526004602052604090205460ff1615611cac57611c5b6064611563611bcf601154600d546113c990919063ffffffff16565b92505f611c6882866113c9565b10611cac575f601154118015611c815750601e54601d54105b15611cac57611ca06064611563601154896117f290919063ffffffff16565b9150611cac8883611d5d565b8215611d1157305f90815260196020526040902054611ccb908461140a565b305f81815260196020526040908190209290925590516001600160a01b038a16905f8051602061215b83398151915290611d089087815260200190565b60405180910390a35b611d25611d1e848461140a565b87906113c9565b98975050505050505050565b5f8183611d515760405162461bcd60e51b8152600401610a139190611df0565b505f6113c0848661204b565b601e54601d5410611d6c575050565b600b546001600160a01b03165f90815260196020526040902054611d90908261140a565b600b546001600160a01b03165f90815260196020526040902055601d54611db7908261140a565b601d55600b546040518281526001600160a01b03918216918416905f8051602061215b8339815191529060200160405180910390a35050565b5f6020808352835180828501525f5b81811015611e1b57858101830151858201604001528201611dff565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e4f575f80fd5b50565b5f8060408385031215611e63575f80fd5b8235611e6e81611e3b565b946020939093013593505050565b5f805f60608486031215611e8e575f80fd5b8335611e9981611e3b565b92506020840135611ea981611e3b565b929592945050506040919091013590565b5f60208284031215611eca575f80fd5b813561098381611e3b565b5f8060408385031215611ee6575f80fd5b8235611ef181611e3b565b91506020830135611f0181611e3b565b809150509250929050565b600181811c90821680611f2057607f821691505b602082108103611f3e57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611f89575f80fd5b815161098381611e3b565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215611fe1575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561091b5761091b611ffa565b8082018082111561091b5761091b611ffa565b808202811582820484141761091b5761091b611ffa565b5f8261206557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b838110156120b55781516001600160a01b031687529582019590820190600101612090565b509495945050505050565b85815284602082015260a060408201525f6120de60a083018661207e565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f612113604083018461207e565b949350505050565b5f6020828403121561212b575f80fd5b505191905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220155abf35f2e447387581d8b58c35f063f9f57d965bc4ffef06d9606b34305fc864736f6c63430008140033000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000055e3019625426190d022f0e2a3d32b7c012484dc00000000000000000000000055e3019625426190d022f0e2a3d32b7c012484dc000000000000000000000000761e19483441ee33c9f82696dd3f40306adbb262