0x6080604052600436106102295760003560e01c80638c0b5e2211610123578063b62496f5116100ab578063dd62ed3e1161006f578063dd62ed3e14610650578063dfbfe50e14610696578063e0f3ccf5146106ab578063e4748b9e1461070f578063f2fde38b1461074557600080fd5b8063b62496f5146105b5578063b6b69c8a146105e5578063c024666814610605578063c9567bf914610625578063d2d7ad831461063a57600080fd5b8063a457c2d7116100f2578063a457c2d71461052a578063a9059cbb1461054a578063aa4bde281461056a578063aee50b1e14610580578063b4f08948146105a057600080fd5b80638c0b5e22146104cc5780638da5cb5b146104e257806395d89b41146105005780639dccf6f11461051557600080fd5b8063313ce567116101b157806370a082311161017557806370a0823114610436578063715018a614610456578063781edb3c1461046b578063880bcbc11461048b57806388477527146104ab57600080fd5b8063313ce5671461038657806339509351146103a257806342966c68146103c25780634363556a146103e257806349bd5a5e1461040257600080fd5b806318160ddd116101f857806318160ddd146102e55780631ae3c1b4146103045780631e293c101461032657806323b872dd1461034657806327a14fc21461036657600080fd5b8063064a59d01461023557806306fdde031461026b578063095ea7b31461028d5780631694505e146102ad57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b50600f5461025690600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561027757600080fd5b50610280610765565b6040516102629190612d68565b34801561029957600080fd5b506102566102a8366004612dcb565b6107f7565b3480156102b957600080fd5b506006546102cd906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b3480156102f157600080fd5b506003545b604051908152602001610262565b34801561031057600080fd5b5061032461031f366004612df7565b61080e565b005b34801561033257600080fd5b50610324610341366004612e27565b6109b9565b34801561035257600080fd5b50610256610361366004612e40565b610ab2565b34801561037257600080fd5b50610324610381366004612e27565b610b1b565b34801561039257600080fd5b5060405160128152602001610262565b3480156103ae57600080fd5b506102566103bd366004612dcb565b610c6c565b3480156103ce57600080fd5b506103246103dd366004612e27565b610ca2565b3480156103ee57600080fd5b506103246103fd366004612e27565b610caf565b34801561040e57600080fd5b506102cd7f0000000000000000000000005ea28d9cb48fd8290f5a84716de4fe5e1305985c81565b34801561044257600080fd5b506102f6610451366004612e81565b610dac565b34801561046257600080fd5b50610324610dc7565b34801561047757600080fd5b50610324610486366004612e9e565b610e3b565b34801561049757600080fd5b506103246104a6366004612e9e565b610f05565b3480156104b757600080fd5b50600f5461025690600160a81b900460ff1681565b3480156104d857600080fd5b506102f660085481565b3480156104ee57600080fd5b506000546001600160a01b03166102cd565b34801561050c57600080fd5b50610280610fc7565b34801561052157600080fd5b50610324610fd6565b34801561053657600080fd5b50610256610545366004612dcb565b611017565b34801561055657600080fd5b50610256610565366004612dcb565b611066565b34801561057657600080fd5b506102f660075481565b34801561058c57600080fd5b5061032461059b366004612e27565b611073565b3480156105ac57600080fd5b5061032461113d565b3480156105c157600080fd5b506102566105d0366004612e81565b60186020526000908152604090205460ff1681565b3480156105f157600080fd5b50610324610600366004612e9e565b61118b565b34801561061157600080fd5b50610324610620366004612e9e565b61120d565b34801561063157600080fd5b506103246112cf565b34801561064657600080fd5b506102f660095481565b34801561065c57600080fd5b506102f661066b366004612ed1565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156106a257600080fd5b5061025661130e565b3480156106b757600080fd5b5060125460ff610100820481169163010000008104821691600160281b8204811691600160381b9004165b6040805160ff95861681529385166020850152918416918301919091529091166060820152608001610262565b34801561071b57600080fd5b5060125460ff80821691620100008104821691600160201b8204811691600160301b9004166106e2565b34801561075157600080fd5b50610324610760366004612e81565b61134c565b60606004805461077490612eff565b80601f01602080910402602001604051908101604052809291908181526020018280546107a090612eff565b80156107ed5780601f106107c2576101008083540402835291602001916107ed565b820191906000526020600020905b8154815290600101906020018083116107d057829003601f168201915b5050505050905090565b600061080433848461149c565b5060015b92915050565b670de0b6b3a76400008210156109ab576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ac9190612f39565b816000815181106108bf576108bf612f56565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106108f3576108f3612f56565b6001600160a01b03928316602091820292909201015260065460405163b6f9de9560e01b815291169063b6f9de9590859061093b90600090869061dead904290600401612fb0565b6000604051808303818588803b15801561095457600080fd5b505af1158015610968573d6000803e3d6000fd5b50505050507f0f3142e3ac35259f473aa7ca3693ee00ea573971f72d9a64b56379e2ea0624bb8360405161099e91815260200190565b60405180910390a1505050565b6109b581836115c1565b5050565b6000546001600160a01b031633146109ec5760405162461bcd60e51b81526004016109e390612fe5565b60405180910390fd5b670de0b6b3a76400006103e8610a0160035490565b610a0c906002613030565b610a16919061305d565b610a20919061305d565b811015610a7f5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d6178547820416d6f756e74206c6f776572207468604482015266616e20302e322560c81b60648201526084016109e3565b60085460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600855565b6000610abf84848461167a565b610b118433610b0c85604051806060016040528060288152602001613287602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611d57565b61149c565b5060019392505050565b6000546001600160a01b03163314610b455760405162461bcd60e51b81526004016109e390612fe5565b670de0b6b3a76400006103e8610b5a60035490565b610b65906014613030565b610b6f919061305d565b610b79919061305d565b811015610bd45760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e322560e01b60648201526084016109e3565b6007548103610c395760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f7420757064617465206d617857616c6c6574416d6f756e7420746f60448201526a2073616d652076616c756560a81b60648201526084016109e3565b60075460405182907f6d3e257c59a11116c3e97bb144abf5ba1a6a9da6bd509192ecf0d48f7be1fc7690600090a3600755565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610804918590610b0c9086611436565b610cac3382611d91565b50565b478110610d195760405162461bcd60e51b815260206004820152603260248201527f43616e6e6f7420776974686472617720455448206d6f7265207468616e20636f6044820152716e7472616374204554482062616c616e636560701b60648201526084016109e3565b600d546040516000916001600160a01b03169083908381818185875af1925050503d8060008114610d66576040519150601f19603f3d011682016040523d82523d6000602084013e610d6b565b606091505b5050905080156109b5576040518281527f8617dfea265a5987c2afab8e38b08f8e7127ab70fe3edf29df0eed51f0955fe79060200160405180910390a15050565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610df15760405162461bcd60e51b81526004016109e390612fe5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e655760405162461bcd60e51b81526004016109e390612fe5565b6001600160a01b03821660009081526016602052604090205481151560ff909116151503610ea55760405162461bcd60e51b81526004016109e390613071565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527fb7eada217e08491d4a03c266f93cd278befd124ab34890a5e7f44d023cbade7391015b60405180910390a25050565b6000546001600160a01b03163314610f2f5760405162461bcd60e51b81526004016109e390612fe5565b6001600160a01b03821660009081526014602052604090205481151560ff909116151503610f6f5760405162461bcd60e51b81526004016109e390613071565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a409101610ef9565b60606005805461077490612eff565b6000546001600160a01b031633146110005760405162461bcd60e51b81526004016109e390612fe5565b6b033b2e3c9fd0803ce80000006007819055600855565b60006108043384610b0c856040518060600160405280602581526020016132cf602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190611d57565b600061080433848461167a565b6000546001600160a01b0316331461109d5760405162461bcd60e51b81526004016109e390612fe5565b600954810361110a5760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420757064617465206d696e696d756d546f6b656e734265666f72604482015272655377617020746f2073616d652076616c756560681b60648201526084016109e3565b60095460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600955565b6000546001600160a01b031633146111675760405162461bcd60e51b81526004016109e390612fe5565b611178601060006001806001611e9c565b6111896010600060018060016120de565b565b6000546001600160a01b031633146111b55760405162461bcd60e51b81526004016109e390612fe5565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527fcb9f97b7b4b41413e5c8d418a8cf9a88db1cf34dee66b213d070faf881d9d3509101610ef9565b6000546001600160a01b031633146112375760405162461bcd60e51b81526004016109e390612fe5565b6001600160a01b03821660009081526013602052604090205481151560ff9091161515036112775760405162461bcd60e51b81526004016109e390613071565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f71206a5ad264eefddb6ae746c7aaa3e4e15de930b82c3a645b89a7005e534ba29101610ef9565b6000546001600160a01b031633146112f95760405162461bcd60e51b81526004016109e390612fe5565b600f805460ff60a01b1916600160a01b179055565b600080546001600160a01b031633146113395760405162461bcd60e51b81526004016109e390612fe5565b50600f805460ff60a81b19169055600190565b6000546001600160a01b031633146113765760405162461bcd60e51b81526004016109e390612fe5565b6001600160a01b0381166113db5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109e3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008061144383856130bb565b9050838110156114955760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109e3565b9392505050565b6001600160a01b0383166114fe5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109e3565b6001600160a01b03821661155f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109e3565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6009546115cd30610dac565b10156116365760405162461bcd60e51b815260206004820152603260248201527f7377617020616d6f756e74206d757374206f766572207468616e206d696e696d6044820152710756d546f6b656e734265666f7265537761760741b60648201526084016109e3565b611640828261233a565b156109b557601954600160201b900460ff16156109b557600a805460ff1916600117905561166c6124f4565b600a805460ff191690555050565b6001600160a01b0383166116a05760405162461bcd60e51b81526004016109e3906130ce565b6001600160a01b0382166116c65760405162461bcd60e51b81526004016109e390613113565b806000036116df576116da83836000612743565b505050565b600f54600160a81b900460ff1615611809576000546001600160a01b0383811691161480159061171d57506006546001600160a01b03838116911614155b801561175b57507f0000000000000000000000005ea28d9cb48fd8290f5a84716de4fe5e1305985c6001600160a01b0316826001600160a01b031614155b15611809573260009081526017602052604090205443116117f65760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016109e3565b3260009081526017602052604090204390555b6001600160a01b03808416600081815260186020908152604080832054948716835280832054938352601590915290205460ff92831692918216911615801561186b57506001600160a01b03841660009081526015602052604090205460ff16155b15611b0a57600f54600160a01b900460ff166118c95760405162461bcd60e51b815260206004820152601e60248201527f54726164696e672069732063757272656e746c792064697361626c65642e000060448201526064016109e3565b6001600160a01b03851660009081526018602052604090205460ff16801561190a57506001600160a01b03841660009081526014602052604090205460ff16155b156119db576008548311156119725760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016109e3565b60075461197e85610dac565b61198890856130bb565b11156119d65760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c6574000000000000000060448201526064016109e3565b611b0a565b6001600160a01b03841660009081526018602052604090205460ff168015611a1c57506001600160a01b03851660009081526014602052604090205460ff16155b15611a86576008548311156119d65760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016109e3565b6001600160a01b03841660009081526014602052604090205460ff16611b0a57600754611ab285610dac565b611abc90856130bb565b1115611b0a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74204578636565642074782077616c6c657400000000000000000060448201526064016109e3565b611b168282878761284f565b6000600954611b2430610dac565b600f549111159150600160a01b900460ff168015611b3f5750805b8015611b4e5750600a5460ff16155b8015611b655750601954600160201b900460ff1615155b8015611b8957506001600160a01b03851660009081526018602052604090205460ff165b8015611bae57506001600160a01b03861660009081526013602052604090205460ff16155b8015611bd357506001600160a01b03851660009081526013602052604090205460ff16155b15611bf857600a805460ff19166001179055611bed6124f4565b600a805460ff191690555b600a5460009060ff16158015611c175750600f54600160a01b900460ff165b6001600160a01b03881660009081526013602052604090205490915060ff1680611c5957506001600160a01b03861660009081526013602052604090205460ff165b15611c62575060005b808015611c7a5750601954600160201b900460ff1615155b15611d4357601954600090606490611c9c90600160201b900460ff1688613030565b611ca6919061305d565b601954909150600090606490611cc6906301000000900460ff1689613030565b611cd0919061305d565b9050611cdc8288613156565b9650611ce9893084612743565b8015611d4057611cf93082611d91565b60195460408051630100000090920460ff168252602082018390527ffecf12fd01122af77b8b8f1a0f126363142d14fba298ea36d9fe4909f61bb5a1910160405180910390a15b50505b611d4e878787612743565b50505050505050565b60008184841115611d7b5760405162461bcd60e51b81526004016109e39190612d68565b506000611d888486613156565b95945050505050565b6001600160a01b038216611df15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109e3565b611e2e8160405180606001604052806022815260200161323f602291396001600160a01b0385166000908152600160205260409020549190611d57565b6001600160a01b038316600090815260016020526040902055600354611e549082612a6b565b6003556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600285015460ff858116911614611f1657604051696c704665654f6e42757960b01b8152600a0160405190819003812060028701548754919260ff91821692918816916000805160206132af83398151915291611efc9160481b90613169565b60405180910390a460028501805460ff191660ff86161790555b600285015460ff848116620100009092041614611faa57604051706d61726b6574696e674665654f6e42757960781b815260110160405190819003812060028701548754919260ff62010000909204821692918716916000805160206132af83398151915291611f899160481b90613169565b60405180910390a460028501805462ff000019166201000060ff8616021790555b600285015460ff838116600160201b9092041614612041576040516e6275794261636b4665654f6e42757960881b8152600f0160405190819003812060028701548754919260ff600160201b909204821692918616916000805160206132af8339815191529161201d9160481b90613169565b60405180910390a460028501805464ff000000001916600160201b60ff8516021790555b600285015460ff828116600160301b90920416146120d7576040516b6275726e4665654f6e42757960a01b8152600c0160405190819003812060028701548754919260ff600160301b909204821692918516916000805160206132af833981519152916120b19160481b90613169565b60405180910390a460028501805466ff0000000000001916600160301b60ff8416021790555b5050505050565b600285015460ff8581166101009092041614612168576040516a1b1c11995953db94d95b1b60aa1b8152600b0160405190819003812060028701548754919260ff610100909204821692918816916000805160206132af833981519152916121499160481b90613169565b60405180910390a460028501805461ff00191661010060ff8716021790555b600285015460ff8481166301000000909204161461220157604051711b585c9ad95d1a5b99d1995953db94d95b1b60721b815260120160405190819003812060028701548754919260ff6301000000909204821692918716916000805160206132af833981519152916121de9160481b90613169565b60405180910390a460028501805463ff0000001916630100000060ff8616021790555b600285015460ff838116600160281b909204161461229a576040516f189d5e509858dad1995953db94d95b1b60821b815260100160405190819003812060028701548754919260ff600160281b909204821692918616916000805160206132af833981519152916122759160481b90613169565b60405180910390a460028501805465ff00000000001916600160281b60ff8516021790555b600285015460ff828116600160381b90920416146120d7576040516c189d5c9b91995953db94d95b1b609a1b8152600d0160405190819003812060028701548754919260ff600160381b909204821692918516916000805160206132af8339815191529161230b9160481b90613169565b60405180910390a460028501805460ff8316600160381b0267ff00000000000000199091161790555050505050565b33600090815260136020526040812054819060ff1661245157601954600160201b900460ff16156123d75760195460009060649061238290600160201b900460ff1686613030565b61238c919061305d565b6019549091506000906064906123ac906301000000900460ff1687613030565b6123b6919061305d565b90506123c28286613156565b945080156123d4576123d43382611d91565b50505b601954600160201b900460ff161561244a5760006123f430610dac565b60195490915060009060029060ff600160201b8204811691612417911685613030565b612421919061305d565b61242b919061305d565b905060006124398284613156565b9050801561244657600193505b5050505b9050610808565b6001600160a01b03841630146124735761246b8484611d91565b50600061247c565b50600b82905560005b601954600160201b900460ff161561244a57600061249930610dac565b60195490915060009060029060ff600160201b82048116916124bc911685613030565b6124c6919061305d565b6124d0919061305d565b905060006124de8284613156565b9050801561244657600093505050509050610808565b60006124ff30610dac565b6009549091504790612512906007613030565b82111561252a57600954612527906007613030565b91505b601954600090819060029060ff600160201b820481169161254c911687613030565b612556919061305d565b612560919061305d565b9050600061256e8286613156565b905061257981612aad565b60006125858547613156565b60195490915060009060ff630100000082048116916125a79160029116613180565b6125b191906131a2565b6019546125c89190600160201b900460ff166131bb565b60195460ff918216925060009160029184916125e5911686613030565b6125ef919061305d565b6125f9919061305d565b601954909150600090839061261690610100900460ff1686613030565b612620919061305d565b9050600061262e82846130bb565b6126389086613156565b600f546040519192506001600160a01b0316908290600081818185875af1925050503d8060008114612686576040519150601f19603f3d011682016040523d82523d6000602084013e61268b565b606091505b5050600e546040519199506001600160a01b0316904790600081818185875af1925050503d80600081146126db576040519150601f19603f3d011682016040523d82523d6000602084013e6126e0565b606091505b50909850508615612737576126f58784612c07565b60408051878152602081018590529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b50505050505050505050565b6001600160a01b0383166127695760405162461bcd60e51b81526004016109e3906130ce565b6001600160a01b03821661278f5760405162461bcd60e51b81526004016109e390613113565b6127cc81604051806060016040528060268152602001613261602691396001600160a01b0386166000908152600160205260409020549190611d57565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546127fb9082611436565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115b49085815260200190565b6019805463ffffffff1916905582156128bf576012546019805461010080840460ff90811661ffff199093169290921763010000008086048416929092021763ffff00001916600160281b85048316620100000263ff000000191617600160381b90940491909116029190911790555b8315612922576012546019805460ff80841661ffff1990921691909117610100620100008086048416919091029190911763ffff00001916600160201b850483169190910263ff000000191617600160301b909304166301000000029190911790555b61292d848383612cb4565b82158015612939575083155b1561299b576012546019805461010080840460ff90811661ffff199093169290921763010000008086048416929092021763ffff00001916600160281b85048316620100000263ff000000191617600160381b90940491909116029190911790555b60195460ff630100000082048116916201000081048216916129c5916101008104821691166131a2565b6129cf91906131a2565b6129d991906131a2565b6019805460ff928316600160201b90810264ff000000001983168117938490556040805191861693861693909317815261010084048516602082015262010000840485168184015263010000008404851660608201529204909216608082015290517f986960ecfa20031922e0de1515f5be00dad6c5ae7820aa7a957e593a585db9f69181900360a00190a150505050565b600061149583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d57565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ae257612ae2612f56565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5f9190612f39565b81600181518110612b7257612b72612f56565b6001600160a01b039283166020918202929092010152600654612b98913091168461149c565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612bd19085906000908690309042906004016131d4565b600060405180830381600087803b158015612beb57600080fd5b505af1158015612bff573d6000803e3d6000fd5b505050505050565b600654612c1f9030906001600160a01b03168461149c565b600654600d5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612c8f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120d79190613210565b6001600160a01b03811615801590612cd757506001600160a01b03811661dead14155b8015612cfc57506001600160a01b03821660009081526013602052604090205460ff16155b8015612d2157506001600160a01b03811660009081526013602052604090205460ff16155b156116da5782158015612d375750600a5460ff16155b8015612d4557506000600b54115b156116da57600b54612d5683610dac565b612d609190613156565b600c55505050565b600060208083528351808285015260005b81811015612d9557858101830151858201604001528201612d79565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610cac57600080fd5b60008060408385031215612dde57600080fd5b8235612de981612db6565b946020939093013593505050565b60008060408385031215612e0a57600080fd5b823591506020830135612e1c81612db6565b809150509250929050565b600060208284031215612e3957600080fd5b5035919050565b600080600060608486031215612e5557600080fd5b8335612e6081612db6565b92506020840135612e7081612db6565b929592945050506040919091013590565b600060208284031215612e9357600080fd5b813561149581612db6565b60008060408385031215612eb157600080fd5b8235612ebc81612db6565b915060208301358015158114612e1c57600080fd5b60008060408385031215612ee457600080fd5b8235612eef81612db6565b91506020830135612e1c81612db6565b600181811c90821680612f1357607f821691505b602082108103612f3357634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612f4b57600080fd5b815161149581612db6565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015612fa55781516001600160a01b031687529582019590820190600101612f80565b509495945050505050565b848152608060208201526000612fc96080830186612f6c565b6001600160a01b03949094166040830152506060015292915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108085761080861301a565b634e487b7160e01b600052601260045260246000fd5b60008261306c5761306c613047565b500490565b6020808252602a908201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604082015269276578636c756465642760b01b606082015260800190565b808201808211156108085761080861301a565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156108085761080861301a565b68ffffffffffffffffff1991909116815260200190565b600060ff83168061319357613193613047565b8060ff84160491505092915050565b60ff81811683821601908111156108085761080861301a565b60ff82811682821603908111156108085761080861301a565b85815284602082015260a0604082015260006131f360a0830186612f6c565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561322557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655f2329930b3100cba2e69aeb808977fa035a02c57c07f52a40f093308d6874af45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d5069ddeff2c54548346280d8f16c81fb4c888a5295f32599421387c0e72018c64736f6c63430008120033
0x60a0604052612710620000206b033b2e3c9fd0803ce800000060c8620008ee565b6200002c919062000908565b6007556127106200004b6b033b2e3c9fd0803ce800000060c8620008ee565b62000057919062000908565b600855612710620000766b033b2e3c9fd0803ce80000006003620008ee565b62000082919062000908565b6009908155604080516101608101825264746178657360d81b81526000602082018190529181018290526001606082018190526080820181905260a0820184905260c082019390935260e08101839052610100810183905261012081018390526101400191909152601080546001600160c01b03191664746178657360901b179055601155601280546701010101090901016001600160401b03199091161790553480156200013057600080fd5b5060405180604001604052806007815260200166213ab636393ab760c91b8152506040518060400160405280600381526020016221262960e91b81525060006200017f6200066c60201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506004620001d78382620009cf565b506005620001e68282620009cf565b5050600f80546001600160a01b031990811673d6b281ad5cc0a47eb64f09e8c25b9fc7a111241917909155600e805490911673587b4bd0967fd0050da876c25c673f377047c33f17905550620002446000546001600160a01b031690565b600d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ea919062000a9b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000338573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035e919062000a9b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620003ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d2919062000a9b565b600680546001600160a01b0319166001600160a01b0385811691909117909155811660805290506200040681600162000670565b600f805460ff60a81b1916600160a81b179055600160136000620004326000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e54821681526013909352818320805485166001908117909155600f549091168352818320805485168217905530835290822080549093168117909255601590620004b46000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905585821681526016938490528281208054861660019081179091556006549092168152828120805486168317905530815291822080549094168117909355620005326000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e548216815260168452828120805486166001908117909155600f54909216815282812080548616831790557f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b57805486168317905530815260149384905291822080549094168117909355620005df6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e54821681526014909352818320805485166001908117909155600f5490911683529120805490921617905562000664620006516000546001600160a01b031690565b6b033b2e3c9fd0803ce800000062000760565b505062000adc565b3390565b6001600160a01b03821660009081526018602052604090205481151560ff9091161515036200070c5760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c7565000000000000000060648201526084015b60405180910390fd5b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fa666b9b2dc2c8f2d86fda7ba3a115be30d3a958fd84d359cbc6bc919df97990a91a35050565b6001600160a01b038216620007b85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000703565b620007d4816003546200086c60201b620014361790919060201c565b6003556001600160a01b03821660009081526001602090815260409091205462000809918390620014366200086c821b17901c565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200085b9085815260200190565b60405180910390a35050565b505050565b6000806200087b838562000ac6565b905083811015620008cf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000703565b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620008d257620008d2620008d8565b6000826200092657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200095657607f821691505b6020821081036200097757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200086757600081815260208120601f850160051c81016020861015620009a65750805b601f850160051c820191505b81811015620009c757828155600101620009b2565b505050505050565b81516001600160401b03811115620009eb57620009eb6200092b565b62000a0381620009fc845462000941565b846200097d565b602080601f83116001811462000a3b576000841562000a225750858301515b600019600386901b1c1916600185901b178555620009c7565b600085815260208120601f198616915b8281101562000a6c5788860151825594840194600190910190840162000a4b565b508582101562000a8b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000aae57600080fd5b81516001600160a01b0381168114620008cf57600080fd5b80820180821115620008d257620008d2620008d8565b60805161332962000aff60003960008181610414015261172601526133296000f3fe6080604052600436106102295760003560e01c80638c0b5e2211610123578063b62496f5116100ab578063dd62ed3e1161006f578063dd62ed3e14610650578063dfbfe50e14610696578063e0f3ccf5146106ab578063e4748b9e1461070f578063f2fde38b1461074557600080fd5b8063b62496f5146105b5578063b6b69c8a146105e5578063c024666814610605578063c9567bf914610625578063d2d7ad831461063a57600080fd5b8063a457c2d7116100f2578063a457c2d71461052a578063a9059cbb1461054a578063aa4bde281461056a578063aee50b1e14610580578063b4f08948146105a057600080fd5b80638c0b5e22146104cc5780638da5cb5b146104e257806395d89b41146105005780639dccf6f11461051557600080fd5b8063313ce567116101b157806370a082311161017557806370a0823114610436578063715018a614610456578063781edb3c1461046b578063880bcbc11461048b57806388477527146104ab57600080fd5b8063313ce5671461038657806339509351146103a257806342966c68146103c25780634363556a146103e257806349bd5a5e1461040257600080fd5b806318160ddd116101f857806318160ddd146102e55780631ae3c1b4146103045780631e293c101461032657806323b872dd1461034657806327a14fc21461036657600080fd5b8063064a59d01461023557806306fdde031461026b578063095ea7b31461028d5780631694505e146102ad57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b50600f5461025690600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b34801561027757600080fd5b50610280610765565b6040516102629190612d68565b34801561029957600080fd5b506102566102a8366004612dcb565b6107f7565b3480156102b957600080fd5b506006546102cd906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b3480156102f157600080fd5b506003545b604051908152602001610262565b34801561031057600080fd5b5061032461031f366004612df7565b61080e565b005b34801561033257600080fd5b50610324610341366004612e27565b6109b9565b34801561035257600080fd5b50610256610361366004612e40565b610ab2565b34801561037257600080fd5b50610324610381366004612e27565b610b1b565b34801561039257600080fd5b5060405160128152602001610262565b3480156103ae57600080fd5b506102566103bd366004612dcb565b610c6c565b3480156103ce57600080fd5b506103246103dd366004612e27565b610ca2565b3480156103ee57600080fd5b506103246103fd366004612e27565b610caf565b34801561040e57600080fd5b506102cd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561044257600080fd5b506102f6610451366004612e81565b610dac565b34801561046257600080fd5b50610324610dc7565b34801561047757600080fd5b50610324610486366004612e9e565b610e3b565b34801561049757600080fd5b506103246104a6366004612e9e565b610f05565b3480156104b757600080fd5b50600f5461025690600160a81b900460ff1681565b3480156104d857600080fd5b506102f660085481565b3480156104ee57600080fd5b506000546001600160a01b03166102cd565b34801561050c57600080fd5b50610280610fc7565b34801561052157600080fd5b50610324610fd6565b34801561053657600080fd5b50610256610545366004612dcb565b611017565b34801561055657600080fd5b50610256610565366004612dcb565b611066565b34801561057657600080fd5b506102f660075481565b34801561058c57600080fd5b5061032461059b366004612e27565b611073565b3480156105ac57600080fd5b5061032461113d565b3480156105c157600080fd5b506102566105d0366004612e81565b60186020526000908152604090205460ff1681565b3480156105f157600080fd5b50610324610600366004612e9e565b61118b565b34801561061157600080fd5b50610324610620366004612e9e565b61120d565b34801561063157600080fd5b506103246112cf565b34801561064657600080fd5b506102f660095481565b34801561065c57600080fd5b506102f661066b366004612ed1565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156106a257600080fd5b5061025661130e565b3480156106b757600080fd5b5060125460ff610100820481169163010000008104821691600160281b8204811691600160381b9004165b6040805160ff95861681529385166020850152918416918301919091529091166060820152608001610262565b34801561071b57600080fd5b5060125460ff80821691620100008104821691600160201b8204811691600160301b9004166106e2565b34801561075157600080fd5b50610324610760366004612e81565b61134c565b60606004805461077490612eff565b80601f01602080910402602001604051908101604052809291908181526020018280546107a090612eff565b80156107ed5780601f106107c2576101008083540402835291602001916107ed565b820191906000526020600020905b8154815290600101906020018083116107d057829003601f168201915b5050505050905090565b600061080433848461149c565b5060015b92915050565b670de0b6b3a76400008210156109ab576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ac9190612f39565b816000815181106108bf576108bf612f56565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106108f3576108f3612f56565b6001600160a01b03928316602091820292909201015260065460405163b6f9de9560e01b815291169063b6f9de9590859061093b90600090869061dead904290600401612fb0565b6000604051808303818588803b15801561095457600080fd5b505af1158015610968573d6000803e3d6000fd5b50505050507f0f3142e3ac35259f473aa7ca3693ee00ea573971f72d9a64b56379e2ea0624bb8360405161099e91815260200190565b60405180910390a1505050565b6109b581836115c1565b5050565b6000546001600160a01b031633146109ec5760405162461bcd60e51b81526004016109e390612fe5565b60405180910390fd5b670de0b6b3a76400006103e8610a0160035490565b610a0c906002613030565b610a16919061305d565b610a20919061305d565b811015610a7f5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d6178547820416d6f756e74206c6f776572207468604482015266616e20302e322560c81b60648201526084016109e3565b60085460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600855565b6000610abf84848461167a565b610b118433610b0c85604051806060016040528060288152602001613287602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611d57565b61149c565b5060019392505050565b6000546001600160a01b03163314610b455760405162461bcd60e51b81526004016109e390612fe5565b670de0b6b3a76400006103e8610b5a60035490565b610b65906014613030565b610b6f919061305d565b610b79919061305d565b811015610bd45760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e322560e01b60648201526084016109e3565b6007548103610c395760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f7420757064617465206d617857616c6c6574416d6f756e7420746f60448201526a2073616d652076616c756560a81b60648201526084016109e3565b60075460405182907f6d3e257c59a11116c3e97bb144abf5ba1a6a9da6bd509192ecf0d48f7be1fc7690600090a3600755565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610804918590610b0c9086611436565b610cac3382611d91565b50565b478110610d195760405162461bcd60e51b815260206004820152603260248201527f43616e6e6f7420776974686472617720455448206d6f7265207468616e20636f6044820152716e7472616374204554482062616c616e636560701b60648201526084016109e3565b600d546040516000916001600160a01b03169083908381818185875af1925050503d8060008114610d66576040519150601f19603f3d011682016040523d82523d6000602084013e610d6b565b606091505b5050905080156109b5576040518281527f8617dfea265a5987c2afab8e38b08f8e7127ab70fe3edf29df0eed51f0955fe79060200160405180910390a15050565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610df15760405162461bcd60e51b81526004016109e390612fe5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e655760405162461bcd60e51b81526004016109e390612fe5565b6001600160a01b03821660009081526016602052604090205481151560ff909116151503610ea55760405162461bcd60e51b81526004016109e390613071565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527fb7eada217e08491d4a03c266f93cd278befd124ab34890a5e7f44d023cbade7391015b60405180910390a25050565b6000546001600160a01b03163314610f2f5760405162461bcd60e51b81526004016109e390612fe5565b6001600160a01b03821660009081526014602052604090205481151560ff909116151503610f6f5760405162461bcd60e51b81526004016109e390613071565b6001600160a01b038216600081815260146020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a409101610ef9565b60606005805461077490612eff565b6000546001600160a01b031633146110005760405162461bcd60e51b81526004016109e390612fe5565b6b033b2e3c9fd0803ce80000006007819055600855565b60006108043384610b0c856040518060600160405280602581526020016132cf602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190611d57565b600061080433848461167a565b6000546001600160a01b0316331461109d5760405162461bcd60e51b81526004016109e390612fe5565b600954810361110a5760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420757064617465206d696e696d756d546f6b656e734265666f72604482015272655377617020746f2073616d652076616c756560681b60648201526084016109e3565b60095460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600955565b6000546001600160a01b031633146111675760405162461bcd60e51b81526004016109e390612fe5565b611178601060006001806001611e9c565b6111896010600060018060016120de565b565b6000546001600160a01b031633146111b55760405162461bcd60e51b81526004016109e390612fe5565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527fcb9f97b7b4b41413e5c8d418a8cf9a88db1cf34dee66b213d070faf881d9d3509101610ef9565b6000546001600160a01b031633146112375760405162461bcd60e51b81526004016109e390612fe5565b6001600160a01b03821660009081526013602052604090205481151560ff9091161515036112775760405162461bcd60e51b81526004016109e390613071565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f71206a5ad264eefddb6ae746c7aaa3e4e15de930b82c3a645b89a7005e534ba29101610ef9565b6000546001600160a01b031633146112f95760405162461bcd60e51b81526004016109e390612fe5565b600f805460ff60a01b1916600160a01b179055565b600080546001600160a01b031633146113395760405162461bcd60e51b81526004016109e390612fe5565b50600f805460ff60a81b19169055600190565b6000546001600160a01b031633146113765760405162461bcd60e51b81526004016109e390612fe5565b6001600160a01b0381166113db5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109e3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008061144383856130bb565b9050838110156114955760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109e3565b9392505050565b6001600160a01b0383166114fe5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109e3565b6001600160a01b03821661155f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109e3565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6009546115cd30610dac565b10156116365760405162461bcd60e51b815260206004820152603260248201527f7377617020616d6f756e74206d757374206f766572207468616e206d696e696d6044820152710756d546f6b656e734265666f7265537761760741b60648201526084016109e3565b611640828261233a565b156109b557601954600160201b900460ff16156109b557600a805460ff1916600117905561166c6124f4565b600a805460ff191690555050565b6001600160a01b0383166116a05760405162461bcd60e51b81526004016109e3906130ce565b6001600160a01b0382166116c65760405162461bcd60e51b81526004016109e390613113565b806000036116df576116da83836000612743565b505050565b600f54600160a81b900460ff1615611809576000546001600160a01b0383811691161480159061171d57506006546001600160a01b03838116911614155b801561175b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611809573260009081526017602052604090205443116117f65760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016109e3565b3260009081526017602052604090204390555b6001600160a01b03808416600081815260186020908152604080832054948716835280832054938352601590915290205460ff92831692918216911615801561186b57506001600160a01b03841660009081526015602052604090205460ff16155b15611b0a57600f54600160a01b900460ff166118c95760405162461bcd60e51b815260206004820152601e60248201527f54726164696e672069732063757272656e746c792064697361626c65642e000060448201526064016109e3565b6001600160a01b03851660009081526018602052604090205460ff16801561190a57506001600160a01b03841660009081526014602052604090205460ff16155b156119db576008548311156119725760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016109e3565b60075461197e85610dac565b61198890856130bb565b11156119d65760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c6574000000000000000060448201526064016109e3565b611b0a565b6001600160a01b03841660009081526018602052604090205460ff168015611a1c57506001600160a01b03851660009081526014602052604090205460ff16155b15611a86576008548311156119d65760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016109e3565b6001600160a01b03841660009081526014602052604090205460ff16611b0a57600754611ab285610dac565b611abc90856130bb565b1115611b0a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74204578636565642074782077616c6c657400000000000000000060448201526064016109e3565b611b168282878761284f565b6000600954611b2430610dac565b600f549111159150600160a01b900460ff168015611b3f5750805b8015611b4e5750600a5460ff16155b8015611b655750601954600160201b900460ff1615155b8015611b8957506001600160a01b03851660009081526018602052604090205460ff165b8015611bae57506001600160a01b03861660009081526013602052604090205460ff16155b8015611bd357506001600160a01b03851660009081526013602052604090205460ff16155b15611bf857600a805460ff19166001179055611bed6124f4565b600a805460ff191690555b600a5460009060ff16158015611c175750600f54600160a01b900460ff165b6001600160a01b03881660009081526013602052604090205490915060ff1680611c5957506001600160a01b03861660009081526013602052604090205460ff165b15611c62575060005b808015611c7a5750601954600160201b900460ff1615155b15611d4357601954600090606490611c9c90600160201b900460ff1688613030565b611ca6919061305d565b601954909150600090606490611cc6906301000000900460ff1689613030565b611cd0919061305d565b9050611cdc8288613156565b9650611ce9893084612743565b8015611d4057611cf93082611d91565b60195460408051630100000090920460ff168252602082018390527ffecf12fd01122af77b8b8f1a0f126363142d14fba298ea36d9fe4909f61bb5a1910160405180910390a15b50505b611d4e878787612743565b50505050505050565b60008184841115611d7b5760405162461bcd60e51b81526004016109e39190612d68565b506000611d888486613156565b95945050505050565b6001600160a01b038216611df15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109e3565b611e2e8160405180606001604052806022815260200161323f602291396001600160a01b0385166000908152600160205260409020549190611d57565b6001600160a01b038316600090815260016020526040902055600354611e549082612a6b565b6003556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600285015460ff858116911614611f1657604051696c704665654f6e42757960b01b8152600a0160405190819003812060028701548754919260ff91821692918816916000805160206132af83398151915291611efc9160481b90613169565b60405180910390a460028501805460ff191660ff86161790555b600285015460ff848116620100009092041614611faa57604051706d61726b6574696e674665654f6e42757960781b815260110160405190819003812060028701548754919260ff62010000909204821692918716916000805160206132af83398151915291611f899160481b90613169565b60405180910390a460028501805462ff000019166201000060ff8616021790555b600285015460ff838116600160201b9092041614612041576040516e6275794261636b4665654f6e42757960881b8152600f0160405190819003812060028701548754919260ff600160201b909204821692918616916000805160206132af8339815191529161201d9160481b90613169565b60405180910390a460028501805464ff000000001916600160201b60ff8516021790555b600285015460ff828116600160301b90920416146120d7576040516b6275726e4665654f6e42757960a01b8152600c0160405190819003812060028701548754919260ff600160301b909204821692918516916000805160206132af833981519152916120b19160481b90613169565b60405180910390a460028501805466ff0000000000001916600160301b60ff8416021790555b5050505050565b600285015460ff8581166101009092041614612168576040516a1b1c11995953db94d95b1b60aa1b8152600b0160405190819003812060028701548754919260ff610100909204821692918816916000805160206132af833981519152916121499160481b90613169565b60405180910390a460028501805461ff00191661010060ff8716021790555b600285015460ff8481166301000000909204161461220157604051711b585c9ad95d1a5b99d1995953db94d95b1b60721b815260120160405190819003812060028701548754919260ff6301000000909204821692918716916000805160206132af833981519152916121de9160481b90613169565b60405180910390a460028501805463ff0000001916630100000060ff8616021790555b600285015460ff838116600160281b909204161461229a576040516f189d5e509858dad1995953db94d95b1b60821b815260100160405190819003812060028701548754919260ff600160281b909204821692918616916000805160206132af833981519152916122759160481b90613169565b60405180910390a460028501805465ff00000000001916600160281b60ff8516021790555b600285015460ff828116600160381b90920416146120d7576040516c189d5c9b91995953db94d95b1b609a1b8152600d0160405190819003812060028701548754919260ff600160381b909204821692918516916000805160206132af8339815191529161230b9160481b90613169565b60405180910390a460028501805460ff8316600160381b0267ff00000000000000199091161790555050505050565b33600090815260136020526040812054819060ff1661245157601954600160201b900460ff16156123d75760195460009060649061238290600160201b900460ff1686613030565b61238c919061305d565b6019549091506000906064906123ac906301000000900460ff1687613030565b6123b6919061305d565b90506123c28286613156565b945080156123d4576123d43382611d91565b50505b601954600160201b900460ff161561244a5760006123f430610dac565b60195490915060009060029060ff600160201b8204811691612417911685613030565b612421919061305d565b61242b919061305d565b905060006124398284613156565b9050801561244657600193505b5050505b9050610808565b6001600160a01b03841630146124735761246b8484611d91565b50600061247c565b50600b82905560005b601954600160201b900460ff161561244a57600061249930610dac565b60195490915060009060029060ff600160201b82048116916124bc911685613030565b6124c6919061305d565b6124d0919061305d565b905060006124de8284613156565b9050801561244657600093505050509050610808565b60006124ff30610dac565b6009549091504790612512906007613030565b82111561252a57600954612527906007613030565b91505b601954600090819060029060ff600160201b820481169161254c911687613030565b612556919061305d565b612560919061305d565b9050600061256e8286613156565b905061257981612aad565b60006125858547613156565b60195490915060009060ff630100000082048116916125a79160029116613180565b6125b191906131a2565b6019546125c89190600160201b900460ff166131bb565b60195460ff918216925060009160029184916125e5911686613030565b6125ef919061305d565b6125f9919061305d565b601954909150600090839061261690610100900460ff1686613030565b612620919061305d565b9050600061262e82846130bb565b6126389086613156565b600f546040519192506001600160a01b0316908290600081818185875af1925050503d8060008114612686576040519150601f19603f3d011682016040523d82523d6000602084013e61268b565b606091505b5050600e546040519199506001600160a01b0316904790600081818185875af1925050503d80600081146126db576040519150601f19603f3d011682016040523d82523d6000602084013e6126e0565b606091505b50909850508615612737576126f58784612c07565b60408051878152602081018590529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b50505050505050505050565b6001600160a01b0383166127695760405162461bcd60e51b81526004016109e3906130ce565b6001600160a01b03821661278f5760405162461bcd60e51b81526004016109e390613113565b6127cc81604051806060016040528060268152602001613261602691396001600160a01b0386166000908152600160205260409020549190611d57565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546127fb9082611436565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115b49085815260200190565b6019805463ffffffff1916905582156128bf576012546019805461010080840460ff90811661ffff199093169290921763010000008086048416929092021763ffff00001916600160281b85048316620100000263ff000000191617600160381b90940491909116029190911790555b8315612922576012546019805460ff80841661ffff1990921691909117610100620100008086048416919091029190911763ffff00001916600160201b850483169190910263ff000000191617600160301b909304166301000000029190911790555b61292d848383612cb4565b82158015612939575083155b1561299b576012546019805461010080840460ff90811661ffff199093169290921763010000008086048416929092021763ffff00001916600160281b85048316620100000263ff000000191617600160381b90940491909116029190911790555b60195460ff630100000082048116916201000081048216916129c5916101008104821691166131a2565b6129cf91906131a2565b6129d991906131a2565b6019805460ff928316600160201b90810264ff000000001983168117938490556040805191861693861693909317815261010084048516602082015262010000840485168184015263010000008404851660608201529204909216608082015290517f986960ecfa20031922e0de1515f5be00dad6c5ae7820aa7a957e593a585db9f69181900360a00190a150505050565b600061149583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d57565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ae257612ae2612f56565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5f9190612f39565b81600181518110612b7257612b72612f56565b6001600160a01b039283166020918202929092010152600654612b98913091168461149c565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790612bd19085906000908690309042906004016131d4565b600060405180830381600087803b158015612beb57600080fd5b505af1158015612bff573d6000803e3d6000fd5b505050505050565b600654612c1f9030906001600160a01b03168461149c565b600654600d5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612c8f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120d79190613210565b6001600160a01b03811615801590612cd757506001600160a01b03811661dead14155b8015612cfc57506001600160a01b03821660009081526013602052604090205460ff16155b8015612d2157506001600160a01b03811660009081526013602052604090205460ff16155b156116da5782158015612d375750600a5460ff16155b8015612d4557506000600b54115b156116da57600b54612d5683610dac565b612d609190613156565b600c55505050565b600060208083528351808285015260005b81811015612d9557858101830151858201604001528201612d79565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610cac57600080fd5b60008060408385031215612dde57600080fd5b8235612de981612db6565b946020939093013593505050565b60008060408385031215612e0a57600080fd5b823591506020830135612e1c81612db6565b809150509250929050565b600060208284031215612e3957600080fd5b5035919050565b600080600060608486031215612e5557600080fd5b8335612e6081612db6565b92506020840135612e7081612db6565b929592945050506040919091013590565b600060208284031215612e9357600080fd5b813561149581612db6565b60008060408385031215612eb157600080fd5b8235612ebc81612db6565b915060208301358015158114612e1c57600080fd5b60008060408385031215612ee457600080fd5b8235612eef81612db6565b91506020830135612e1c81612db6565b600181811c90821680612f1357607f821691505b602082108103612f3357634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215612f4b57600080fd5b815161149581612db6565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015612fa55781516001600160a01b031687529582019590820190600101612f80565b509495945050505050565b848152608060208201526000612fc96080830186612f6c565b6001600160a01b03949094166040830152506060015292915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108085761080861301a565b634e487b7160e01b600052601260045260246000fd5b60008261306c5761306c613047565b500490565b6020808252602a908201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604082015269276578636c756465642760b01b606082015260800190565b808201808211156108085761080861301a565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156108085761080861301a565b68ffffffffffffffffff1991909116815260200190565b600060ff83168061319357613193613047565b8060ff84160491505092915050565b60ff81811683821601908111156108085761080861301a565b60ff82811682821603908111156108085761080861301a565b85815284602082015260a0604082015260006131f360a0830186612f6c565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561322557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655f2329930b3100cba2e69aeb808977fa035a02c57c07f52a40f093308d6874af45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d5069ddeff2c54548346280d8f16c81fb4c888a5295f32599421387c0e72018c64736f6c63430008120033