6080604052600f6005819055600655606461001c6012600a610312565b61002b906401dcd65000610327565b610036906001610327565b610040919061033e565b60075560646100516012600a610312565b610060906401dcd65000610327565b61006b906001610327565b610075919061033e565b60085560646100866012600a610312565b610095906401dcd65000610327565b6100a0906001610327565b6100aa919061033e565b6009556103e86100bc6012600a610312565b6100cb906401dcd65000610327565b6100d6906001610327565b6100e0919061033e565b600a553480156100ee575f5ffd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060048054336001600160a01b03199182168117909255600d8054909116301781555f91825260036020526040808320805460ff19908116600190811790925592546001600160a01b031684529220805490911690911790556101936012600a610312565b6101a2906401dcd65000610327565b6004546001600160a01b03165f90815260016020526040902055336001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6101f46012600a610312565b610203906401dcd65000610327565b60405190815260200160405180910390a361035d565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156102685780850481111561024c5761024c610219565b600184161561025a57908102905b60019390931c928002610231565b935093915050565b5f8261027e5750600161030c565b8161028a57505f61030c565b81600181146102a057600281146102aa576102c6565b600191505061030c565b60ff8411156102bb576102bb610219565b50506001821b61030c565b5060208310610133831016604e8410600b84101617156102e9575081810a61030c565b6102f55f19848461022d565b805f190482111561030857610308610219565b0290505b92915050565b5f61032060ff841683610270565b9392505050565b808202811582820484141761030c5761030c610219565b5f8261035857634e487b7160e01b5f52601260045260245ffd5b500490565b611e478061036a5f395ff3fe608060405260043610610164575f3560e01c8063751039fc116100cd578063bf474bed11610087578063dd62ed3e11610062578063dd62ed3e14610414578063e099412014610458578063f2fde38b14610477578063fc50baf514610496575f5ffd5b8063bf474bed146103d5578063c3a6912e146103ea578063d7091b71146103ff575f5ffd5b8063751039fc1461033e57806382247ec0146103525780638a8c523c146103675780638da5cb5b1461036f57806395d89b411461038b578063a9059cbb146103b6575f5ffd5b8063313ce5671161011e578063313ce56714610257578063429cead11461027257806349bd5a5e146102a057806361337b4e146102d757806370a08231146102f6578063715018a61461032a575f5ffd5b806306fdde031461016f578063095ea7b3146101b25780631006ee0c146101e157806318160ddd14610202578063217b6da61461022457806323b872dd14610238575f5ffd5b3661016b57005b5f5ffd5b34801561017a575f5ffd5b5060408051808201909152600981526826bab4323790243ab160b91b60208201525b6040516101a99190611901565b60405180910390f35b3480156101bd575f5ffd5b506101d16101cc36600461195d565b6104b5565b60405190151581526020016101a9565b3480156101ec575f5ffd5b506102006101fb366004611987565b6104cb565b005b34801561020d575f5ffd5b50610216610590565b6040519081526020016101a9565b34801561022f575f5ffd5b506101d16105b1565b348015610243575f5ffd5b506101d16102523660046119a7565b61062f565b348015610262575f5ffd5b50604051601281526020016101a9565b34801561027d575f5ffd5b506101d161028c3660046119e5565b60036020525f908152604090205460ff1681565b3480156102ab575f5ffd5b50600c546102bf906001600160a01b031681565b6040516001600160a01b0390911681526020016101a9565b3480156102e2575f5ffd5b506102006102f1366004611a2c565b610696565b348015610301575f5ffd5b506102166103103660046119e5565b6001600160a01b03165f9081526001602052604090205490565b348015610335575f5ffd5b5061020061071e565b348015610349575f5ffd5b5061020061078f565b34801561035d575f5ffd5b5061021660095481565b610200610890565b34801561037a575f5ffd5b505f546001600160a01b03166102bf565b348015610396575f5ffd5b50604080518082019091526003815262444e4160e81b602082015261019c565b3480156103c1575f5ffd5b506101d16103d036600461195d565b610c55565b3480156103e0575f5ffd5b50610216600a5481565b3480156103f5575f5ffd5b5061021660075481565b34801561040a575f5ffd5b5061021660085481565b34801561041f575f5ffd5b5061021661042e366004611b09565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610463575f5ffd5b50610200610472366004611b40565b610c61565b348015610482575f5ffd5b506102006104913660046119e5565b610c8f565b3480156104a1575f5ffd5b506101d16104b03660046119e5565b610d76565b5f6104c1338484610e80565b5060015b92915050565b6004546001600160a01b0316336001600160a01b0316146104ea575f5ffd5b60055482111561053a5760405162461bcd60e51b81526020600482015260166024820152754d75737420726564756365207461786573206f6e6c7960501b60448201526064015b60405180910390fd5b6006548111156105855760405162461bcd60e51b81526020600482015260166024820152754d75737420726564756365207461786573206f6e6c7960501b6044820152606401610531565b600591909155600655565b5f61059d6012600a611c4e565b6105ac906401dcd65000611c5c565b905090565b6004545f906001600160a01b0316336001600160a01b0316146105d2575f5ffd5b600454600d546040516001600160a01b039283169290911631905f81818185875af1925050503d805f8114610622576040519150601f19603f3d011682016040523d82523d5f602084013e610627565b606091505b509092915050565b5f61063b848484610fa3565b61068c843361068785604051806060016040528060288152602001611dea602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061152b565b610e80565b5060019392505050565b5f546001600160a01b031633146106bf5760405162461bcd60e51b815260040161053190611c73565b5f5b8251811015610719578160035f8584815181106106e0576106e0611ca8565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016106c1565b505050565b5f546001600160a01b031633146107475760405162461bcd60e51b815260040161053190611c73565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107b85760405162461bcd60e51b815260040161053190611c73565b6107c46012600a611c4e565b6107d3906401dcd65000611c5c565b6007556107e26012600a611c4e565b6107f1906401dcd65000611c5c565b6009557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6108216012600a611c4e565b610830906401dcd65000611c5c565b60405190815260200160405180910390a17f4b39c36d20c57d220f61fd25c4349d4435cc03ef6c2a680942f15333c3c3e00161086e6012600a611c4e565b61087d906401dcd65000611c5c565b60405190815260200160405180910390a1565b5f546001600160a01b031633146108b95760405162461bcd60e51b815260040161053190611c73565b600d54600160a01b900460ff16156109135760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610531565b61093e33600d546001600160a01b031661092f6012600a611c4e565b610687906401dcd65000611c5c565b61095c33600d546001600160a01b031661095733610310565b610fa3565b600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156109be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e29190611cbc565b600d54600b54604080516315ab88c960e31b815290516001600160a01b039485169463c9c6539694811693169163ad5c46489160048083019260209291908290030181865afa158015610a37573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a5b9190611cbc565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610aa5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac99190611cbc565b600c80546001600160a01b0319166001600160a01b03928316908117909155600b5460405163095ea7b360e01b8152921660048301525f1960248301529063095ea7b3906044016020604051808303815f875af1158015610b2c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b509190611cd7565b50600d54600b54610b74916001600160a01b03908116911661092f6012600a611c4e565b600b54600d546001600160a01b039182169163f305d71991349116610bad816001600160a01b03165f9081526001602052604090205490565b6004805460405160e087901b6001600160e01b03191681526001600160a01b039485169281019290925260248201929092525f604482018190526064820152911660848201524260a482015260c40160606040518083038185885af1158015610c18573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c3d9190611cf2565b5050600d805460ff60a01b1916600160a01b17905550565b5f6104c1338484610fa3565b5f546001600160a01b03163314610c8a5760405162461bcd60e51b815260040161053190611c73565b600755565b5f546001600160a01b03163314610cb85760405162461bcd60e51b815260040161053190611c73565b6001600160a01b038116610d1d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610531565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6004545f906001600160a01b0316336001600160a01b031614610d97575f5ffd5b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610ddb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dff9190611d1d565b6004805460405163a9059cbb60e01b81526001600160a01b0391821692810192909252602482018390529192509084169063a9059cbb906044016020604051808303815f875af1158015610e55573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e799190611cd7565b9392505050565b6001600160a01b038316610ee25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610531565b6001600160a01b038216610f435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610531565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110075760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610531565b6001600160a01b0382166110695760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610531565b5f81116110ca5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610531565b600d545f90600160a01b900460ff16611161576001600160a01b0383165f9081526003602052604090205460ff168061111a57506001600160a01b0384165f9081526003602052604090205460ff165b61115c5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610531565b611466565b5f546001600160a01b0385811691161480159061118b57505f546001600160a01b03848116911614155b156113dd57600c546001600160a01b0385811691161480156111bb5750600b546001600160a01b03848116911614155b156112af576007548211156112125760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617820627579206c696d69742e0000000000006044820152606401610531565b60095482611234856001600160a01b03165f9081526001602052604090205490565b61123e9190611d34565b111561128c5760405162461bcd60e51b815260206004820152601d60248201527f4578636565647320746865206d61782077616c6c6574206c696d69742e0000006044820152606401610531565b6112ac60646112a66005548561156390919063ffffffff16565b906115e1565b90505b600c546001600160a01b0384811691161480156112da5750600d546001600160a01b03858116911614155b1561134e576007548211156113315760405162461bcd60e51b815260206004820152601b60248201527f4578636565647320746865206d61782073656c6c206c696d69742e00000000006044820152606401610531565b61134b60646112a66006548561156390919063ffffffff16565b90505b600d546001600160a01b0381165f9081526001602052604090205490600160a81b900460ff1615801561138e5750600c546001600160a01b038581169116145b801561139b5750600a5481115b156113db576113bd6113b8846113b384600854611622565b611622565b611636565b600d546001600160a01b03163180156113d9576113d98161179f565b505b505b801561146657600d546001600160a01b03165f908152600160205260409020546114079082611836565b600d80546001600160a01b039081165f90815260016020908152604091829020949094559154915184815291811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b6001600160a01b0384165f908152600160205260409020546114889083611894565b6001600160a01b0385165f908152600160205260409020556114cb6114ad8383611894565b6001600160a01b0385165f9081526001602052604090205490611836565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6115148585611894565b60405190815260200160405180910390a350505050565b5f818484111561154e5760405162461bcd60e51b81526004016105319190611901565b505f61155a8486611d47565b95945050505050565b5f825f0361157257505f6104c5565b5f61157d8385611c5c565b90508261158a8583611d5a565b14610e795760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610531565b5f610e7983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118d5565b5f8183116116305782610e79565b50919050565b600d805460ff60a81b1916600160a81b1790556040805160028082526060820183525f926020830190803683375050600d5482519293506001600160a01b0316918391505f9061168857611688611ca8565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116df573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117039190611cbc565b8160018151811061171657611716611ca8565b6001600160a01b039283166020918202929092010152600b54600d5460405163791ac94760e01b81529183169263791ac947926117619287925f928892909116904290600401611d79565b5f604051808303815f87803b158015611778575f5ffd5b505af115801561178a573d5f5f3e3d5ffd5b5050600d805460ff60a81b1916905550505050565b6004546040515f916001600160a01b03169083908381818185875af1925050503d805f81146117e9576040519150601f19603f3d011682016040523d82523d5f602084013e6117ee565b606091505b50509050806118325760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610531565b5050565b5f806118428385611d34565b905083811015610e795760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610531565b5f610e7983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061152b565b5f81836118f55760405162461bcd60e51b81526004016105319190611901565b505f61155a8486611d5a565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461194a575f5ffd5b50565b803561195881611936565b919050565b5f5f6040838503121561196e575f5ffd5b823561197981611936565b946020939093013593505050565b5f5f60408385031215611998575f5ffd5b50508035926020909101359150565b5f5f5f606084860312156119b9575f5ffd5b83356119c481611936565b925060208401356119d481611936565b929592945050506040919091013590565b5f602082840312156119f5575f5ffd5b8135610e7981611936565b634e487b7160e01b5f52604160045260245ffd5b801515811461194a575f5ffd5b803561195881611a14565b5f5f60408385031215611a3d575f5ffd5b823567ffffffffffffffff811115611a53575f5ffd5b8301601f81018513611a63575f5ffd5b803567ffffffffffffffff811115611a7d57611a7d611a00565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611aaa57611aaa611a00565b604052918252602081840181019290810188841115611ac7575f5ffd5b6020850194505b83851015611aed57611adf8561194d565b815260209485019401611ace565b509450611b009250505060208401611a21565b90509250929050565b5f5f60408385031215611b1a575f5ffd5b8235611b2581611936565b91506020830135611b3581611936565b809150509250929050565b5f60208284031215611b50575f5ffd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611ba657808504811115611b8a57611b8a611b57565b6001841615611b9857908102905b60019390931c928002611b6f565b935093915050565b5f82611bbc575060016104c5565b81611bc857505f6104c5565b8160018114611bde5760028114611be857611c04565b60019150506104c5565b60ff841115611bf957611bf9611b57565b50506001821b6104c5565b5060208310610133831016604e8410600b8410161715611c27575081810a6104c5565b611c335f198484611b6b565b805f1904821115611c4657611c46611b57565b029392505050565b5f610e7960ff841683611bae565b80820281158282048414176104c5576104c5611b57565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611ccc575f5ffd5b8151610e7981611936565b5f60208284031215611ce7575f5ffd5b8151610e7981611a14565b5f5f5f60608486031215611d04575f5ffd5b5050815160208301516040909301519094929350919050565b5f60208284031215611d2d575f5ffd5b5051919050565b808201808211156104c5576104c5611b57565b818103818111156104c5576104c5611b57565b5f82611d7457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611dc95783516001600160a01b0316835260209384019390920191600101611da2565b50506001600160a01b03959095166060840152505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205e724ab7fd73a93914da4c4da5a0781b04750c9c6c438a6dad1b80c95b5e585e64736f6c634300081c0033