6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a620006f0565b62000041906298968062000701565b6005556200007b6064620000676002600554620004c060201b620012361790919060201c565b6200055760201b620012b81790919060201c565b600655620000a16064620000676002600554620004c060201b620012361790919060201c565b6007556000600d556006600e556000600f5560046010556000601155601154600f54600d54600e54601054620000d891906200071b565b620000e491906200071b565b620000f091906200071b565b620000fc91906200071b565b60125560646013819055601481815560158290556103e8601655601f5560208190556023805461ffff60a01b1916600160a81b1790556005546127109162000145919062000701565b62000151919062000731565b6024553480156200016157600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350602180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000221573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000247919062000754565b600280546001600160a01b0319166001600160a01b039283161790556021546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015620002a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cc919062000754565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af11580156200031e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000344919062000754565b602380546001600160a01b039283166001600160a01b0319918216811783556022805483169091179055306000818152600960209081526040808320602154881684528252808320600019905533808452600a8352818420805460ff199081166001908117909255601980548b1687528487208054831684179055838752600b8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601880548b1687528487208054831684179055968652838620805490911690911790556017805487168217905584548616732e644809e9eece3b1112061a045987df160597cc17909455855485168417909555601a8054851673c8772fd100d0c9cd1f76bd32b596070feec8ed9d179055600354601b80549095169616959095179092556005548183526008855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620007cf565b600082600003620004d45750600062000551565b6000620004e2838562000701565b905082620004f1858362000731565b146200054e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200054e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620005a160201b60201c565b60008183620005c55760405162461bcd60e51b81526004016200054591906200077f565b506000620005d4848662000731565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000634578160001904821115620006185762000618620005dd565b808516156200062657918102915b93841c9390800290620005f8565b509250929050565b6000826200064d5750600162000551565b816200065c5750600062000551565b81600181146200067557600281146200068057620006a0565b600191505062000551565b60ff841115620006945762000694620005dd565b50506001821b62000551565b5060208310610133831016604e8410600b8410161715620006c5575081810a62000551565b620006d18383620005f3565b8060001904821115620006e857620006e8620005dd565b029392505050565b60006200054e60ff8416836200063c565b8082028115828204841417620005515762000551620005dd565b80820180821115620005515762000551620005dd565b6000826200074f57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200076757600080fd5b81516001600160a01b03811681146200054e57600080fd5b600060208083528351808285015260005b81811015620007ae5785810183015185820160400152820162000790565b506000604082860101526040601f19601f8301168501019250505092915050565b6124b680620007df6000396000f3fe6080604052600436106102605760003560e01c80637d1db4a511610144578063b2bdfa7b116100b6578063d51ed1c81161007a578063d51ed1c814610719578063d78e139d14610739578063dd62ed3e14610759578063f2fde38b1461079f578063f6a78e17146107bf578063f887ea40146107d457600080fd5b8063b2bdfa7b14610684578063bc337182146106a4578063ccf8c036146106c4578063cec10c11146106e4578063d148b74c1461070457600080fd5b806395d89b411161010857806395d89b41146105b8578063976a66da146105e45780639acb773e146106045780639f11080e14610624578063a8aa1b3114610644578063a9059cbb1461066457600080fd5b80637d1db4a51461051d578063893d20e8146105335780638a4068dd146105655780638da5cb5b1461057a578063918924761461059857600080fd5b806323b872dd116101dd5780636ddd1713116101a15780636ddd17131461045b57806370a082311461047c578063715018a6146104b257806377b54bad146104c757806378109e54146104e75780637bae52e1146104fd57600080fd5b806323b872dd146103ca5780632b112e49146103ea578063313ce567146103ff5780635b24ea5e1461041b5780635d0044ca1461043b57600080fd5b8063095ea7b311610224578063095ea7b31461033f5780631161ae391461035f57806313f97a8e1461037f57806318160ddd1461039f5780631df4ccfc146103b457600080fd5b806304368f651461026c5780630445b6671461028e5780630621472c146102b757806306fdde03146102e757806308fd3d051461031e57600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028c610287366004611f0d565b6107f4565b005b34801561029a57600080fd5b506102a460245481565b6040519081526020015b60405180910390f35b3480156102c357600080fd5b506102d76102d2366004611f50565b610849565b60405190151581526020016102ae565b3480156102f357600080fd5b50604080518082019091526005815264426574414960d81b60208201525b6040516102ae9190611f6b565b34801561032a57600080fd5b506023546102d790600160a01b900460ff1681565b34801561034b57600080fd5b506102d761035a366004611fb9565b61085d565b34801561036b57600080fd5b506102d761037a366004611fd5565b6108c9565b34801561038b57600080fd5b5061028c61039a36600461200d565b6108dd565b3480156103ab57600080fd5b506005546102a4565b3480156103c057600080fd5b506102a460125481565b3480156103d657600080fd5b506102d76103e53660046120e4565b610973565b3480156103f657600080fd5b506102a4610a35565b34801561040b57600080fd5b50604051600981526020016102ae565b34801561042757600080fd5b5061028c610436366004612120565b610a87565b34801561044757600080fd5b5061028c610456366004612157565b610adc565b34801561046757600080fd5b506023546102d790600160a81b900460ff1681565b34801561048857600080fd5b506102a4610497366004611f50565b6001600160a01b031660009081526008602052604090205490565b3480156104be57600080fd5b5061028c610b45565b3480156104d357600080fd5b506102d76104e2366004611fb9565b610bb9565b3480156104f357600080fd5b506102a460075481565b34801561050957600080fd5b5061028c610518366004612170565b610cb9565b34801561052957600080fd5b506102a460065481565b34801561053f57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102ae565b34801561057157600080fd5b5061028c610d42565b34801561058657600080fd5b506000546001600160a01b031661054d565b3480156105a457600080fd5b5061028c6105b33660046121d5565b610d8d565b3480156105c457600080fd5b5060408051808201909152600381526242414960e81b6020820152610311565b3480156105f057600080fd5b5061028c6105ff366004612218565b610e53565b34801561061057600080fd5b5061028c61061f366004612120565b610ea8565b34801561063057600080fd5b5061028c61063f366004611fd5565b610efd565b34801561065057600080fd5b5060235461054d906001600160a01b031681565b34801561067057600080fd5b506102d761067f366004611fb9565b610f32565b34801561069057600080fd5b5060005461054d906001600160a01b031681565b3480156106b057600080fd5b5061028c6106bf366004612157565b610f3f565b3480156106d057600080fd5b5061028c6106df366004612120565b610fa8565b3480156106f057600080fd5b5061028c6106ff366004612253565b611010565b34801561071057600080fd5b5061028c61104b565b34801561072557600080fd5b506102a4610734366004612157565b61107f565b34801561074557600080fd5b5061028c610754366004612157565b6110c6565b34801561076557600080fd5b506102a461077436600461227f565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156107ab57600080fd5b5061028c6107ba366004611f50565b611115565b3480156107cb57600080fd5b5061028c6111ff565b3480156107e057600080fd5b5060215461054d906001600160a01b031681565b6000546001600160a01b031633146108275760405162461bcd60e51b815260040161081e906122b2565b60405180910390fd5b60238054921515600160a81b0260ff60a81b1990931692909217909155602455565b60006108578260001961085d565b92915050565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108b89086815260200190565b60405180910390a350600192915050565b6000826108d58361107f565b119392505050565b6000546001600160a01b031633146109075760405162461bcd60e51b815260040161081e906122b2565b60005b825181101561096e5781600c600085848151811061092a5761092a6122e7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061096681612313565b91505061090a565b505050565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610a20576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546109fb9184906112fa565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610a2b848484611334565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054610a82906003546001600160a01b0316600090815260086020526040902054610a7c9060055490611715565b90611715565b905090565b6000546001600160a01b03163314610ab15760405162461bcd60e51b815260040161081e906122b2565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b065760405162461bcd60e51b815260040161081e906122b2565b6103e8600554610b16919061232c565b6007541015610b2457600080fd5b6103e881600554610b35919061234e565b610b3f919061232c565b60075550565b6000546001600160a01b03163314610b6f5760405162461bcd60e51b815260040161081e906122b2565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b336000908152600b602052604081205460ff16610bd557600080fd5b81600003610c48576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c459190612365565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2e919061237e565b6000546001600160a01b03163314610ce35760405162461bcd60e51b815260040161081e906122b2565b601780546001600160a01b03199081166001600160a01b03978816179091556018805482169587169590951790945560198054851693861693909317909255601b80548416918516919091179055601a80549092169216919091179055565b336000908152600b602052604090205460ff16610d5e57600080fd5b60405133904780156108fc02916000818181858888f19350505050158015610d8a573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610db75760405162461bcd60e51b815260040161081e906122b2565b600d8690556010859055600e849055600f8390556011829055610de882610de2858188818c8c611757565b90611757565b6012556013819055610dfb60058261232c565b60125410610e4b5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e20323025000000604482015260640161081e565b505050505050565b6000546001600160a01b03163314610e7d5760405162461bcd60e51b815260040161081e906122b2565b60238054941515600160a01b0260ff60a01b1990951694909417909355601591909155601455601655565b6000546001600160a01b03163314610ed25760405162461bcd60e51b815260040161081e906122b2565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f275760405162461bcd60e51b815260040161081e906122b2565b601f91909155602055565b6000610a2e338484611334565b6000546001600160a01b03163314610f695760405162461bcd60e51b815260040161081e906122b2565b6103e8600554610f79919061232c565b6006541015610f8757600080fd5b6103e881600554610f98919061234e565b610fa2919061232c565b60065550565b6000546001600160a01b03163314610fd25760405162461bcd60e51b815260040161081e906122b2565b6001600160a01b039091166000908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b6000546001600160a01b0316331461103a5760405162461bcd60e51b815260040161081e906122b2565b601491909155601591909155601655565b6000546001600160a01b031633146110755760405162461bcd60e51b815260040161081e906122b2565b61107d6117b6565b565b600061085761108c610a35565b6023546001600160a01b03166000908152600860205260409020546110c0906110b9906002905b90611236565b8590611236565b906112b8565b601a5447906001600160a01b03166108fc60646110e3858561234e565b6110ed919061232c565b6040518115909202916000818181858888f1935050505015801561096e573d6000803e3d6000fd5b6000546001600160a01b0316331461113f5760405162461bcd60e51b815260040161081e906122b2565b6001600160a01b0381166111a45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161081e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112295760405162461bcd60e51b815260040161081e906122b2565b6005546007819055600655565b60008260000361124857506000610857565b6000611254838561234e565b905082611261858361232c565b14610a2e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161081e565b6000610a2e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611b9d565b6000818484111561131e5760405162461bcd60e51b815260040161081e9190611f6b565b50600061132b848661239b565b95945050505050565b6001600160a01b0383166000908152600c602052604081205460ff1615801561137657506001600160a01b0383166000908152600c602052604090205460ff16155b6113b25760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b604482015260640161081e565b60255460ff16156113cf576113c8848484611bcb565b9050610a2e565b6001600160a01b03841660009081526001602052604090205460ff1615801561141157506001600160a01b03831660009081526001602052604090205460ff16155b1561146657602354600160a01b900460ff166114665760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161081e565b6001600160a01b03841660009081526001602052604090205460ff1615801561149857506001600160a01b0383163014155b80156114b257506003546001600160a01b03848116911614155b80156114cc57506023546001600160a01b03848116911614155b80156114e65750601b546001600160a01b03848116911614155b801561150057506018546001600160a01b03848116911614155b801561152557506001600160a01b0383166000908152600b602052604090205460ff16155b156115c6576001600160a01b03831660009081526008602052604090205460075461155084836123ae565b11156115c45760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161081e565b505b6115d08483611c9f565b6115d8611d0c565b156115e5576115e56117b6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600890915291909120546116379184906112fa565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff168061168457506001600160a01b0384166000908152600a602052604090205460ff165b61169857611693858486611d62565b61169a565b825b6001600160a01b0385166000908152600860205260409020549091506116c09082611757565b6001600160a01b038086166000818152600860205260409081902093909355915190871690600080516020612461833981519152906117029085815260200190565b60405180910390a3506001949350505050565b6000610a2e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112fa565b60008061176483856123ae565b905083811015610a2e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161081e565b6025805460ff19166001179055601f546020546000916117d5916108c9565b6117e157600d546117e4565b60005b9050600061180860026110c06012546110c08660245461123690919063ffffffff16565b905060006118218260245461171590919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061185b5761185b6122e7565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061188c5761188c6122e7565b6001600160a01b03928316602091820292909201015260215460405163791ac94760e01b81524792919091169063791ac947906118d69086906000908790309042906004016123c1565b600060405180830381600087803b1580156118f057600080fd5b505af1158015611904573d6000803e3d6000fd5b50505050600061191d824761171590919063ffffffff16565b9050600061193861192f8860026112b8565b60125490611715565b9050600061194d60026110c08481878d611236565b9050600061196a836110c0600e548761123690919063ffffffff16565b90506000611987846110c06010548861123690919063ffffffff16565b905060006119a4856110c0600f548961123690919063ffffffff16565b6018546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146119f6576040519150601f19603f3d011682016040523d82523d6000602084013e6119fb565b606091505b50506019546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611a4b576040519150601f19603f3d011682016040523d82523d6000602084013e611a50565b606091505b5050601a546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611aa0576040519150601f19603f3d011682016040523d82523d6000602084013e611aa5565b606091505b5060009250508b159050611b855760215460175460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611b23573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b489190612432565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506025805460ff1916905550505050505050505050565b60008183611bbe5760405162461bcd60e51b815260040161081e9190611f6b565b50600061132b848661232c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054611c1c9184906112fa565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611c4b9083611757565b6001600160a01b03808516600081815260086020526040908190209390935591519086169060008051602061246183398151915290611c8d9086815260200190565b60405180910390a35060019392505050565b60065481111580611cc857506001600160a01b0382166000908152600b602052604090205460ff165b611d085760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161081e565b5050565b6023546000906001600160a01b03163314801590611d2d575060255460ff16155b8015611d425750602354600160a81b900460ff165b8015610a8257505060245430600090815260086020526040902054101590565b601654602354600091906001600160a01b0390811690841603611d885750601454611da3565b6023546001600160a01b0390811690861603611da357506015545b6000611dd06013546064611db7919061234e565b6110c0846110b36012548a61123690919063ffffffff16565b90506000611def6012546110c06011548561123690919063ffffffff16565b90506000611dfd8383611715565b30600090815260086020526040902054909150611e1a9082611757565b3060009081526008602052604080822092909255601b546001600160a01b031681522054611e489083611757565b601b546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918b1691600080516020612461833981519152910160405180910390a38115611ed957600554611ea29083611715565b6005556004546040518381526001600160a01b03918216918a16906000805160206124618339815191529060200160405180910390a35b611ee38784611715565b98975050505050505050565b8015158114610d8a57600080fd5b8035611f0881611eef565b919050565b60008060408385031215611f2057600080fd5b8235611f2b81611eef565b946020939093013593505050565b80356001600160a01b0381168114611f0857600080fd5b600060208284031215611f6257600080fd5b610a2e82611f39565b600060208083528351808285015260005b81811015611f9857858101830151858201604001528201611f7c565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611fcc57600080fd5b611f2b83611f39565b60008060408385031215611fe857600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561202057600080fd5b823567ffffffffffffffff8082111561203857600080fd5b818501915085601f83011261204c57600080fd5b813560208282111561206057612060611ff7565b8160051b604051601f19603f8301168101818110868211171561208557612085611ff7565b6040529283528183019350848101820192898411156120a357600080fd5b948201945b838610156120c8576120b986611f39565b855294820194938201936120a8565b96506120d79050878201611efd565b9450505050509250929050565b6000806000606084860312156120f957600080fd5b61210284611f39565b925061211060208501611f39565b9150604084013590509250925092565b6000806040838503121561213357600080fd5b61213c83611f39565b9150602083013561214c81611eef565b809150509250929050565b60006020828403121561216957600080fd5b5035919050565b600080600080600060a0868803121561218857600080fd5b61219186611f39565b945061219f60208701611f39565b93506121ad60408701611f39565b92506121bb60608701611f39565b91506121c960808701611f39565b90509295509295909350565b60008060008060008060c087890312156121ee57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000806000806080858703121561222e57600080fd5b843561223981611eef565b966020860135965060408601359560600135945092505050565b60008060006060848603121561226857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561229257600080fd5b61229b83611f39565b91506122a960208401611f39565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612325576123256122fd565b5060010190565b60008261234957634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610857576108576122fd565b60006020828403121561237757600080fd5b5051919050565b60006020828403121561239057600080fd5b8151610a2e81611eef565b81810381811115610857576108576122fd565b80820180821115610857576108576122fd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124115784516001600160a01b0316835293830193918301916001016123ec565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561244757600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122043f04a3387e1a8abfc88e762cf9f6b8fcb1f74bed7bf9958dad01e86b54141b564736f6c63430008110033