6080604052620000126009600a62000314565b6200002290633b9aca006200032b565b60018190556006805461ffff60a01b191690555f600955612710906200004a90600a6200032b565b62000056919062000345565b600a55612710600154600a6200006d91906200032b565b62000079919062000345565b600b55600c80546001600160a01b031990811673947823f4dd1f4431853f8bd964b9b39069b7b34817909155600d805490911673d4477931f96ada4d38b62b8b920f96bb7827b3eb1790555f600e556001600f81905560108190556011819055606460128190559054620000ef9060026200032b565b620000fb919062000345565b601355606460015460026200011191906200032b565b6200011d919062000345565b601455606460015460026200013391906200032b565b6200013f919062000345565b6015553480156200014e575f80fd5b505f80546001600160a01b031916339081178255600c546001600160a01b039081168352600460209081526040808520805460ff199081166001908117909255600d54909416865281862080548516821790559385528085208054841685179055308086528186208054909416851790935592546002825283852081905592519283529092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000365565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200025957815f19048211156200023d576200023d62000205565b808516156200024b57918102915b93841c93908002906200021e565b509250929050565b5f8262000271575060016200030e565b816200027f57505f6200030e565b8160018114620002985760028114620002a357620002c3565b60019150506200030e565b60ff841115620002b757620002b762000205565b50506001821b6200030e565b5060208310610133831016604e8410600b8410161715620002e8575081810a6200030e565b620002f4838362000219565b805f19048211156200030a576200030a62000205565b0290505b92915050565b5f6200032460ff84168362000261565b9392505050565b80820281158282048414176200030e576200030e62000205565b5f826200036057634e487b7160e01b5f52601260045260245ffd5b500490565b6118dc80620003735f395ff3fe60806040526004361061013f575f3560e01c80637cca52fe116100b3578063a9059cbb1161006d578063a9059cbb1461039a578063c0bbc868146103b9578063c9567bf9146103d8578063dd62ed3e146103e0578063e0bf7fd114610424578063f2fde38b14610452575f80fd5b80637cca52fe146102d55780637d1db4a5146102ea578063893d20e8146102ff5780638ebfc7961461032f57806395d89b411461034e578063a8aa1b311461037b575f80fd5b8063313ce56711610104578063313ce567146102285780635050282c1461024357806370a0823114610264578063715018a614610298578063751039fc146102ac57806378109e54146102c0575f80fd5b806306fdde031461014a578063095ea7b31461018b57806318160ddd146101ba57806323b872dd146101dc5780632f54bf6e146101fb575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5060408051808201909152600781526630785768616c6560c81b60208201525b6040516101829190611573565b60405180910390f35b348015610196575f80fd5b506101aa6101a53660046115d5565b610471565b6040519015158152602001610182565b3480156101c5575f80fd5b506101ce610487565b604051908152602001610182565b3480156101e7575f80fd5b506101aa6101f63660046115ff565b6104f7565b348015610206575f80fd5b506101aa61021536600461163d565b5f546001600160a01b0391821691161490565b348015610233575f80fd5b5060405160098152602001610182565b34801561024e575f80fd5b5061026261025d3660046115d5565b61055f565b005b34801561026f575f80fd5b506101ce61027e36600461163d565b6001600160a01b03165f9081526002602052604090205490565b3480156102a3575f80fd5b50610262610774565b3480156102b7575f80fd5b506102626107b7565b3480156102cb575f80fd5b506101ce60155481565b3480156102e0575f80fd5b506101ce60145481565b3480156102f5575f80fd5b506101ce60135481565b34801561030a575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610182565b34801561033a575f80fd5b50610262610349366004611665565b6107f2565b348015610359575f80fd5b506040805180820190915260058152645748414c4560d81b6020820152610175565b348015610386575f80fd5b50600654610317906001600160a01b031681565b3480156103a5575f80fd5b506101aa6103b43660046115d5565b610845565b3480156103c4575f80fd5b506101aa6103d33660046115d5565b610851565b61026261085d565b3480156103eb575f80fd5b506101ce6103fa36600461169c565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561042f575f80fd5b506101aa61043e36600461163d565b60046020525f908152604090205460ff1681565b34801561045d575f80fd5b5061026261046c36600461163d565b610ae3565b5f61047d338484610b5f565b5060015b92915050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc5460015491926104f29290916104ec9190610c82565b90610c82565b905090565b5f610503848484610c8d565b610554843361054f8560405180606001604052806028815260200161187f602891396001600160a01b038a165f908152600360209081526040808320338452909152902054919061115d565b610b5f565b5060015b9392505050565b6040805160028082526060820183525f926020830190803683375050600554604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156105c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ea91906116c8565b815f815181106105fc576105fc6116e3565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610630576106306116e3565b60200260200101906001600160a01b031690816001600160a01b0316815250505f81600181518110610664576106646116e3565b602090810291909101810151335f908152600490925260409091205490915060ff166106f55760055460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de959085906106c2905f9087908a904290600401611739565b5f604051808303818588803b1580156106d9575f80fd5b505af11580156106eb573d5f803e3d5ffd5b505050505061076e565b6040516323b872dd60e01b81526001600160a01b03858116600483015282166024820181905260448201859052906323b872dd906064016020604051808303815f875af1158015610748573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076c919061176d565b505b50505050565b5f546001600160a01b031633146107a65760405162461bcd60e51b815260040161079d90611788565b60405180910390fd5b5f80546001600160a01b0319169055565b5f546001600160a01b031633146107e05760405162461bcd60e51b815260040161079d90611788565b60015460138190556014819055601555565b5f546001600160a01b0316331461081b5760405162461bcd60e51b815260040161079d90611788565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f61047d338484610c8d565b5f61047d833084610b5f565b5f546001600160a01b031633146108865760405162461bcd60e51b815260040161079d90611788565b6006805461ffff60a01b191661010160a01b1790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d915f91839163c45a01559160048083019260209291908290030181865afa1580156108ed573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091191906116c8565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098091906116c8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ee91906116c8565b600580546001600160a01b038086166001600160a01b031992831681179093556006805491851691909216179055909150610a2c9030905f19610b5f565b6005546001600160a01b031663f305d7193430610a5d816001600160a01b03165f9081526002602052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b03909216600483015260248201525f6044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610abe573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061076c91906117a8565b5f546001600160a01b03163314610b0c5760405162461bcd60e51b815260040161079d90611788565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610bc15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161079d565b6001600160a01b038216610c225760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161079d565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61055882846117e7565b6001600160a01b038316610cf15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161079d565b6001600160a01b038216610d535760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161079d565b6001600160a01b0383165f9081526004602052604090205460ff16158015610d9357506001600160a01b0382165f9081526004602052604090205460ff16155b15610de257600654600160a01b900460ff16610de25760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d15b98589b195960921b604482015260640161079d565b6001600160a01b0383165f9081526004602052604090205460ff16158015610e2257506001600160a01b0382165f9081526004602052604090205460ff16155b8015610e3c57506006546001600160a01b03838116911614155b8015610e5357506001600160a01b03821661dead14155b15610ecb576015546001600160a01b0383165f90815260026020526040902054610e7d9083611188565b1115610ecb5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161079d565b6006546001600160a01b03848116911614610f6a5760145481111580610f0857506001600160a01b0383165f9081526004602052604090205460ff165b80610f2a57506001600160a01b0382165f9081526004602052604090205460ff165b610f6a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161079d565b60135481111580610f9257506001600160a01b0383165f9081526004602052604090205460ff165b80610fb457506001600160a01b0382165f9081526004602052604090205460ff165b610ff45760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161079d565b6006546001600160a01b03838116911614801561102957506001600160a01b0383165f9081526004602052604090205460ff16155b1561105b57600c546007546001600160a01b03909116319061104d906001906117fa565b61105791906117e7565b6007555b611066838383611193565b1561107b57611076600a5461124b565b5f6007555b6001600160a01b0383165f9081526002602052604090205461109d9082610c82565b6001600160a01b0384165f908152600260205260408120919091556110c2848461126e565b6110cc57816110d7565b6110d78484846112b2565b6001600160a01b0384165f908152600260205260409020549091506110fc9082611188565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061114f9085815260200190565b60405180910390a350505050565b5f81848411156111805760405162461bcd60e51b815260040161079d9190611573565b505050900390565b5f61055882846117fa565b600b54600a54305f9081526002602052604081205460085491938510159211159060ff161580156111cd5750600654600160a81b900460ff165b80156111e25750600654600160a01b900460ff165b80156111eb5750815b801561120f57506001600160a01b0386165f9081526004602052604090205460ff16155b801561122857506006546001600160a01b038681169116145b8015611238575060095460075410155b80156112415750805b9695505050505050565b6008805460ff19166001179055611261816113bf565b506008805460ff19169055565b6001600160a01b0382165f9081526004602052604081205460ff161580156105585750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f806112be8585611513565b11156113b8575f6112e56012546112df6112d88888611513565b869061155d565b90611568565b305f908152600260205260409020549091506113019082611188565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113519085815260200190565b60405180910390a35f600e541180156113745750600e546113728686611513565b115b156113a6576113a63061dead6113a1600e5461139b6012548961156890919063ffffffff16565b9061155d565b610c8d565b6113b08382610c82565b915050610558565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106113f2576113f26116e3565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611449573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061146d91906116c8565b81600181518110611480576114806116e3565b6001600160a01b0392831660209182029290920101526005546114a69130911684610b5f565b600554600d5460405163791ac94760e01b81526001600160a01b039283169263791ac947926114e29287925f928892911690429060040161180d565b5f604051808303815f87803b1580156114f9575f80fd5b505af115801561150b573d5f803e3d5ffd5b505050505050565b6006545f906001600160a01b03908116908316036115345750601054610481565b6006546001600160a01b03908116908416036115535750600f54610481565b5060115492915050565b5f6105588284611848565b5f610558828461185f565b5f6020808352835180828501525f5b8181101561159e57858101830151858201604001528201611582565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115d2575f80fd5b50565b5f80604083850312156115e6575f80fd5b82356115f1816115be565b946020939093013593505050565b5f805f60608486031215611611575f80fd5b833561161c816115be565b9250602084013561162c816115be565b929592945050506040919091013590565b5f6020828403121561164d575f80fd5b8135610558816115be565b80151581146115d2575f80fd5b5f8060408385031215611676575f80fd5b8235611681816115be565b9150602083013561169181611658565b809150509250929050565b5f80604083850312156116ad575f80fd5b82356116b8816115be565b91506020830135611691816115be565b5f602082840312156116d8575f80fd5b8151610558816115be565b634e487b7160e01b5f52603260045260245ffd5b5f8151808452602080850194508084015f5b8381101561172e5781516001600160a01b031687529582019590820190600101611709565b509495945050505050565b848152608060208201525f61175160808301866116f7565b6001600160a01b03949094166040830152506060015292915050565b5f6020828403121561177d575f80fd5b815161055881611658565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f805f606084860312156117ba575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610481576104816117d3565b80820180821115610481576104816117d3565b85815284602082015260a060408201525f61182b60a08301866116f7565b6001600160a01b0394909416606083015250608001529392505050565b8082028115828204841417610481576104816117d3565b5f8261187957634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122046bbbd470b2f65d85be2ef3cd8ae563979de5f2343cbff0c4288085f7a761b4164736f6c63430008140033