0x6080604052600436106102605760003560e01c806395d89b4111610144578063c492f046116100b6578063dd62ed3e1161007a578063dd62ed3e14610709578063e2f456051461074f578063e7f444b314610765578063f2fde38b1461077b578063f302df8e1461079b578063ff574e57146107b157600080fd5b8063c492f0461461067d578063cb3a82ec1461069d578063ccb61358146106bd578063d0a39814146106d3578063d257b34f146106e957600080fd5b8063a9059cbb11610108578063a9059cbb146105bd578063aacebbe3146105dd578063b62496f5146105fd578063b9e937001461062d578063bbc0c74214610643578063c02466681461065d57600080fd5b806395d89b411461053c578063984f02d3146105515780639a36f932146105675780639a7a23d61461057d578063a457c2d71461059d57600080fd5b80636053a0e3116101dd57806370a08231116101a157806370a082311461047e578063715018a6146104b457806375f0a874146104c95780638519517a146104e957806388522998146104fe5780638da5cb5b1461051e57600080fd5b80636053a0e3146103ed5780636598d2d11461040757806368078952146104295780636ddd17131461043f5780636ee76e6b1461045e57600080fd5b80632c76d7a6116102245780632c76d7a614610320578063313ce5671461035857806333f5b15f1461037457806339509351146103945780634fbee193146103b457600080fd5b806306fdde031461026c578063095ea7b314610297578063099d0d30146102c757806318160ddd146102eb57806323b872dd1461030057600080fd5b3661026757005b600080fd5b34801561027857600080fd5b506102816107c7565b60405161028e9190611e93565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004611ef6565b610859565b604051901515815260200161028e565b3480156102d357600080fd5b506102dd60195481565b60405190815260200161028e565b3480156102f757600080fd5b506002546102dd565b34801561030c57600080fd5b506102b761031b366004611f22565b610870565b34801561032c57600080fd5b50600654610340906001600160a01b031681565b6040516001600160a01b03909116815260200161028e565b34801561036457600080fd5b506040516012815260200161028e565b34801561038057600080fd5b506102b761038f366004611ef6565b6108d9565b3480156103a057600080fd5b506102b76103af366004611ef6565b610987565b3480156103c057600080fd5b506102b76103cf366004611f63565b6001600160a01b03166000908152601c602052604090205460ff1690565b3480156103f957600080fd5b50600b546102b79060ff1681565b34801561041357600080fd5b50610427610422366004611f8e565b6109bd565b005b34801561043557600080fd5b506102dd60175481565b34801561044b57600080fd5b50600f546102b790610100900460ff1681565b34801561046a57600080fd5b50600954610340906001600160a01b031681565b34801561048a57600080fd5b506102dd610499366004611f63565b6001600160a01b031660009081526020819052604090205490565b3480156104c057600080fd5b50610427610a47565b3480156104d557600080fd5b50600854610340906001600160a01b031681565b3480156104f557600080fd5b50610427610abb565b34801561050a57600080fd5b50600754610340906001600160a01b031681565b34801561052a57600080fd5b506005546001600160a01b0316610340565b34801561054857600080fd5b50610281610c01565b34801561055d57600080fd5b506102dd600a5481565b34801561057357600080fd5b506102dd60115481565b34801561058957600080fd5b50610427610598366004611fac565b610c10565b3480156105a957600080fd5b506102b76105b8366004611ef6565b610cd6565b3480156105c957600080fd5b506102b76105d8366004611ef6565b610d25565b3480156105e957600080fd5b506104276105f8366004611f63565b610d32565b34801561060957600080fd5b506102b7610618366004611f63565b601d6020526000908152604090205460ff1681565b34801561063957600080fd5b506102dd60165481565b34801561064f57600080fd5b50600f546102b79060ff1681565b34801561066957600080fd5b50610427610678366004611fac565b610e14565b34801561068957600080fd5b50610427610698366004611fe5565b610e9d565b3480156106a957600080fd5b506104276106b8366004611f63565b610f79565b3480156106c957600080fd5b506102dd60155481565b3480156106df57600080fd5b506102dd60125481565b3480156106f557600080fd5b506102b761070436600461206b565b61105b565b34801561071557600080fd5b506102dd610724366004612084565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561075b57600080fd5b506102dd600c5481565b34801561077157600080fd5b506102dd60135481565b34801561078757600080fd5b50610427610796366004611f63565b6110a5565b3480156107a757600080fd5b506102dd60145481565b3480156107bd57600080fd5b506102dd60185481565b6060600380546107d6906120b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610802906120b2565b801561084f5780601f106108245761010080835404028352916020019161084f565b820191906000526020600020905b81548152906001019060200180831161083257829003601f168201915b5050505050905090565b60006108663384846111ef565b5060015b92915050565b600061087d848484611314565b6108cf84336108ca856040518060600160405280602881526020016123bc602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611711565b6111ef565b5060019392505050565b6005546000906001600160a01b0316331461090f5760405162461bcd60e51b8152600401610906906120ec565b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561095c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109809190612121565b9392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108669185906108ca9086611190565b6005546001600160a01b031633146109e75760405162461bcd60e51b8152600401610906906120ec565b6064811115610a315760405162461bcd60e51b81526020600482015260166024820152754d757374206265207365742062656c6f77203130302560501b6044820152606401610906565b600a55600b805460ff1916911515919091179055565b6005546001600160a01b03163314610a715760405162461bcd60e51b8152600401610906906120ec565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610ae55760405162461bcd60e51b8152600401610906906120ec565b6040517f537475636b204554482062616c616e63652066726f6d20636f6e7472616374208152701859191c995cdcc81c9958dbdd995c9959607a1b60208201526000903390479060310160006040518083038185875af1925050503d8060008114610b6c576040519150601f19603f3d011682016040523d82523d6000602084013e610b71565b606091505b5050905080610bfe5760405162461bcd60e51b815260206004820152604d60248201527f4661696c65642e204569746865722063616c6c6572206973206e6f742074686560448201527f206f776e6572206f722061646472657373206973206e6f742074686520636f6e60648201526c7472616374206164647265737360981b608482015260a401610906565b50565b6060600480546107d6906120b2565b6005546001600160a01b03163314610c3a5760405162461bcd60e51b8152600401610906906120ec565b6007546001600160a01b0390811690831603610cc85760405162461bcd60e51b815260206004820152604160248201527f54686520556e695377617020706169722063616e6e6f742062652072656d6f7660448201527f65642066726f6d204175746f6d617465644d61726b65744d616b6572506169726064820152607360f81b608482015260a401610906565b610cd2828261174b565b5050565b600061086633846108ca856040518060600160405280602581526020016123e4602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611711565b6000610866338484611314565b6005546001600160a01b03163314610d5c5760405162461bcd60e51b8152600401610906906120ec565b6001600160a01b038116610dac5760405162461bcd60e51b815260206004820152601760248201527663616e6e6f742073657420746f2030206164647265737360481b6044820152606401610906565b610db7816001610e14565b6008546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610e3e5760405162461bcd60e51b8152600401610906906120ec565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ec75760405162461bcd60e51b8152600401610906906120ec565b60005b82811015610f385781601c6000868685818110610ee957610ee961213e565b9050602002016020810190610efe9190611f63565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610f308161216a565b915050610eca565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051610f6c93929190612183565b60405180910390a1505050565b6005546001600160a01b03163314610fa35760405162461bcd60e51b8152600401610906906120ec565b6001600160a01b038116610ff35760405162461bcd60e51b815260206004820152601760248201527663616e6e6f742073657420746f2030206164647265737360481b6044820152606401610906565b610ffe816001610e14565b6009546040516001600160a01b03918216918316907fd4d40a3b1f9583a0988c5c88a673e36f30acbb182e4fb5b6c34911824352715a90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546000906001600160a01b031633146110885760405162461bcd60e51b8152600401610906906120ec565b61109a82670de0b6b3a76400006121dc565b600c55506001919050565b6005546001600160a01b031633146110cf5760405162461bcd60e51b8152600401610906906120ec565b6001600160a01b0381166111345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610906565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60008061119d83856121f3565b9050838110156109805760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610906565b6001600160a01b0383166112515760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610906565b6001600160a01b0382166112b25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610906565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661133a5760405162461bcd60e51b815260040161090690612206565b6001600160a01b0382166113605760405162461bcd60e51b81526004016109069061224b565b80600003611379576113748383600061179f565b505050565b600f5460ff161580611399575043600e54600261139691906121f3565b10155b1561143b576001600160a01b0383166000908152601c602052604090205460ff16806113dd57506001600160a01b0382166000908152601c602052604090205460ff165b61143b5760405162461bcd60e51b815260206004820152602960248201527f54726164696e6720697320616c77617973206163746976652061667465722064604482015268195c1b1bde5b595b9d60ba1b6064820152608401610906565b30600090815260208190526040902054600c54811080159081906114665750600f54610100900460ff165b801561147c5750600754600160a01b900460ff16155b80156114a157506001600160a01b0385166000908152601d602052604090205460ff16155b80156114c657506001600160a01b0385166000908152601c602052604090205460ff16155b80156114eb57506001600160a01b0384166000908152601c602052604090205460ff16155b15611519576007805460ff60a01b1916600160a01b17905561150b6118a8565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152601c602052604090205460ff600160a01b90920482161591168061156757506001600160a01b0385166000908152601c602052604090205460ff165b15611570575060005b600081156116fd576001600160a01b0386166000908152601d602052604090205460ff1680156115a257506000601254115b15611631576115c86011546115c260125488611ab190919063ffffffff16565b90611b33565b9050601254601354826115db91906121dc565b6115e5919061228e565b601a60008282546115f691906121f3565b909155505060125460145461160b90836121dc565b611615919061228e565b601b600082825461162691906121f3565b909155506116df9050565b6001600160a01b0387166000908152601d602052604090205460ff16801561165b57506000601654115b156116df5761167b6011546115c260165488611ab190919063ffffffff16565b90506016546017548261168e91906121dc565b611698919061228e565b601a60008282546116a991906121f3565b90915550506016546018546116be90836121dc565b6116c8919061228e565b601b60008282546116d991906121f3565b90915550505b80156116f0576116f087308361179f565b6116fa81866122b0565b94505b61170887878761179f565b50505050505050565b600081848411156117355760405162461bcd60e51b81526004016109069190611e93565b50600061174284866122b0565b95945050505050565b6001600160a01b0382166000818152601d6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166117c55760405162461bcd60e51b815260040161090690612206565b6001600160a01b0382166117eb5760405162461bcd60e51b81526004016109069061224b565b61182881604051806060016040528060268152602001612396602691396001600160a01b0386166000908152602081905260409020549190611711565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546118579082611190565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611307565b3060009081526020819052604081205490506000601b54601a546118cc91906121f3565b90508115806118d9575080155b156118e2575050565b6000476118ee84611b75565b60006118fa4783611ccf565b90506000611917856115c2601a5485611ab190919063ffffffff16565b90506000611934866115c2601b5486611ab190919063ffffffff16565b6009546040519192506001600160a01b0316908290600081818185875af1925050503d8060008114611982576040519150601f19603f3d011682016040523d82523d6000602084013e611987565b606091505b5050600b5490955060ff1615611a3f57600854600a546001600160a01b03909116906064906119b690856121dc565b6119c0919061228e565b6040517f4175746f6d61746564204275794261636b20636f6d706c6574656400000000008152601b0160006040518083038185875af1925050503d8060008114611a26576040519150601f19603f3d011682016040523d82523d6000602084013e611a2b565b606091505b505080955050611a3a47611d11565b611708565b600854604051665375636365737360c81b81526001600160a01b0390911690479060070160006040518083038185875af1925050503d8060008114611aa0576040519150601f19603f3d011682016040523d82523d6000602084013e611aa5565b606091505b50505050505050505050565b600082600003611ac35750600061086a565b6000611acf83856121dc565b905082611adc858361228e565b146109805760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610906565b600061098083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e65565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611baa57611baa61213e565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2791906122c3565b81600181518110611c3a57611c3a61213e565b6001600160a01b039283166020918202929092010152600654611c6091309116846111ef565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c99908590600090869030904290600401612324565b600060405180830381600087803b158015611cb357600080fd5b505af1158015611cc7573d6000803e3d6000fd5b505050505050565b600061098083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611711565b8015610bfe576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da591906122c3565b81600081518110611db857611db861213e565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611dec57611dec61213e565b6001600160a01b03928316602091820292909201015260065460085460405163b6f9de9560e01b81529183169263b6f9de95928692611e38926000928892909116904290600401612360565b6000604051808303818588803b158015611e5157600080fd5b505af1158015611708573d6000803e3d6000fd5b60008183611e865760405162461bcd60e51b81526004016109069190611e93565b506000611742848661228e565b600060208083528351808285015260005b81811015611ec057858101830151858201604001528201611ea4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bfe57600080fd5b60008060408385031215611f0957600080fd5b8235611f1481611ee1565b946020939093013593505050565b600080600060608486031215611f3757600080fd5b8335611f4281611ee1565b92506020840135611f5281611ee1565b929592945050506040919091013590565b600060208284031215611f7557600080fd5b813561098081611ee1565b8015158114610bfe57600080fd5b60008060408385031215611fa157600080fd5b8235611f1481611f80565b60008060408385031215611fbf57600080fd5b8235611fca81611ee1565b91506020830135611fda81611f80565b809150509250929050565b600080600060408486031215611ffa57600080fd5b833567ffffffffffffffff8082111561201257600080fd5b818601915086601f83011261202657600080fd5b81358181111561203557600080fd5b8760208260051b850101111561204a57600080fd5b6020928301955093505084013561206081611f80565b809150509250925092565b60006020828403121561207d57600080fd5b5035919050565b6000806040838503121561209757600080fd5b82356120a281611ee1565b91506020830135611fda81611ee1565b600181811c908216806120c657607f821691505b6020821081036120e657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561213357600080fd5b815161098081611f80565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161217c5761217c612154565b5060010190565b6040808252810183905260008460608301825b868110156121c65782356121a981611ee1565b6001600160a01b0316825260209283019290910190600101612196565b5080925050508215156020830152949350505050565b808202811582820484141761086a5761086a612154565b8082018082111561086a5761086a612154565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000826122ab57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561086a5761086a612154565b6000602082840312156122d557600080fd5b815161098081611ee1565b600081518084526020808501945080840160005b838110156123195781516001600160a01b0316875295820195908201906001016122f4565b509495945050505050565b85815284602082015260a06040820152600061234360a08301866122e0565b6001600160a01b0394909416606083015250608001529392505050565b84815260806020820152600061237960808301866122e0565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202da9ff6acbf11607f0f286e3a1e3b7e5b1160a272d0f5e5ef7e9665be78f402664736f6c63430008110033
0x60806040526032600a55600b805460ff191690556000600d819055600e55600f805461ffff191661010117905560646011553480156200003e57600080fd5b5060405180604001604052806005815260200164536b6f6c2160d81b8152506040518060400160405280600481526020016314d2d3d360e21b81525081600390816200008b91906200079d565b5060046200009a82826200079d565b5050506000620000af6200038960201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062002d24833981519152908290a350683635c9adc5dea00000600c556002601381905560016014819055733a0f76534c02e900a66cee5327ce54d0a1f7a121916a084595161401484a00000091620001359162000869565b6012556002601781905560016018819055620001519162000869565b601655600880546001600160a01b031990811673e3ce88f04e7369c13b11b54d1db774a997f31026179091556009805490911673fe031454b556c394a19d4c14b6ea6da60cc157b41790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91600091839163c45a01559160048083019260209291908290030181865afa158015620001f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021891906200088b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000266573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028c91906200088b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030091906200088b565b600680546001600160a01b038086166001600160a01b031992831617909255600780549284169290911691909117905590506200033f8160016200038d565b6200034c846001620003e1565b62000359306001620003e1565b6200036861dead6001620003e1565b6200037484846200048f565b6200037f846200058b565b50505050620008b6565b3390565b6001600160a01b0382166000818152601d6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620004305760405162461bcd60e51b8152602060048201819052602482015260008051602062002d0483398151915260448201526064015b60405180910390fd5b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620004e75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000427565b62000503816002546200068d60201b620011901790919060201c565b6002556001600160a01b0382166000908152602081815260409091205462000536918390620011906200068d821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620005d65760405162461bcd60e51b8152602060048201819052602482015260008051602062002d04833981519152604482015260640162000427565b6001600160a01b0381166200063d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000427565b6005546040516001600160a01b0380841692169060008051602062002d2483398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b505050565b6000806200069c838562000869565b905083811015620006f05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000427565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200072457607f821691505b6020821081036200074557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200068857600081815260208120601f850160051c81016020861015620007745750805b601f850160051c820191505b81811015620007955782815560010162000780565b505050505050565b81516001600160401b03811115620007b957620007b9620006f9565b620007d181620007ca84546200070f565b846200074b565b602080601f831160018114620008095760008415620007f05750858301515b600019600386901b1c1916600185901b17855562000795565b600085815260208120601f198616915b828110156200083a5788860151825594840194600190910190840162000819565b5085821015620008595787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620006f357634e487b7160e01b600052601160045260246000fd5b6000602082840312156200089e57600080fd5b81516001600160a01b0381168114620006f057600080fd5b61243e80620008c66000396000f3fe6080604052600436106102605760003560e01c806395d89b4111610144578063c492f046116100b6578063dd62ed3e1161007a578063dd62ed3e14610709578063e2f456051461074f578063e7f444b314610765578063f2fde38b1461077b578063f302df8e1461079b578063ff574e57146107b157600080fd5b8063c492f0461461067d578063cb3a82ec1461069d578063ccb61358146106bd578063d0a39814146106d3578063d257b34f146106e957600080fd5b8063a9059cbb11610108578063a9059cbb146105bd578063aacebbe3146105dd578063b62496f5146105fd578063b9e937001461062d578063bbc0c74214610643578063c02466681461065d57600080fd5b806395d89b411461053c578063984f02d3146105515780639a36f932146105675780639a7a23d61461057d578063a457c2d71461059d57600080fd5b80636053a0e3116101dd57806370a08231116101a157806370a082311461047e578063715018a6146104b457806375f0a874146104c95780638519517a146104e957806388522998146104fe5780638da5cb5b1461051e57600080fd5b80636053a0e3146103ed5780636598d2d11461040757806368078952146104295780636ddd17131461043f5780636ee76e6b1461045e57600080fd5b80632c76d7a6116102245780632c76d7a614610320578063313ce5671461035857806333f5b15f1461037457806339509351146103945780634fbee193146103b457600080fd5b806306fdde031461026c578063095ea7b314610297578063099d0d30146102c757806318160ddd146102eb57806323b872dd1461030057600080fd5b3661026757005b600080fd5b34801561027857600080fd5b506102816107c7565b60405161028e9190611e93565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004611ef6565b610859565b604051901515815260200161028e565b3480156102d357600080fd5b506102dd60195481565b60405190815260200161028e565b3480156102f757600080fd5b506002546102dd565b34801561030c57600080fd5b506102b761031b366004611f22565b610870565b34801561032c57600080fd5b50600654610340906001600160a01b031681565b6040516001600160a01b03909116815260200161028e565b34801561036457600080fd5b506040516012815260200161028e565b34801561038057600080fd5b506102b761038f366004611ef6565b6108d9565b3480156103a057600080fd5b506102b76103af366004611ef6565b610987565b3480156103c057600080fd5b506102b76103cf366004611f63565b6001600160a01b03166000908152601c602052604090205460ff1690565b3480156103f957600080fd5b50600b546102b79060ff1681565b34801561041357600080fd5b50610427610422366004611f8e565b6109bd565b005b34801561043557600080fd5b506102dd60175481565b34801561044b57600080fd5b50600f546102b790610100900460ff1681565b34801561046a57600080fd5b50600954610340906001600160a01b031681565b34801561048a57600080fd5b506102dd610499366004611f63565b6001600160a01b031660009081526020819052604090205490565b3480156104c057600080fd5b50610427610a47565b3480156104d557600080fd5b50600854610340906001600160a01b031681565b3480156104f557600080fd5b50610427610abb565b34801561050a57600080fd5b50600754610340906001600160a01b031681565b34801561052a57600080fd5b506005546001600160a01b0316610340565b34801561054857600080fd5b50610281610c01565b34801561055d57600080fd5b506102dd600a5481565b34801561057357600080fd5b506102dd60115481565b34801561058957600080fd5b50610427610598366004611fac565b610c10565b3480156105a957600080fd5b506102b76105b8366004611ef6565b610cd6565b3480156105c957600080fd5b506102b76105d8366004611ef6565b610d25565b3480156105e957600080fd5b506104276105f8366004611f63565b610d32565b34801561060957600080fd5b506102b7610618366004611f63565b601d6020526000908152604090205460ff1681565b34801561063957600080fd5b506102dd60165481565b34801561064f57600080fd5b50600f546102b79060ff1681565b34801561066957600080fd5b50610427610678366004611fac565b610e14565b34801561068957600080fd5b50610427610698366004611fe5565b610e9d565b3480156106a957600080fd5b506104276106b8366004611f63565b610f79565b3480156106c957600080fd5b506102dd60155481565b3480156106df57600080fd5b506102dd60125481565b3480156106f557600080fd5b506102b761070436600461206b565b61105b565b34801561071557600080fd5b506102dd610724366004612084565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561075b57600080fd5b506102dd600c5481565b34801561077157600080fd5b506102dd60135481565b34801561078757600080fd5b50610427610796366004611f63565b6110a5565b3480156107a757600080fd5b506102dd60145481565b3480156107bd57600080fd5b506102dd60185481565b6060600380546107d6906120b2565b80601f0160208091040260200160405190810160405280929190818152602001828054610802906120b2565b801561084f5780601f106108245761010080835404028352916020019161084f565b820191906000526020600020905b81548152906001019060200180831161083257829003601f168201915b5050505050905090565b60006108663384846111ef565b5060015b92915050565b600061087d848484611314565b6108cf84336108ca856040518060600160405280602881526020016123bc602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611711565b6111ef565b5060019392505050565b6005546000906001600160a01b0316331461090f5760405162461bcd60e51b8152600401610906906120ec565b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561095c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109809190612121565b9392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108669185906108ca9086611190565b6005546001600160a01b031633146109e75760405162461bcd60e51b8152600401610906906120ec565b6064811115610a315760405162461bcd60e51b81526020600482015260166024820152754d757374206265207365742062656c6f77203130302560501b6044820152606401610906565b600a55600b805460ff1916911515919091179055565b6005546001600160a01b03163314610a715760405162461bcd60e51b8152600401610906906120ec565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610ae55760405162461bcd60e51b8152600401610906906120ec565b6040517f537475636b204554482062616c616e63652066726f6d20636f6e7472616374208152701859191c995cdcc81c9958dbdd995c9959607a1b60208201526000903390479060310160006040518083038185875af1925050503d8060008114610b6c576040519150601f19603f3d011682016040523d82523d6000602084013e610b71565b606091505b5050905080610bfe5760405162461bcd60e51b815260206004820152604d60248201527f4661696c65642e204569746865722063616c6c6572206973206e6f742074686560448201527f206f776e6572206f722061646472657373206973206e6f742074686520636f6e60648201526c7472616374206164647265737360981b608482015260a401610906565b50565b6060600480546107d6906120b2565b6005546001600160a01b03163314610c3a5760405162461bcd60e51b8152600401610906906120ec565b6007546001600160a01b0390811690831603610cc85760405162461bcd60e51b815260206004820152604160248201527f54686520556e695377617020706169722063616e6e6f742062652072656d6f7660448201527f65642066726f6d204175746f6d617465644d61726b65744d616b6572506169726064820152607360f81b608482015260a401610906565b610cd2828261174b565b5050565b600061086633846108ca856040518060600160405280602581526020016123e4602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611711565b6000610866338484611314565b6005546001600160a01b03163314610d5c5760405162461bcd60e51b8152600401610906906120ec565b6001600160a01b038116610dac5760405162461bcd60e51b815260206004820152601760248201527663616e6e6f742073657420746f2030206164647265737360481b6044820152606401610906565b610db7816001610e14565b6008546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610e3e5760405162461bcd60e51b8152600401610906906120ec565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610ec75760405162461bcd60e51b8152600401610906906120ec565b60005b82811015610f385781601c6000868685818110610ee957610ee961213e565b9050602002016020810190610efe9190611f63565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610f308161216a565b915050610eca565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051610f6c93929190612183565b60405180910390a1505050565b6005546001600160a01b03163314610fa35760405162461bcd60e51b8152600401610906906120ec565b6001600160a01b038116610ff35760405162461bcd60e51b815260206004820152601760248201527663616e6e6f742073657420746f2030206164647265737360481b6044820152606401610906565b610ffe816001610e14565b6009546040516001600160a01b03918216918316907fd4d40a3b1f9583a0988c5c88a673e36f30acbb182e4fb5b6c34911824352715a90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546000906001600160a01b031633146110885760405162461bcd60e51b8152600401610906906120ec565b61109a82670de0b6b3a76400006121dc565b600c55506001919050565b6005546001600160a01b031633146110cf5760405162461bcd60e51b8152600401610906906120ec565b6001600160a01b0381166111345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610906565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60008061119d83856121f3565b9050838110156109805760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610906565b6001600160a01b0383166112515760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610906565b6001600160a01b0382166112b25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610906565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661133a5760405162461bcd60e51b815260040161090690612206565b6001600160a01b0382166113605760405162461bcd60e51b81526004016109069061224b565b80600003611379576113748383600061179f565b505050565b600f5460ff161580611399575043600e54600261139691906121f3565b10155b1561143b576001600160a01b0383166000908152601c602052604090205460ff16806113dd57506001600160a01b0382166000908152601c602052604090205460ff165b61143b5760405162461bcd60e51b815260206004820152602960248201527f54726164696e6720697320616c77617973206163746976652061667465722064604482015268195c1b1bde5b595b9d60ba1b6064820152608401610906565b30600090815260208190526040902054600c54811080159081906114665750600f54610100900460ff165b801561147c5750600754600160a01b900460ff16155b80156114a157506001600160a01b0385166000908152601d602052604090205460ff16155b80156114c657506001600160a01b0385166000908152601c602052604090205460ff16155b80156114eb57506001600160a01b0384166000908152601c602052604090205460ff16155b15611519576007805460ff60a01b1916600160a01b17905561150b6118a8565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152601c602052604090205460ff600160a01b90920482161591168061156757506001600160a01b0385166000908152601c602052604090205460ff165b15611570575060005b600081156116fd576001600160a01b0386166000908152601d602052604090205460ff1680156115a257506000601254115b15611631576115c86011546115c260125488611ab190919063ffffffff16565b90611b33565b9050601254601354826115db91906121dc565b6115e5919061228e565b601a60008282546115f691906121f3565b909155505060125460145461160b90836121dc565b611615919061228e565b601b600082825461162691906121f3565b909155506116df9050565b6001600160a01b0387166000908152601d602052604090205460ff16801561165b57506000601654115b156116df5761167b6011546115c260165488611ab190919063ffffffff16565b90506016546017548261168e91906121dc565b611698919061228e565b601a60008282546116a991906121f3565b90915550506016546018546116be90836121dc565b6116c8919061228e565b601b60008282546116d991906121f3565b90915550505b80156116f0576116f087308361179f565b6116fa81866122b0565b94505b61170887878761179f565b50505050505050565b600081848411156117355760405162461bcd60e51b81526004016109069190611e93565b50600061174284866122b0565b95945050505050565b6001600160a01b0382166000818152601d6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166117c55760405162461bcd60e51b815260040161090690612206565b6001600160a01b0382166117eb5760405162461bcd60e51b81526004016109069061224b565b61182881604051806060016040528060268152602001612396602691396001600160a01b0386166000908152602081905260409020549190611711565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546118579082611190565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611307565b3060009081526020819052604081205490506000601b54601a546118cc91906121f3565b90508115806118d9575080155b156118e2575050565b6000476118ee84611b75565b60006118fa4783611ccf565b90506000611917856115c2601a5485611ab190919063ffffffff16565b90506000611934866115c2601b5486611ab190919063ffffffff16565b6009546040519192506001600160a01b0316908290600081818185875af1925050503d8060008114611982576040519150601f19603f3d011682016040523d82523d6000602084013e611987565b606091505b5050600b5490955060ff1615611a3f57600854600a546001600160a01b03909116906064906119b690856121dc565b6119c0919061228e565b6040517f4175746f6d61746564204275794261636b20636f6d706c6574656400000000008152601b0160006040518083038185875af1925050503d8060008114611a26576040519150601f19603f3d011682016040523d82523d6000602084013e611a2b565b606091505b505080955050611a3a47611d11565b611708565b600854604051665375636365737360c81b81526001600160a01b0390911690479060070160006040518083038185875af1925050503d8060008114611aa0576040519150601f19603f3d011682016040523d82523d6000602084013e611aa5565b606091505b50505050505050505050565b600082600003611ac35750600061086a565b6000611acf83856121dc565b905082611adc858361228e565b146109805760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610906565b600061098083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e65565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611baa57611baa61213e565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2791906122c3565b81600181518110611c3a57611c3a61213e565b6001600160a01b039283166020918202929092010152600654611c6091309116846111ef565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c99908590600090869030904290600401612324565b600060405180830381600087803b158015611cb357600080fd5b505af1158015611cc7573d6000803e3d6000fd5b505050505050565b600061098083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611711565b8015610bfe576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da591906122c3565b81600081518110611db857611db861213e565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611dec57611dec61213e565b6001600160a01b03928316602091820292909201015260065460085460405163b6f9de9560e01b81529183169263b6f9de95928692611e38926000928892909116904290600401612360565b6000604051808303818588803b158015611e5157600080fd5b505af1158015611708573d6000803e3d6000fd5b60008183611e865760405162461bcd60e51b81526004016109069190611e93565b506000611742848661228e565b600060208083528351808285015260005b81811015611ec057858101830151858201604001528201611ea4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bfe57600080fd5b60008060408385031215611f0957600080fd5b8235611f1481611ee1565b946020939093013593505050565b600080600060608486031215611f3757600080fd5b8335611f4281611ee1565b92506020840135611f5281611ee1565b929592945050506040919091013590565b600060208284031215611f7557600080fd5b813561098081611ee1565b8015158114610bfe57600080fd5b60008060408385031215611fa157600080fd5b8235611f1481611f80565b60008060408385031215611fbf57600080fd5b8235611fca81611ee1565b91506020830135611fda81611f80565b809150509250929050565b600080600060408486031215611ffa57600080fd5b833567ffffffffffffffff8082111561201257600080fd5b818601915086601f83011261202657600080fd5b81358181111561203557600080fd5b8760208260051b850101111561204a57600080fd5b6020928301955093505084013561206081611f80565b809150509250925092565b60006020828403121561207d57600080fd5b5035919050565b6000806040838503121561209757600080fd5b82356120a281611ee1565b91506020830135611fda81611ee1565b600181811c908216806120c657607f821691505b6020821081036120e657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561213357600080fd5b815161098081611f80565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161217c5761217c612154565b5060010190565b6040808252810183905260008460608301825b868110156121c65782356121a981611ee1565b6001600160a01b0316825260209283019290910190600101612196565b5080925050508215156020830152949350505050565b808202811582820484141761086a5761086a612154565b8082018082111561086a5761086a612154565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000826122ab57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561086a5761086a612154565b6000602082840312156122d557600080fd5b815161098081611ee1565b600081518084526020808501945080840160005b838110156123195781516001600160a01b0316875295820195908201906001016122f4565b509495945050505050565b85815284602082015260a06040820152600061234360a08301866122e0565b6001600160a01b0394909416606083015250608001529392505050565b84815260806020820152600061237960808301866122e0565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202da9ff6acbf11607f0f286e3a1e3b7e5b1160a272d0f5e5ef7e9665be78f402664736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0