0x60806040526004361061036f5760003560e01c8063715018a6116101c6578063b1ba39ea116100f7578063d469801611610095578063e78cea921161006f578063e78cea9214610a56578063f2fde38b14610a76578063f4e0d9ac14610a96578063fe01753514610ab657600080fd5b8063d4698016146109d0578063d7b4be24146109f0578063dd62ed3e14610a1057600080fd5b8063c0246668116100d1578063c024666814610909578063cd43e22814610929578063d2d7ad831461099a578063d3221576146109b057600080fd5b8063b1ba39ea14610899578063b62496f5146108b9578063bea9849e146108e957600080fd5b806395d89b4111610164578063a8b9d2401161013e578063a8b9d24014610823578063a9059cbb14610843578063aa4bde2814610863578063aee50b1e1461087957600080fd5b806395d89b41146107ce5780639fad9683146107e3578063a457c2d71461080357600080fd5b8063880bcbc1116101a0578063880bcbc11461075a5780638c0b5e221461077a5780638da5cb5b146107905780638ea5220f146107ae57600080fd5b8063715018a61461070557806375cb1bd11461071a578063781edb3c1461073a57600080fd5b806330bb4cff116102a057806345a423291161023e5780635ebf4db9116102185780635ebf4db91461069057806364b0f653146106b05780636843cd84146106c557806370a08231146106e557600080fd5b806345a423291461062757806349bd5a5e146106475780634e71d92d1461067b57600080fd5b806334cf1fea1161027a57806334cf1fea146105b257806339509351146105c757806340c10f19146105e757806342966c681461060757600080fd5b806330bb4cff14610561578063313ce5671461057657806331e79db01461059257600080fd5b80631694505e1161030d5780631e293c10116102e75780631e293c10146104e157806323b872dd1461050157806327a14fc2146105215780632c1f52161461054157600080fd5b80631694505e1461048257806318160ddd146104a25780631cd348c0146104c157600080fd5b8063098df58511610349578063098df585146103f35780630b26cf66146104155780630bd05b69146104355780631582358e1461044a57600080fd5b8063064a59d01461037b57806306fdde03146103b1578063095ea7b3146103d357600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5060075461039c90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156103bd57600080fd5b506103c6610afc565b6040516103a89190613a9f565b3480156103df57600080fd5b5061039c6103ee366004613b02565b610b8e565b3480156103ff57600080fd5b5061041361040e366004613b2e565b610ba5565b005b34801561042157600080fd5b50610413610430366004613b47565b610cd4565b34801561044157600080fd5b50610413610dba565b34801561045657600080fd5b50600c5461046a906001600160a01b031681565b6040516001600160a01b0390911681526020016103a8565b34801561048e57600080fd5b5060065461046a906001600160a01b031681565b3480156104ae57600080fd5b506003545b6040519081526020016103a8565b3480156104cd57600080fd5b50600f5461046a906001600160a01b031681565b3480156104ed57600080fd5b506104136104fc366004613b2e565b610df9565b34801561050d57600080fd5b5061039c61051c366004613b64565b610ec1565b34801561052d57600080fd5b5061041361053c366004613b2e565b610f2a565b34801561054d57600080fd5b5060075461046a906001600160a01b031681565b34801561056d57600080fd5b506104b3610ff6565b34801561058257600080fd5b50604051600981526020016103a8565b34801561059e57600080fd5b506104136105ad366004613b47565b611069565b3480156105be57600080fd5b506104136110f6565b3480156105d357600080fd5b5061039c6105e2366004613b02565b61112f565b3480156105f357600080fd5b5061039c610602366004613b02565b611165565b34801561061357600080fd5b50610413610622366004613b2e565b61124c565b34801561063357600080fd5b50610413610642366004613bb3565b6112c9565b34801561065357600080fd5b5061046a7f000000000000000000000000d8a8442013f071bb118c3c3e03f6d07576d85a5381565b34801561068757600080fd5b506104136113e9565b34801561069c57600080fd5b506104136106ab366004613b2e565b61145e565b3480156106bc57600080fd5b506104b36114b9565b3480156106d157600080fd5b506104b36106e0366004613b47565b611503565b3480156106f157600080fd5b506104b3610700366004613b47565b611573565b34801561071157600080fd5b5061041361158e565b34801561072657600080fd5b50610413610735366004613bec565b611602565b34801561074657600080fd5b50610413610755366004613bb3565b611903565b34801561076657600080fd5b50610413610775366004613bb3565b6119c5565b34801561078657600080fd5b506104b360095481565b34801561079c57600080fd5b506000546001600160a01b031661046a565b3480156107ba57600080fd5b50600e5461046a906001600160a01b031681565b3480156107da57600080fd5b506103c6611a87565b3480156107ef57600080fd5b506104136107fe366004613c4d565b611a96565b34801561080f57600080fd5b5061039c61081e366004613b02565b611b4d565b34801561082f57600080fd5b506104b361083e366004613b47565b611b9c565b34801561084f57600080fd5b5061039c61085e366004613b02565b611bcf565b34801561086f57600080fd5b506104b360085481565b34801561088557600080fd5b50610413610894366004613b2e565b611bdc565b3480156108a557600080fd5b506104136108b4366004613c4d565b611cb0565b3480156108c557600080fd5b5061039c6108d4366004613b47565b601a6020526000908152604090205460ff1681565b3480156108f557600080fd5b50610413610904366004613b47565b611d07565b34801561091557600080fd5b50610413610924366004613bb3565b611e29565b34801561093557600080fd5b5060145460ff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b909104165b6040805160ff968716815294861660208601529285169284019290925283166060830152909116608082015260a0016103a8565b3480156109a657600080fd5b506104b3600b5481565b3480156109bc57600080fd5b506104136109cb366004613bb3565b611eeb565b3480156109dc57600080fd5b50600d5461046a906001600160a01b031681565b3480156109fc57600080fd5b5060115461046a906001600160a01b031681565b348015610a1c57600080fd5b506104b3610a2b366004613cb2565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610a6257600080fd5b5060105461046a906001600160a01b031681565b348015610a8257600080fd5b50610413610a91366004613b47565b611f6d565b348015610aa257600080fd5b50610413610ab1366004613b47565b612057565b348015610ac257600080fd5b5060145460ff610100820481169163010000008104821691600160281b8204811691600160381b8104821691600160481b90910416610966565b606060048054610b0b90613ce0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3790613ce0565b8015610b845780601f10610b5957610100808354040283529160200191610b84565b820191906000526020600020905b815481529060010190602001808311610b6757829003601f168201915b5050505050905090565b6000610b9b3384846121c5565b5060015b92915050565b6000546001600160a01b03163314610bd85760405162461bcd60e51b8152600401610bcf90613d1a565b60405180910390fd5b478110610c405760405162461bcd60e51b815260206004820152603060248201527f427265776c6162733a2043616e6e6f742073656e64206d6f7265207468616e2060448201526f636f6e74726163742062616c616e636560801b6064820152608401610bcf565b600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114610c8d576040519150601f19603f3d011682016040523d82523d6000602084013e610c92565b606091505b505090508015610cd0576040518281527f362ae087cf4ccfc970d45b9e8ce6520f03b4eda3f9d76a70b655dc22badcca489060200160405180910390a15b5050565b6000546001600160a01b03163314610cfe5760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b03811615801590610d2457506010546001600160a01b03828116911614155b610d705760405162461bcd60e51b815260206004820152601860248201527f427265776c6162733a20496e76616c69642062726964676500000000000000006044820152606401610bcf565b601080546001600160a01b0319166001600160a01b0383169081179091556040517f449973c418c4a6a21741606c661bbe051913a2a2fb91a2ce79021a334475cfe590600090a250565b6000546001600160a01b03163314610de45760405162461bcd60e51b8152600401610bcf90613d1a565b6007805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610e235760405162461bcd60e51b8152600401610bcf90613d1a565b6009548103610e8e5760405162461bcd60e51b815260206004820152603160248201527f427265776c6162733a2043616e6e6f7420757064617465206d61785478416d6f604482015270756e7420746f2073616d652076616c756560781b6064820152608401610bcf565b60095460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600955565b6000610ece8484846122ea565b610f208433610f1b85604051806060016040528060288152602001614064602891396001600160a01b038a16600090815260026020908152604080832033845290915290205491906127ea565b6121c5565b5060019392505050565b6000546001600160a01b03163314610f545760405162461bcd60e51b8152600401610bcf90613d1a565b6008548103610fc35760405162461bcd60e51b815260206004820152603560248201527f427265776c6162733a2043616e6e6f7420757064617465206d617857616c6c6560448201527474416d6f756e7420746f2073616d652076616c756560581b6064820152608401610bcf565b60085460405182907f6d3e257c59a11116c3e97bb144abf5ba1a6a9da6bd509192ecf0d48f7be1fc7690600090a3600855565b600754604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae9160048083019260209291908290030181865afa158015611040573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110649190613d4f565b905090565b6000546001600160a01b031633146110935760405162461bcd60e51b8152600401610bcf90613d1a565b60075460405163031e79db60e41b81526001600160a01b038381166004830152909116906331e79db0906024015b600060405180830381600087803b1580156110db57600080fd5b505af11580156110ef573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146111205760405162461bcd60e51b8152600401610bcf90613d1a565b6007805460ff60a01b19169055565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610b9b918590610f1b9086612824565b6010546000906001600160a01b031633146111c25760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792062726964676520636f6e74726163742063616e206d696e740000006044820152606401610bcf565b6111cc838361288a565b6007546001600160a01b031663e30443bc846111e781611573565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561122d57600080fd5b505af192505050801561123e575060015b15610b9b5750600192915050565b6112563382612970565b6007546001600160a01b031663e30443bc3361127181611573565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156112b757600080fd5b505af1925050508015610cd057505b50565b6000546001600160a01b031633146112f35760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b03821660009081526016602052604090205481151560ff9091161515036113895760405162461bcd60e51b815260206004820152603a60248201527f427265776c6162733a205468652073656c65637465642077616c6c657420697360448201527f20616c72656164792073657420746f207468652076616c7565200000000000006064820152608401610bcf565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527fe70512a569cf898db2e20aa3b4cc3f0dd13377b82a493840d326ab5a1966687791015b60405180910390a25050565b60075460405163bc4c4b3760e01b8152336004820152600060248201526001600160a01b039091169063bc4c4b37906044016020604051808303816000875af115801561143a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c69190613d68565b6000546001600160a01b031633146114885760405162461bcd60e51b8152600401610bcf90613d1a565b60075460405163163c7cef60e01b8152600481018390526001600160a01b039091169063163c7cef906024016110c1565b600754604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde9160048083019260209291908290030181865afa158015611040573d6000803e3d6000fd5b6007546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a08231906024015b602060405180830381865afa15801561154f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190613d4f565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b031633146115b85760405162461bcd60e51b8152600401610bcf90613d1a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461162c5760405162461bcd60e51b8152600401610bcf90613d1a565b600d546001600160a01b03848116911614611722576001600160a01b0383166116a95760405162461bcd60e51b815260206004820152602960248201527f427265776c6162733a20546865206c697175696469747957616c6c657420636160448201526806e6e6f7420626520360bc1b6064820152608401610bcf565b600d546040516e1b1a5c5d5a591a5d1e55d85b1b195d608a1b81526001600160a01b0391821691851690600f01604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600d80546001600160a01b0319166001600160a01b0385161790555b600e546001600160a01b0383811691161461180c576001600160a01b0382166117995760405162461bcd60e51b815260206004820152602360248201527f427265776c6162733a205468652064657657616c6c65742063616e6e6f74206260448201526206520360ec1b6064820152608401610bcf565b600e546040516819195d95d85b1b195d60ba1b81526001600160a01b0391821691841690600901604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600e80546001600160a01b0319166001600160a01b0384161790555b600f546001600160a01b038281169116146118fe576001600160a01b0381166118875760405162461bcd60e51b815260206004820152602760248201527f427265776c6162733a20546865206275794261636b57616c6c65742063616e6e60448201526606f7420626520360cc1b6064820152608401610bcf565b600f546040516c189d5e509858dad5d85b1b195d609a1b81526001600160a01b0391821691831690600d01604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600f80546001600160a01b0319166001600160a01b0383161790555b505050565b6000546001600160a01b0316331461192d5760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b03821660009081526019602052604090205481151560ff90911615150361196d5760405162461bcd60e51b8152600401610bcf90613d85565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527ff5133f371b17bf21ce0df4ae2c1b6e11ca7c2f27257eb55282edb1ccfd4ecb2e91016113dd565b6000546001600160a01b031633146119ef5760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b03821660009081526018602052604090205481151560ff909116151503611a2f5760405162461bcd60e51b8152600401610bcf90613d85565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a4091016113dd565b606060058054610b0b90613ce0565b6000546001600160a01b03163314611ac05760405162461bcd60e51b8152600401610bcf90613d1a565b611acf60128686868686612a74565b6040516b62617365466565732d42757960a01b8152600c015b6040805191829003822060ff8881168452878116602085015286811684840152858116606085015284166080840152905190917f9a3619059270a48acdf850268d8f96db29f0cfe103bc17b5b4040a05af4d4f67919081900360a00190a25050505050565b6000610b9b3384610f1b856040518060600160405280602581526020016140ac602591393360009081526002602090815260408083206001600160a01b038d16845290915290205491906127ea565b6007546040516302a2e74960e61b81526001600160a01b038381166004830152600092169063a8b9d24090602401611532565b6000610b9b3384846122ea565b6000546001600160a01b03163314611c065760405162461bcd60e51b8152600401610bcf90613d1a565b600b548103611c7d5760405162461bcd60e51b815260206004820152603d60248201527f427265776c6162733a2043616e6e6f7420757064617465206d696e696d756d5460448201527f6f6b656e734265666f72655377617020746f2073616d652076616c75650000006064820152608401610bcf565b600b5460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600b55565b6000546001600160a01b03163314611cda5760405162461bcd60e51b8152600401610bcf90613d1a565b611ce960128686868686612d56565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d01611ae8565b6000546001600160a01b03163314611d315760405162461bcd60e51b8152600401610bcf90613d1a565b6006546001600160a01b0390811690821603611da55760405162461bcd60e51b815260206004820152602d60248201527f427265776c6162733a2054686520726f7574657220616c72656164792068617360448201526c2074686174206164647265737360981b6064820152608401610bcf565b6006546040516001600160a01b03918216918316907f2afbff3ed601a8723765c7072d8ea8445e08f6f1874afd34a2b747a272c3ebad90600090a3600680546001600160a01b0319166001600160a01b03838116918217909255600754604051635f54c24f60e11b815260048101929092529091169063bea9849e906024016110c1565b6000546001600160a01b03163314611e535760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b03821660009081526017602052604090205481151560ff909116151503611e935760405162461bcd60e51b8152600401610bcf90613d85565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b91016113dd565b6000546001600160a01b03163314611f155760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527fcb9f97b7b4b41413e5c8d418a8cf9a88db1cf34dee66b213d070faf881d9d35091016113dd565b6000546001600160a01b03163314611f975760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b038116611ffc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bcf565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146120815760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b0381166120e85760405162461bcd60e51b815260206004820152602860248201527f427265776c6162733a20546865207374616b696e67416464726573732063616e60448201526706e6f7420626520360c41b6064820152608401610bcf565b6011546001600160a01b039081169082160361217b5760405162461bcd60e51b815260206004820152604660248201527f427265776c6162733a20546865207374616b696e67416464726573732069732060448201527f616c7265616479207468652076616c7565206f66206e65775374616b696e674160648201526564647265737360d01b608482015260a401610bcf565b601180546001600160a01b0319166001600160a01b0383169081179091556040517fd6912e103d1553f15e77ffc98e99da32c9ce0d21d8be27cbb38437b1afe3092890600090a250565b6001600160a01b0383166122275760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bcf565b6001600160a01b0382166122885760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bcf565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166123105760405162461bcd60e51b8152600401610bcf90613dd9565b6001600160a01b0382166123365760405162461bcd60e51b8152600401610bcf90613e1e565b8060000361234a576118fe83836000613054565b6001600160a01b03831660009081526015602052604090205460ff1615801561238c57506001600160a01b03821660009081526015602052604090205460ff16155b1561255857600754600160a01b900460ff166123fb5760405162461bcd60e51b815260206004820152602860248201527f427265776c6162733a2054726164696e672069732063757272656e746c79206460448201526734b9b0b13632b21760c11b6064820152608401610bcf565b6001600160a01b03821660009081526018602052604090205460ff1615801561243d57506001600160a01b03831660009081526018602052604090205460ff16155b156124ad576009548111156124ad5760405162461bcd60e51b815260206004820152603060248201527f427265776c6162733a2042757920616d6f756e7420657863656564732074686560448201526f1036b0bc2a3c213abca0b6b7bab73a1760811b6064820152608401610bcf565b6001600160a01b03821660009081526019602052604090205460ff1661255857600854816124da84611573565b6124e49190613e77565b11156125585760405162461bcd60e51b815260206004820152603d60248201527f427265776c6162733a2045787065637465642077616c6c657420616d6f756e7460448201527f206578636565647320746865206d617857616c6c6574416d6f756e742e0000006064820152608401610bcf565b6001600160a01b038084166000908152601a602052604080822054928516825290205461258d9160ff90811691168585613160565b6000600b5461259b30611573565b6007549111159150600160a01b900460ff1680156125b65750805b80156125c55750600a5460ff16155b80156125dc5750601b54600160281b900460ff1615155b801561260057506001600160a01b0383166000908152601a602052604090205460ff165b1561262557600a805460ff1916600117905561261a613421565b600a805460ff191690555b600a5460009060ff161580156126445750600754600160a01b900460ff165b6001600160a01b03861660009081526017602052604090205490915060ff168061268657506001600160a01b03841660009081526017602052604090205460ff165b1561268f575060005b8080156126a75750601b54600160281b900460ff1615155b156126ee57601b546000906064906126c990600160281b900460ff1686613e8a565b6126d39190613eb7565b90506126df8185613ecb565b93506126ec863083613054565b505b6126f9858585613054565b6007546001600160a01b031663e30443bc8661271481611573565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561275a57600080fd5b505af192505050801561276b575060015b506007546001600160a01b031663e30443bc8561278781611573565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156127cd57600080fd5b505af19250505080156127de575060015b156110ef575050505050565b6000818484111561280e5760405162461bcd60e51b8152600401610bcf9190613a9f565b50600061281b8486613ecb565b95945050505050565b6000806128318385613e77565b9050838110156128835760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bcf565b9392505050565b6001600160a01b0382166128e05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bcf565b6003546128ed9082612824565b6003556001600160a01b0382166000908152600160205260409020546129139082612824565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906129649085815260200190565b60405180910390a35050565b6001600160a01b0382166129d05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610bcf565b612a0d8160405180606001604052806022815260200161401c602291396001600160a01b03851660009081526001602052604090205491906127ea565b6001600160a01b038316600090815260016020526040902055600354612a339082613745565b6003556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612964565b600286015460ff868116911614612af557604051706c69717569646974794665654f6e42757960781b815260110160405190819003812060028801548854919260ff918216929189169160008051602061408c83398151915291612adb9160481b90613ede565b60405180910390a460028601805460ff191660ff87161790555b600286015460ff858116620100009092041614612b83576040516a6465764665654f6e42757960a81b8152600b0160405190819003812060028801548854919260ff620100009092048216929188169160008051602061408c83398151915291612b629160481b90613ede565b60405180910390a460028601805462ff000019166201000060ff8716021790555b600286015460ff848116600160201b9092041614612c1a576040516e6275794261636b4665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160201b9092048216929187169160008051602061408c83398151915291612bf69160481b90613ede565b60405180910390a460028601805464ff000000001916600160201b60ff8616021790555b600286015460ff838116600160301b9092041614612cb3576040516e7374616b696e674665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160301b9092048216929186169160008051602061408c83398151915291612c8d9160481b90613ede565b60405180910390a460028601805466ff0000000000001916600160301b60ff8516021790555b600286015460ff828116600160401b9092041614612d4e576040516e686f6c646572734665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160401b9092048216929185169160008051602061408c83398151915291612d269160481b90613ede565b60405180910390a460028601805468ff00000000000000001916600160401b60ff8416021790555b505050505050565b600286015460ff8681166101009092041614612de757604051711b1a5c5d5a591a5d1e51995953db94d95b1b60721b815260120160405190819003812060028801548854919260ff6101009092048216929189169160008051602061408c83398151915291612dc89160481b90613ede565b60405180910390a460028601805461ff00191661010060ff8816021790555b600286015460ff85811663010000009092041614612e7a576040516b19195d91995953db94d95b1b60a21b8152600c0160405190819003812060028801548854919260ff63010000009092048216929188169160008051602061408c83398151915291612e579160481b90613ede565b60405180910390a460028601805463ff0000001916630100000060ff8716021790555b600286015460ff848116600160281b9092041614612f13576040516f189d5e509858dad1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160281b9092048216929187169160008051602061408c83398151915291612eee9160481b90613ede565b60405180910390a460028601805465ff00000000001916600160281b60ff8616021790555b600286015460ff838116600160381b9092041614612fae576040516f1cdd185ada5b99d1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160381b9092048216929186169160008051602061408c83398151915291612f879160481b90613ede565b60405180910390a460028601805467ff000000000000001916600160381b60ff8516021790555b600286015460ff828116600160481b9092041614612d4e576040516f1a1bdb19195c9cd1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160481b9092048216929185169160008051602061408c833981519152916130229160481b90613ede565b60405180910390a460028601805460ff8316600160481b0269ff00000000000000000019909116179055505050505050565b6001600160a01b03831661307a5760405162461bcd60e51b8152600401610bcf90613dd9565b6001600160a01b0382166130a05760405162461bcd60e51b8152600401610bcf90613e1e565b6130dd8160405180606001604052806026815260200161403e602691396001600160a01b03861660009081526001602052604090205491906127ea565b6001600160a01b03808516600090815260016020526040808220939093559084168152205461310c9082612824565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122dd9085815260200190565b601b805464ffffffffff1916905583156131e857601454601b805460ff80841661ffff1990921691909117610100620100008086048416919091029190911763ffff00001916600160201b80860484169290920263ff000000191617600160301b850483166301000000021764ff000000001916600160401b90940491909116029190911790555b821561326357601454601b805461010080840460ff90811661ffff199093169290921763010000008086048416929092021763ffff00001916600160281b85048316620100000263ff000000191617600160381b85048316919091021764ff000000001916600160481b90930416600160201b029190911790555b8215801561326f575083155b80156132b557506001600160a01b03821660009081526016602052604090205460ff16806132b557506001600160a01b03811660009081526016602052604090205460ff165b1561332e57601454601b805460ff80841661ffff1990921691909117610100620100008086048416919091029190911763ffff00001916600160201b80860484169290920263ff000000191617600160301b850483166301000000021764ff000000001916600160401b90940491909116029190911790555b601b5460ff600160201b82048116916301000000810482169162010000820481169161336291610100820481169116613ef5565b61336c9190613ef5565b6133769190613ef5565b6133809190613ef5565b601b805460ff928316600160281b90810265ff0000000000198316811793849055604080519186169386169390931781526101008404851660208201526201000084048516818401526301000000840485166060820152600160201b840485166080820152920490921660a082015290517f6c6977cb51242ec6e05aba0e2a29a5292ed1a8a5cffa3b87ff66395b7997d6d29181900360c00190a150505050565b600061342c30611573565b601b54909150479060009060029060ff600160281b8204811691613451911686613e8a565b61345b9190613eb7565b6134659190613eb7565b601b5490915060009060ff600160281b820481169161348d9163010000009091041686613e8a565b6134979190613eb7565b905060006134a58284613e77565b6134af9086613ecb565b90506134ba81613787565b60006134c68547613ecb565b601b5490915060009060ff630100000082048116916134e89160029116613f0e565b601b546134ff9190600160281b900460ff16613f30565b6135099190613f30565b601b5460ff91821692506000916002918491613526911686613e8a565b6135309190613eb7565b61353a9190613eb7565b601b5490915060009083906135589062010000900460ff1686613e8a565b6135629190613eb7565b601b54909150600090849061357f90610100900460ff1687613e8a565b6135899190613eb7565b90506000816135988486613e77565b6135a29190613e77565b6135ac9087613ecb565b600f549091506135c5906001600160a01b0316846138d9565b600e546135db906001600160a01b0316836138d9565b881561362d576135eb89856139f2565b60408051888152602081018690529081018a90527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b60115460405163a9059cbb60e01b81526001600160a01b03909116600482015260248101899052600090309063a9059cbb906044016020604051808303816000875af1158015613681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a59190613d68565b6007546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146136f3576040519150601f19603f3d011682016040523d82523d6000602084013e6136f8565b606091505b50909150508015613737576040518281527fa4049db804d87a845be4dd8b54ae7048131238fba985dd37234309ac8668d9699060200160405180910390a15b505050505050505050505050565b600061288383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127ea565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106137bc576137bc613f49565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138399190613f5f565b8160018151811061384c5761384c613f49565b6001600160a01b03928316602091820292909201015260065461387291309116846121c5565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906138ab908590600190869030904290600401613f7c565b600060405180830381600087803b1580156138c557600080fd5b505af1158015612d4e573d6000803e3d6000fd5b804710156139295760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610bcf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613976576040519150601f19603f3d011682016040523d82523d6000602084013e61397b565b606091505b50509050806118fe5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610bcf565b600654613a0a9030906001600160a01b0316846121c5565b600654600d5460405163f305d71960e01b81523060048201526024810185905260016044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015613a7a573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110ef9190613fed565b600060208083528351808285015260005b81811015613acc57858101830151858201604001528201613ab0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112c657600080fd5b60008060408385031215613b1557600080fd5b8235613b2081613aed565b946020939093013593505050565b600060208284031215613b4057600080fd5b5035919050565b600060208284031215613b5957600080fd5b813561288381613aed565b600080600060608486031215613b7957600080fd5b8335613b8481613aed565b92506020840135613b9481613aed565b929592945050506040919091013590565b80151581146112c657600080fd5b60008060408385031215613bc657600080fd5b8235613bd181613aed565b91506020830135613be181613ba5565b809150509250929050565b600080600060608486031215613c0157600080fd5b8335613c0c81613aed565b92506020840135613c1c81613aed565b91506040840135613c2c81613aed565b809150509250925092565b803560ff81168114613c4857600080fd5b919050565b600080600080600060a08688031215613c6557600080fd5b613c6e86613c37565b9450613c7c60208701613c37565b9350613c8a60408701613c37565b9250613c9860608701613c37565b9150613ca660808701613c37565b90509295509295909350565b60008060408385031215613cc557600080fd5b8235613cd081613aed565b91506020830135613be181613aed565b600181811c90821680613cf457607f821691505b602082108103613d1457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215613d6157600080fd5b5051919050565b600060208284031215613d7a57600080fd5b815161288381613ba5565b60208082526034908201527f427265776c6162733a204163636f756e7420697320616c7265616479207468656040820152732076616c7565206f6620276578636c756465642760601b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b9f57610b9f613e61565b8082028115828204841417610b9f57610b9f613e61565b634e487b7160e01b600052601260045260246000fd5b600082613ec657613ec6613ea1565b500490565b81810381811115610b9f57610b9f613e61565b68ffffffffffffffffff1991909116815260200190565b60ff8181168382160190811115610b9f57610b9f613e61565b600060ff831680613f2157613f21613ea1565b8060ff84160491505092915050565b60ff8281168282160390811115610b9f57610b9f613e61565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613f7157600080fd5b815161288381613aed565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613fcc5784516001600160a01b031683529383019391830191600101613fa7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561400257600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636500edc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122002c0e5d5dcef6b1e2b66decf9153d9a1dbea61b6237fcf4b5dca82dbeb864d9864736f6c63430008110033
0x66354a6ba7a18000600890815566071afd498d00006009556703782dace9d90000600b55600c80546001600160a01b03191673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48179055610240604052636261736560e01b60a052600060c081905260e081905260016101008190526101208190526101408190526101608190526101808390526101a0929092526101c08290526101e091909152600461020081905261022052601280546001600160c01b031916636261736560981b1790556013556014805469040401010808010101016001600160501b0319909116179055348015620000ed57600080fd5b5060405180604001604052806008815260200167427265776c61627360c01b81525060405180604001604052806008815260200167425245574c41425360c01b8152506000620001426200081a60201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060046200019a838262000a52565b506005620001a9828262000a52565b505050604051620001ba906200099f565b604051809103906000f080158015620001d7573d6000803e3d6000fd5b50600780546001600160a01b0319166001600160a01b03929092169182179055604051635f54c24f60e11b8152737a250d5630b4cf539739df2c5dacb4c659f2488d600482015263bea9849e90602401600060405180830381600087803b1580156200024257600080fd5b505af115801562000257573d6000803e3d6000fd5b5050600754600c54604051638aee812760e01b81526001600160a01b03918216600482015291169250638aee81279150602401600060405180830381600087803b158015620002a557600080fd5b505af1158015620002ba573d6000803e3d6000fd5b50505050620002ce6200081e60201b60201c565b600d80546001600160a01b039283166001600160a01b03199182161790915560008054600e8054841691909416908117909355600f805490921690921790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa15801562000362573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000388919062000b1e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fc919062000b1e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200044a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000470919062000b1e565b600680546001600160a01b0319166001600160a01b038581169190911790915581166080529050620004a48160016200082d565b600160176000620004bd6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260179093528183208054851660019081179091556007805483168552938390208054909516179093559054905163031e79db60e41b8152911660048201819052906331e79db090602401600060405180830381600087803b1580156200055357600080fd5b505af115801562000568573d6000803e3d6000fd5b505060075460405163031e79db60e41b81523060048201526001600160a01b0390911692506331e79db09150602401600060405180830381600087803b158015620005b257600080fd5b505af1158015620005c7573d6000803e3d6000fd5b505060075460405163031e79db60e41b815261dead60048201526001600160a01b0390911692506331e79db09150602401600060405180830381600087803b1580156200061357600080fd5b505af115801562000628573d6000803e3d6000fd5b50506007546001600160a01b031691506331e79db09050620006526000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200069457600080fd5b505af1158015620006a9573d6000803e3d6000fd5b505060075460405163031e79db60e41b81526001600160a01b03868116600483015290911692506331e79db09150602401600060405180830381600087803b158015620006f557600080fd5b505af11580156200070a573d6000803e3d6000fd5b50505050600160156000620007246200081e60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308082526015855283822080548716600190811790915560078054851684526018875285842080548916831790558284528584208054891683179055888516845260199687905285842080548916831790555484168352848320805488168217905560065490931682528382208054871684179055815291822080549094168117909355620007e96000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555062000b509050565b3390565b6000546001600160a01b031690565b6001600160a01b0382166000908152601a602052604090205481151560ff909116151503620008d35760405162461bcd60e51b815260206004820152604260248201527f427265776c6162733a204175746f6d61746564206d61726b6574206d616b657260448201527f207061697220697320616c72656164792073657420746f20746861742076616c606482015261756560f01b608482015260a40160405180910390fd5b6001600160a01b0382166000908152601a60205260409020805460ff19168215801591909117909155620009635760075460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db090602401600060405180830381600087803b1580156200094957600080fd5b505af11580156200095e573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fa666b9b2dc2c8f2d86fda7ba3a115be30d3a958fd84d359cbc6bc919df97990a90600090a35050565b611f598062004c7283390190565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620009d857607f821691505b602082108103620009f957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000a4d57600081815260208120601f850160051c8101602086101562000a285750805b601f850160051c820191505b8181101562000a495782815560010162000a34565b5050505b505050565b81516001600160401b0381111562000a6e5762000a6e620009ad565b62000a868162000a7f8454620009c3565b84620009ff565b602080601f83116001811462000abe576000841562000aa55750858301515b600019600386901b1c1916600185901b17855562000a49565b600085815260208120601f198616915b8281101562000aef5788860151825594840194600190910190840162000ace565b508582101562000b0e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000b3157600080fd5b81516001600160a01b038116811462000b4957600080fd5b9392505050565b60805161410662000b6c600039600061065901526141066000f3fe60806040526004361061036f5760003560e01c8063715018a6116101c6578063b1ba39ea116100f7578063d469801611610095578063e78cea921161006f578063e78cea9214610a56578063f2fde38b14610a76578063f4e0d9ac14610a96578063fe01753514610ab657600080fd5b8063d4698016146109d0578063d7b4be24146109f0578063dd62ed3e14610a1057600080fd5b8063c0246668116100d1578063c024666814610909578063cd43e22814610929578063d2d7ad831461099a578063d3221576146109b057600080fd5b8063b1ba39ea14610899578063b62496f5146108b9578063bea9849e146108e957600080fd5b806395d89b4111610164578063a8b9d2401161013e578063a8b9d24014610823578063a9059cbb14610843578063aa4bde2814610863578063aee50b1e1461087957600080fd5b806395d89b41146107ce5780639fad9683146107e3578063a457c2d71461080357600080fd5b8063880bcbc1116101a0578063880bcbc11461075a5780638c0b5e221461077a5780638da5cb5b146107905780638ea5220f146107ae57600080fd5b8063715018a61461070557806375cb1bd11461071a578063781edb3c1461073a57600080fd5b806330bb4cff116102a057806345a423291161023e5780635ebf4db9116102185780635ebf4db91461069057806364b0f653146106b05780636843cd84146106c557806370a08231146106e557600080fd5b806345a423291461062757806349bd5a5e146106475780634e71d92d1461067b57600080fd5b806334cf1fea1161027a57806334cf1fea146105b257806339509351146105c757806340c10f19146105e757806342966c681461060757600080fd5b806330bb4cff14610561578063313ce5671461057657806331e79db01461059257600080fd5b80631694505e1161030d5780631e293c10116102e75780631e293c10146104e157806323b872dd1461050157806327a14fc2146105215780632c1f52161461054157600080fd5b80631694505e1461048257806318160ddd146104a25780631cd348c0146104c157600080fd5b8063098df58511610349578063098df585146103f35780630b26cf66146104155780630bd05b69146104355780631582358e1461044a57600080fd5b8063064a59d01461037b57806306fdde03146103b1578063095ea7b3146103d357600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5060075461039c90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156103bd57600080fd5b506103c6610afc565b6040516103a89190613a9f565b3480156103df57600080fd5b5061039c6103ee366004613b02565b610b8e565b3480156103ff57600080fd5b5061041361040e366004613b2e565b610ba5565b005b34801561042157600080fd5b50610413610430366004613b47565b610cd4565b34801561044157600080fd5b50610413610dba565b34801561045657600080fd5b50600c5461046a906001600160a01b031681565b6040516001600160a01b0390911681526020016103a8565b34801561048e57600080fd5b5060065461046a906001600160a01b031681565b3480156104ae57600080fd5b506003545b6040519081526020016103a8565b3480156104cd57600080fd5b50600f5461046a906001600160a01b031681565b3480156104ed57600080fd5b506104136104fc366004613b2e565b610df9565b34801561050d57600080fd5b5061039c61051c366004613b64565b610ec1565b34801561052d57600080fd5b5061041361053c366004613b2e565b610f2a565b34801561054d57600080fd5b5060075461046a906001600160a01b031681565b34801561056d57600080fd5b506104b3610ff6565b34801561058257600080fd5b50604051600981526020016103a8565b34801561059e57600080fd5b506104136105ad366004613b47565b611069565b3480156105be57600080fd5b506104136110f6565b3480156105d357600080fd5b5061039c6105e2366004613b02565b61112f565b3480156105f357600080fd5b5061039c610602366004613b02565b611165565b34801561061357600080fd5b50610413610622366004613b2e565b61124c565b34801561063357600080fd5b50610413610642366004613bb3565b6112c9565b34801561065357600080fd5b5061046a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561068757600080fd5b506104136113e9565b34801561069c57600080fd5b506104136106ab366004613b2e565b61145e565b3480156106bc57600080fd5b506104b36114b9565b3480156106d157600080fd5b506104b36106e0366004613b47565b611503565b3480156106f157600080fd5b506104b3610700366004613b47565b611573565b34801561071157600080fd5b5061041361158e565b34801561072657600080fd5b50610413610735366004613bec565b611602565b34801561074657600080fd5b50610413610755366004613bb3565b611903565b34801561076657600080fd5b50610413610775366004613bb3565b6119c5565b34801561078657600080fd5b506104b360095481565b34801561079c57600080fd5b506000546001600160a01b031661046a565b3480156107ba57600080fd5b50600e5461046a906001600160a01b031681565b3480156107da57600080fd5b506103c6611a87565b3480156107ef57600080fd5b506104136107fe366004613c4d565b611a96565b34801561080f57600080fd5b5061039c61081e366004613b02565b611b4d565b34801561082f57600080fd5b506104b361083e366004613b47565b611b9c565b34801561084f57600080fd5b5061039c61085e366004613b02565b611bcf565b34801561086f57600080fd5b506104b360085481565b34801561088557600080fd5b50610413610894366004613b2e565b611bdc565b3480156108a557600080fd5b506104136108b4366004613c4d565b611cb0565b3480156108c557600080fd5b5061039c6108d4366004613b47565b601a6020526000908152604090205460ff1681565b3480156108f557600080fd5b50610413610904366004613b47565b611d07565b34801561091557600080fd5b50610413610924366004613bb3565b611e29565b34801561093557600080fd5b5060145460ff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b909104165b6040805160ff968716815294861660208601529285169284019290925283166060830152909116608082015260a0016103a8565b3480156109a657600080fd5b506104b3600b5481565b3480156109bc57600080fd5b506104136109cb366004613bb3565b611eeb565b3480156109dc57600080fd5b50600d5461046a906001600160a01b031681565b3480156109fc57600080fd5b5060115461046a906001600160a01b031681565b348015610a1c57600080fd5b506104b3610a2b366004613cb2565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610a6257600080fd5b5060105461046a906001600160a01b031681565b348015610a8257600080fd5b50610413610a91366004613b47565b611f6d565b348015610aa257600080fd5b50610413610ab1366004613b47565b612057565b348015610ac257600080fd5b5060145460ff610100820481169163010000008104821691600160281b8204811691600160381b8104821691600160481b90910416610966565b606060048054610b0b90613ce0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3790613ce0565b8015610b845780601f10610b5957610100808354040283529160200191610b84565b820191906000526020600020905b815481529060010190602001808311610b6757829003601f168201915b5050505050905090565b6000610b9b3384846121c5565b5060015b92915050565b6000546001600160a01b03163314610bd85760405162461bcd60e51b8152600401610bcf90613d1a565b60405180910390fd5b478110610c405760405162461bcd60e51b815260206004820152603060248201527f427265776c6162733a2043616e6e6f742073656e64206d6f7265207468616e2060448201526f636f6e74726163742062616c616e636560801b6064820152608401610bcf565b600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114610c8d576040519150601f19603f3d011682016040523d82523d6000602084013e610c92565b606091505b505090508015610cd0576040518281527f362ae087cf4ccfc970d45b9e8ce6520f03b4eda3f9d76a70b655dc22badcca489060200160405180910390a15b5050565b6000546001600160a01b03163314610cfe5760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b03811615801590610d2457506010546001600160a01b03828116911614155b610d705760405162461bcd60e51b815260206004820152601860248201527f427265776c6162733a20496e76616c69642062726964676500000000000000006044820152606401610bcf565b601080546001600160a01b0319166001600160a01b0383169081179091556040517f449973c418c4a6a21741606c661bbe051913a2a2fb91a2ce79021a334475cfe590600090a250565b6000546001600160a01b03163314610de45760405162461bcd60e51b8152600401610bcf90613d1a565b6007805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610e235760405162461bcd60e51b8152600401610bcf90613d1a565b6009548103610e8e5760405162461bcd60e51b815260206004820152603160248201527f427265776c6162733a2043616e6e6f7420757064617465206d61785478416d6f604482015270756e7420746f2073616d652076616c756560781b6064820152608401610bcf565b60095460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600955565b6000610ece8484846122ea565b610f208433610f1b85604051806060016040528060288152602001614064602891396001600160a01b038a16600090815260026020908152604080832033845290915290205491906127ea565b6121c5565b5060019392505050565b6000546001600160a01b03163314610f545760405162461bcd60e51b8152600401610bcf90613d1a565b6008548103610fc35760405162461bcd60e51b815260206004820152603560248201527f427265776c6162733a2043616e6e6f7420757064617465206d617857616c6c6560448201527474416d6f756e7420746f2073616d652076616c756560581b6064820152608401610bcf565b60085460405182907f6d3e257c59a11116c3e97bb144abf5ba1a6a9da6bd509192ecf0d48f7be1fc7690600090a3600855565b600754604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae9160048083019260209291908290030181865afa158015611040573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110649190613d4f565b905090565b6000546001600160a01b031633146110935760405162461bcd60e51b8152600401610bcf90613d1a565b60075460405163031e79db60e41b81526001600160a01b038381166004830152909116906331e79db0906024015b600060405180830381600087803b1580156110db57600080fd5b505af11580156110ef573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146111205760405162461bcd60e51b8152600401610bcf90613d1a565b6007805460ff60a01b19169055565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610b9b918590610f1b9086612824565b6010546000906001600160a01b031633146111c25760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c792062726964676520636f6e74726163742063616e206d696e740000006044820152606401610bcf565b6111cc838361288a565b6007546001600160a01b031663e30443bc846111e781611573565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561122d57600080fd5b505af192505050801561123e575060015b15610b9b5750600192915050565b6112563382612970565b6007546001600160a01b031663e30443bc3361127181611573565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156112b757600080fd5b505af1925050508015610cd057505b50565b6000546001600160a01b031633146112f35760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b03821660009081526016602052604090205481151560ff9091161515036113895760405162461bcd60e51b815260206004820152603a60248201527f427265776c6162733a205468652073656c65637465642077616c6c657420697360448201527f20616c72656164792073657420746f207468652076616c7565200000000000006064820152608401610bcf565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527fe70512a569cf898db2e20aa3b4cc3f0dd13377b82a493840d326ab5a1966687791015b60405180910390a25050565b60075460405163bc4c4b3760e01b8152336004820152600060248201526001600160a01b039091169063bc4c4b37906044016020604051808303816000875af115801561143a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c69190613d68565b6000546001600160a01b031633146114885760405162461bcd60e51b8152600401610bcf90613d1a565b60075460405163163c7cef60e01b8152600481018390526001600160a01b039091169063163c7cef906024016110c1565b600754604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde9160048083019260209291908290030181865afa158015611040573d6000803e3d6000fd5b6007546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a08231906024015b602060405180830381865afa15801561154f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9f9190613d4f565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b031633146115b85760405162461bcd60e51b8152600401610bcf90613d1a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461162c5760405162461bcd60e51b8152600401610bcf90613d1a565b600d546001600160a01b03848116911614611722576001600160a01b0383166116a95760405162461bcd60e51b815260206004820152602960248201527f427265776c6162733a20546865206c697175696469747957616c6c657420636160448201526806e6e6f7420626520360bc1b6064820152608401610bcf565b600d546040516e1b1a5c5d5a591a5d1e55d85b1b195d608a1b81526001600160a01b0391821691851690600f01604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600d80546001600160a01b0319166001600160a01b0385161790555b600e546001600160a01b0383811691161461180c576001600160a01b0382166117995760405162461bcd60e51b815260206004820152602360248201527f427265776c6162733a205468652064657657616c6c65742063616e6e6f74206260448201526206520360ec1b6064820152608401610bcf565b600e546040516819195d95d85b1b195d60ba1b81526001600160a01b0391821691841690600901604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600e80546001600160a01b0319166001600160a01b0384161790555b600f546001600160a01b038281169116146118fe576001600160a01b0381166118875760405162461bcd60e51b815260206004820152602760248201527f427265776c6162733a20546865206275794261636b57616c6c65742063616e6e60448201526606f7420626520360cc1b6064820152608401610bcf565b600f546040516c189d5e509858dad5d85b1b195d609a1b81526001600160a01b0391821691831690600d01604051908190038120907f4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5290600090a4600f80546001600160a01b0319166001600160a01b0383161790555b505050565b6000546001600160a01b0316331461192d5760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b03821660009081526019602052604090205481151560ff90911615150361196d5760405162461bcd60e51b8152600401610bcf90613d85565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527ff5133f371b17bf21ce0df4ae2c1b6e11ca7c2f27257eb55282edb1ccfd4ecb2e91016113dd565b6000546001600160a01b031633146119ef5760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b03821660009081526018602052604090205481151560ff909116151503611a2f5760405162461bcd60e51b8152600401610bcf90613d85565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a4091016113dd565b606060058054610b0b90613ce0565b6000546001600160a01b03163314611ac05760405162461bcd60e51b8152600401610bcf90613d1a565b611acf60128686868686612a74565b6040516b62617365466565732d42757960a01b8152600c015b6040805191829003822060ff8881168452878116602085015286811684840152858116606085015284166080840152905190917f9a3619059270a48acdf850268d8f96db29f0cfe103bc17b5b4040a05af4d4f67919081900360a00190a25050505050565b6000610b9b3384610f1b856040518060600160405280602581526020016140ac602591393360009081526002602090815260408083206001600160a01b038d16845290915290205491906127ea565b6007546040516302a2e74960e61b81526001600160a01b038381166004830152600092169063a8b9d24090602401611532565b6000610b9b3384846122ea565b6000546001600160a01b03163314611c065760405162461bcd60e51b8152600401610bcf90613d1a565b600b548103611c7d5760405162461bcd60e51b815260206004820152603d60248201527f427265776c6162733a2043616e6e6f7420757064617465206d696e696d756d5460448201527f6f6b656e734265666f72655377617020746f2073616d652076616c75650000006064820152608401610bcf565b600b5460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600b55565b6000546001600160a01b03163314611cda5760405162461bcd60e51b8152600401610bcf90613d1a565b611ce960128686868686612d56565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d01611ae8565b6000546001600160a01b03163314611d315760405162461bcd60e51b8152600401610bcf90613d1a565b6006546001600160a01b0390811690821603611da55760405162461bcd60e51b815260206004820152602d60248201527f427265776c6162733a2054686520726f7574657220616c72656164792068617360448201526c2074686174206164647265737360981b6064820152608401610bcf565b6006546040516001600160a01b03918216918316907f2afbff3ed601a8723765c7072d8ea8445e08f6f1874afd34a2b747a272c3ebad90600090a3600680546001600160a01b0319166001600160a01b03838116918217909255600754604051635f54c24f60e11b815260048101929092529091169063bea9849e906024016110c1565b6000546001600160a01b03163314611e535760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b03821660009081526017602052604090205481151560ff909116151503611e935760405162461bcd60e51b8152600401610bcf90613d85565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b91016113dd565b6000546001600160a01b03163314611f155760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527fcb9f97b7b4b41413e5c8d418a8cf9a88db1cf34dee66b213d070faf881d9d35091016113dd565b6000546001600160a01b03163314611f975760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b038116611ffc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bcf565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146120815760405162461bcd60e51b8152600401610bcf90613d1a565b6001600160a01b0381166120e85760405162461bcd60e51b815260206004820152602860248201527f427265776c6162733a20546865207374616b696e67416464726573732063616e60448201526706e6f7420626520360c41b6064820152608401610bcf565b6011546001600160a01b039081169082160361217b5760405162461bcd60e51b815260206004820152604660248201527f427265776c6162733a20546865207374616b696e67416464726573732069732060448201527f616c7265616479207468652076616c7565206f66206e65775374616b696e674160648201526564647265737360d01b608482015260a401610bcf565b601180546001600160a01b0319166001600160a01b0383169081179091556040517fd6912e103d1553f15e77ffc98e99da32c9ce0d21d8be27cbb38437b1afe3092890600090a250565b6001600160a01b0383166122275760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bcf565b6001600160a01b0382166122885760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bcf565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166123105760405162461bcd60e51b8152600401610bcf90613dd9565b6001600160a01b0382166123365760405162461bcd60e51b8152600401610bcf90613e1e565b8060000361234a576118fe83836000613054565b6001600160a01b03831660009081526015602052604090205460ff1615801561238c57506001600160a01b03821660009081526015602052604090205460ff16155b1561255857600754600160a01b900460ff166123fb5760405162461bcd60e51b815260206004820152602860248201527f427265776c6162733a2054726164696e672069732063757272656e746c79206460448201526734b9b0b13632b21760c11b6064820152608401610bcf565b6001600160a01b03821660009081526018602052604090205460ff1615801561243d57506001600160a01b03831660009081526018602052604090205460ff16155b156124ad576009548111156124ad5760405162461bcd60e51b815260206004820152603060248201527f427265776c6162733a2042757920616d6f756e7420657863656564732074686560448201526f1036b0bc2a3c213abca0b6b7bab73a1760811b6064820152608401610bcf565b6001600160a01b03821660009081526019602052604090205460ff1661255857600854816124da84611573565b6124e49190613e77565b11156125585760405162461bcd60e51b815260206004820152603d60248201527f427265776c6162733a2045787065637465642077616c6c657420616d6f756e7460448201527f206578636565647320746865206d617857616c6c6574416d6f756e742e0000006064820152608401610bcf565b6001600160a01b038084166000908152601a602052604080822054928516825290205461258d9160ff90811691168585613160565b6000600b5461259b30611573565b6007549111159150600160a01b900460ff1680156125b65750805b80156125c55750600a5460ff16155b80156125dc5750601b54600160281b900460ff1615155b801561260057506001600160a01b0383166000908152601a602052604090205460ff165b1561262557600a805460ff1916600117905561261a613421565b600a805460ff191690555b600a5460009060ff161580156126445750600754600160a01b900460ff165b6001600160a01b03861660009081526017602052604090205490915060ff168061268657506001600160a01b03841660009081526017602052604090205460ff165b1561268f575060005b8080156126a75750601b54600160281b900460ff1615155b156126ee57601b546000906064906126c990600160281b900460ff1686613e8a565b6126d39190613eb7565b90506126df8185613ecb565b93506126ec863083613054565b505b6126f9858585613054565b6007546001600160a01b031663e30443bc8661271481611573565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561275a57600080fd5b505af192505050801561276b575060015b506007546001600160a01b031663e30443bc8561278781611573565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156127cd57600080fd5b505af19250505080156127de575060015b156110ef575050505050565b6000818484111561280e5760405162461bcd60e51b8152600401610bcf9190613a9f565b50600061281b8486613ecb565b95945050505050565b6000806128318385613e77565b9050838110156128835760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bcf565b9392505050565b6001600160a01b0382166128e05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bcf565b6003546128ed9082612824565b6003556001600160a01b0382166000908152600160205260409020546129139082612824565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906129649085815260200190565b60405180910390a35050565b6001600160a01b0382166129d05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610bcf565b612a0d8160405180606001604052806022815260200161401c602291396001600160a01b03851660009081526001602052604090205491906127ea565b6001600160a01b038316600090815260016020526040902055600354612a339082613745565b6003556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612964565b600286015460ff868116911614612af557604051706c69717569646974794665654f6e42757960781b815260110160405190819003812060028801548854919260ff918216929189169160008051602061408c83398151915291612adb9160481b90613ede565b60405180910390a460028601805460ff191660ff87161790555b600286015460ff858116620100009092041614612b83576040516a6465764665654f6e42757960a81b8152600b0160405190819003812060028801548854919260ff620100009092048216929188169160008051602061408c83398151915291612b629160481b90613ede565b60405180910390a460028601805462ff000019166201000060ff8716021790555b600286015460ff848116600160201b9092041614612c1a576040516e6275794261636b4665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160201b9092048216929187169160008051602061408c83398151915291612bf69160481b90613ede565b60405180910390a460028601805464ff000000001916600160201b60ff8616021790555b600286015460ff838116600160301b9092041614612cb3576040516e7374616b696e674665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160301b9092048216929186169160008051602061408c83398151915291612c8d9160481b90613ede565b60405180910390a460028601805466ff0000000000001916600160301b60ff8516021790555b600286015460ff828116600160401b9092041614612d4e576040516e686f6c646572734665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160401b9092048216929185169160008051602061408c83398151915291612d269160481b90613ede565b60405180910390a460028601805468ff00000000000000001916600160401b60ff8416021790555b505050505050565b600286015460ff8681166101009092041614612de757604051711b1a5c5d5a591a5d1e51995953db94d95b1b60721b815260120160405190819003812060028801548854919260ff6101009092048216929189169160008051602061408c83398151915291612dc89160481b90613ede565b60405180910390a460028601805461ff00191661010060ff8816021790555b600286015460ff85811663010000009092041614612e7a576040516b19195d91995953db94d95b1b60a21b8152600c0160405190819003812060028801548854919260ff63010000009092048216929188169160008051602061408c83398151915291612e579160481b90613ede565b60405180910390a460028601805463ff0000001916630100000060ff8716021790555b600286015460ff848116600160281b9092041614612f13576040516f189d5e509858dad1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160281b9092048216929187169160008051602061408c83398151915291612eee9160481b90613ede565b60405180910390a460028601805465ff00000000001916600160281b60ff8616021790555b600286015460ff838116600160381b9092041614612fae576040516f1cdd185ada5b99d1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160381b9092048216929186169160008051602061408c83398151915291612f879160481b90613ede565b60405180910390a460028601805467ff000000000000001916600160381b60ff8516021790555b600286015460ff828116600160481b9092041614612d4e576040516f1a1bdb19195c9cd1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160481b9092048216929185169160008051602061408c833981519152916130229160481b90613ede565b60405180910390a460028601805460ff8316600160481b0269ff00000000000000000019909116179055505050505050565b6001600160a01b03831661307a5760405162461bcd60e51b8152600401610bcf90613dd9565b6001600160a01b0382166130a05760405162461bcd60e51b8152600401610bcf90613e1e565b6130dd8160405180606001604052806026815260200161403e602691396001600160a01b03861660009081526001602052604090205491906127ea565b6001600160a01b03808516600090815260016020526040808220939093559084168152205461310c9082612824565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122dd9085815260200190565b601b805464ffffffffff1916905583156131e857601454601b805460ff80841661ffff1990921691909117610100620100008086048416919091029190911763ffff00001916600160201b80860484169290920263ff000000191617600160301b850483166301000000021764ff000000001916600160401b90940491909116029190911790555b821561326357601454601b805461010080840460ff90811661ffff199093169290921763010000008086048416929092021763ffff00001916600160281b85048316620100000263ff000000191617600160381b85048316919091021764ff000000001916600160481b90930416600160201b029190911790555b8215801561326f575083155b80156132b557506001600160a01b03821660009081526016602052604090205460ff16806132b557506001600160a01b03811660009081526016602052604090205460ff165b1561332e57601454601b805460ff80841661ffff1990921691909117610100620100008086048416919091029190911763ffff00001916600160201b80860484169290920263ff000000191617600160301b850483166301000000021764ff000000001916600160401b90940491909116029190911790555b601b5460ff600160201b82048116916301000000810482169162010000820481169161336291610100820481169116613ef5565b61336c9190613ef5565b6133769190613ef5565b6133809190613ef5565b601b805460ff928316600160281b90810265ff0000000000198316811793849055604080519186169386169390931781526101008404851660208201526201000084048516818401526301000000840485166060820152600160201b840485166080820152920490921660a082015290517f6c6977cb51242ec6e05aba0e2a29a5292ed1a8a5cffa3b87ff66395b7997d6d29181900360c00190a150505050565b600061342c30611573565b601b54909150479060009060029060ff600160281b8204811691613451911686613e8a565b61345b9190613eb7565b6134659190613eb7565b601b5490915060009060ff600160281b820481169161348d9163010000009091041686613e8a565b6134979190613eb7565b905060006134a58284613e77565b6134af9086613ecb565b90506134ba81613787565b60006134c68547613ecb565b601b5490915060009060ff630100000082048116916134e89160029116613f0e565b601b546134ff9190600160281b900460ff16613f30565b6135099190613f30565b601b5460ff91821692506000916002918491613526911686613e8a565b6135309190613eb7565b61353a9190613eb7565b601b5490915060009083906135589062010000900460ff1686613e8a565b6135629190613eb7565b601b54909150600090849061357f90610100900460ff1687613e8a565b6135899190613eb7565b90506000816135988486613e77565b6135a29190613e77565b6135ac9087613ecb565b600f549091506135c5906001600160a01b0316846138d9565b600e546135db906001600160a01b0316836138d9565b881561362d576135eb89856139f2565b60408051888152602081018690529081018a90527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b60115460405163a9059cbb60e01b81526001600160a01b03909116600482015260248101899052600090309063a9059cbb906044016020604051808303816000875af1158015613681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a59190613d68565b6007546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146136f3576040519150601f19603f3d011682016040523d82523d6000602084013e6136f8565b606091505b50909150508015613737576040518281527fa4049db804d87a845be4dd8b54ae7048131238fba985dd37234309ac8668d9699060200160405180910390a15b505050505050505050505050565b600061288383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127ea565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106137bc576137bc613f49565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138399190613f5f565b8160018151811061384c5761384c613f49565b6001600160a01b03928316602091820292909201015260065461387291309116846121c5565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906138ab908590600190869030904290600401613f7c565b600060405180830381600087803b1580156138c557600080fd5b505af1158015612d4e573d6000803e3d6000fd5b804710156139295760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610bcf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613976576040519150601f19603f3d011682016040523d82523d6000602084013e61397b565b606091505b50509050806118fe5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610bcf565b600654613a0a9030906001600160a01b0316846121c5565b600654600d5460405163f305d71960e01b81523060048201526024810185905260016044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015613a7a573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110ef9190613fed565b600060208083528351808285015260005b81811015613acc57858101830151858201604001528201613ab0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112c657600080fd5b60008060408385031215613b1557600080fd5b8235613b2081613aed565b946020939093013593505050565b600060208284031215613b4057600080fd5b5035919050565b600060208284031215613b5957600080fd5b813561288381613aed565b600080600060608486031215613b7957600080fd5b8335613b8481613aed565b92506020840135613b9481613aed565b929592945050506040919091013590565b80151581146112c657600080fd5b60008060408385031215613bc657600080fd5b8235613bd181613aed565b91506020830135613be181613ba5565b809150509250929050565b600080600060608486031215613c0157600080fd5b8335613c0c81613aed565b92506020840135613c1c81613aed565b91506040840135613c2c81613aed565b809150509250925092565b803560ff81168114613c4857600080fd5b919050565b600080600080600060a08688031215613c6557600080fd5b613c6e86613c37565b9450613c7c60208701613c37565b9350613c8a60408701613c37565b9250613c9860608701613c37565b9150613ca660808701613c37565b90509295509295909350565b60008060408385031215613cc557600080fd5b8235613cd081613aed565b91506020830135613be181613aed565b600181811c90821680613cf457607f821691505b602082108103613d1457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215613d6157600080fd5b5051919050565b600060208284031215613d7a57600080fd5b815161288381613ba5565b60208082526034908201527f427265776c6162733a204163636f756e7420697320616c7265616479207468656040820152732076616c7565206f6620276578636c756465642760601b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b9f57610b9f613e61565b8082028115828204841417610b9f57610b9f613e61565b634e487b7160e01b600052601260045260246000fd5b600082613ec657613ec6613ea1565b500490565b81810381811115610b9f57610b9f613e61565b68ffffffffffffffffff1991909116815260200190565b60ff8181168382160190811115610b9f57610b9f613e61565b600060ff831680613f2157613f21613ea1565b8060ff84160491505092915050565b60ff8281168282160390811115610b9f57610b9f613e61565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613f7157600080fd5b815161288381613aed565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613fcc5784516001600160a01b031683529383019391830191600101613fa7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561400257600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636500edc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122002c0e5d5dcef6b1e2b66decf9153d9a1dbea61b6237fcf4b5dca82dbeb864d9864736f6c6343000811003360806040523480156200001157600080fd5b5060408051808201825260198082527f427265776c6162735f4469766964656e645f547261636b6572000000000000006020808401829052845180860190955291845290830152908181600362000069838262000197565b50600462000078828262000197565b50505060006200008d620000ee60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050610e1060125550600060135562000263565b3390565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200011d57607f821691505b6020821081036200013e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200019257600081815260208120601f850160051c810160208610156200016d5750805b601f850160051c820191505b818110156200018e5782815560010162000179565b5050505b505050565b81516001600160401b03811115620001b357620001b3620000f2565b620001cb81620001c4845462000108565b8462000144565b602080601f831160018114620002035760008415620001ea5750858301515b600019600386901b1c1916600185901b1785556200018e565b600085815260208120601f198616915b82811015620002345788860151825594840194600190910190840162000213565b5085821015620002535787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611ce680620002736000396000f3fe6080604052600436106101fd5760003560e01c8063715018a61161010d578063a9059cbb116100a0578063bea9849e1161006f578063bea9849e146105c4578063dd62ed3e146105e4578063e30443bc1461062a578063f2fde38b1461064a578063f7c618c11461066a57600080fd5b8063a9059cbb14610538578063aafd847a14610558578063bc4c4b371461058e578063be10b614146105ae57600080fd5b806391b89fba116100dc57806391b89fba146104c357806395d89b41146104e3578063a457c2d7146104f8578063a8b9d2401461051857600080fd5b8063715018a61461045a57806385a6b3ae1461046f5780638aee8127146104855780638da5cb5b146104a557600080fd5b806323b872dd11610190578063395093511161015f57806339509351146103a95780634e7b827f146103c95780636a474002146103f95780636f2789ec1461040e57806370a082311461042457600080fd5b806323b872dd1461032d57806327ce01471461034d578063313ce5671461036d57806331e79db01461038957600080fd5b8063163c7cef116101cc578063163c7cef146102935780631694505e146102b357806318160ddd146102eb578063226cfa3d1461030057600080fd5b806303c833021461021157806306fdde0314610219578063095ea7b31461024457806309bbedde1461027457600080fd5b3661020c5761020a61068a565b005b600080fd5b61020a61068a565b34801561022557600080fd5b5061022e610750565b60405161023b9190611906565b60405180910390f35b34801561025057600080fd5b5061026461025f366004611969565b6107e2565b604051901515815260200161023b565b34801561028057600080fd5b50600c545b60405190815260200161023b565b34801561029f57600080fd5b5061020a6102ae366004611995565b6107f9565b3480156102bf57600080fd5b506009546102d3906001600160a01b031681565b6040516001600160a01b03909116815260200161023b565b3480156102f757600080fd5b50600254610285565b34801561030c57600080fd5b5061028561031b3660046119ae565b60116020526000908152604090205481565b34801561033957600080fd5b506102646103483660046119cb565b6108c5565b34801561035957600080fd5b506102856103683660046119ae565b61092e565b34801561037957600080fd5b506040516012815260200161023b565b34801561039557600080fd5b5061020a6103a43660046119ae565b61098a565b3480156103b557600080fd5b506102646103c4366004611969565b610ab1565b3480156103d557600080fd5b506102646103e43660046119ae565b60106020526000908152604090205460ff1681565b34801561040557600080fd5b5061020a610ae7565b34801561041a57600080fd5b5061028560125481565b34801561043057600080fd5b5061028561043f3660046119ae565b6001600160a01b031660009081526020819052604090205490565b34801561046657600080fd5b5061020a610b1d565b34801561047b57600080fd5b5061028560075481565b34801561049157600080fd5b5061020a6104a03660046119ae565b610b91565b3480156104b157600080fd5b506005546001600160a01b03166102d3565b3480156104cf57600080fd5b506102856104de3660046119ae565b610bc4565b3480156104ef57600080fd5b5061022e610bcf565b34801561050457600080fd5b50610264610513366004611969565b610bde565b34801561052457600080fd5b506102856105333660046119ae565b610c2d565b34801561054457600080fd5b50610264610553366004611969565b610c59565b34801561056457600080fd5b506102856105733660046119ae565b6001600160a01b03166000908152600b602052604090205490565b34801561059a57600080fd5b506102646105a9366004611a0c565b610c66565b3480156105ba57600080fd5b5061028560135481565b3480156105d057600080fd5b5061020a6105df3660046119ae565b610d14565b3480156105f057600080fd5b506102856105ff366004611a4a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561063657600080fd5b5061020a610645366004611969565b610d47565b34801561065657600080fd5b5061020a6106653660046119ae565b610eb1565b34801561067657600080fd5b506008546102d3906001600160a01b031681565b6005546001600160a01b031633146106bd5760405162461bcd60e51b81526004016106b490611a78565b60405180910390fd5b60006106c860025490565b116106d257600080fd5b341561074e576107056106e460025490565b6106f234600160801b610f9c565b6106fc9190611ac3565b60065490611025565b60065560405134815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a260075461074a9034611025565b6007555b565b60606003805461075f90611ae5565b80601f016020809104026020016040519081016040528092919081815260200182805461078b90611ae5565b80156107d85780601f106107ad576101008083540402835291602001916107d8565b820191906000526020600020905b8154815290600101906020018083116107bb57829003601f168201915b5050505050905090565b60006107ef338484611084565b5060015b92915050565b6005546001600160a01b031633146108235760405162461bcd60e51b81526004016106b490611a78565b80601354036108c05760405162461bcd60e51b815260206004820152605b60248201527f427265776c6162735f4469766964656e645f547261636b65723a206d696e696d60448201527f756d546f6b656e42616c616e6365466f724469766964656e647320616c72656160648201527f6479207468652076616c7565206f6620276e657756616c7565272e0000000000608482015260a4016106b4565b601355565b60006108d28484846111a8565b610924843361091f85604051806060016040528060288152602001611c64602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611208565b611084565b5060019392505050565b6001600160a01b0381166000908152600a602090815260408083205491839052822054600654600160801b926109809261097b92610975916109709190610f9c565b611242565b90611252565b611290565b6107f39190611ac3565b6005546001600160a01b031633146109b45760405162461bcd60e51b81526004016106b490611a78565b6001600160a01b03811660009081526010602052604090205460ff16156109da57600080fd5b6001600160a01b0381166000908152601060205260408120805460ff19166001179055610a089082906112a3565b60405163131836e760e21b8152600c60048201526001600160a01b0382166024820152733e4d3617dc6ef067fc82ad3dab35504140ab717e90634c60db9c9060440160006040518083038186803b158015610a6257600080fd5b505af4158015610a76573d6000803e3d6000fd5b50506040516001600160a01b03841692507fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b259150600090a250565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107ef91859061091f9086611025565b6005546001600160a01b03163314610b115760405162461bcd60e51b81526004016106b490611a78565b610b1a33611308565b50565b6005546001600160a01b03163314610b475760405162461bcd60e51b81526004016106b490611a78565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610bbb5760405162461bcd60e51b81526004016106b490611a78565b610b1a816113a9565b60006107f382610c2d565b60606004805461075f90611ae5565b60006107ef338461091f85604051806060016040528060258152602001611c8c602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611208565b6001600160a01b0381166000908152600b60205260408120546107f390610c538461092e565b906113f5565b60006107ef3384846111a8565b6005546000906001600160a01b03163314610c935760405162461bcd60e51b81526004016106b490611a78565b6000610c9e84611308565b90508015610d0a576001600160a01b038416600081815260116020526040908190204290555184151591907fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf09290610cf89085815260200190565b60405180910390a360019150506107f3565b5060009392505050565b6005546001600160a01b03163314610d3e5760405162461bcd60e51b81526004016106b490611a78565b610b1a81611437565b6005546001600160a01b03163314610d715760405162461bcd60e51b81526004016106b490611a78565b6001600160a01b03821660009081526010602052604090205460ff16610ead576013548110610e2257610da482826112a3565b604051632f0ad01760e21b8152600c60048201526001600160a01b038316602482015260448101829052733e4d3617dc6ef067fc82ad3dab35504140ab717e9063bc2b405c9060640160006040518083038186803b158015610e0557600080fd5b505af4158015610e19573d6000803e3d6000fd5b50505050610ea0565b610e2d8260006112a3565b60405163131836e760e21b8152600c60048201526001600160a01b0383166024820152733e4d3617dc6ef067fc82ad3dab35504140ab717e90634c60db9c9060440160006040518083038186803b158015610e8757600080fd5b505af4158015610e9b573d6000803e3d6000fd5b505050505b610eab826001610c66565b505b5050565b6005546001600160a01b03163314610edb5760405162461bcd60e51b81526004016106b490611a78565b6001600160a01b038116610f405760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b4565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600082600003610fae575060006107f3565b6000610fba8385611b1f565b905082610fc78583611ac3565b1461101e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106b4565b9392505050565b6000806110328385611b36565b90508381101561101e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106b4565b6001600160a01b0383166110e65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106b4565b6001600160a01b0382166111475760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106b4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60405162461bcd60e51b815260206004820152602f60248201527f427265776c6162735f4469766964656e645f547261636b65723a204e6f20747260448201526e185b9cd9995c9cc8185b1b1bddd959608a1b60648201526084016106b4565b6000818484111561122c5760405162461bcd60e51b81526004016106b49190611906565b5060006112398486611b49565b95945050505050565b600081818112156107f357600080fd5b60008061125f8385611b5c565b9050600083121580156112725750838112155b80611287575060008312801561128757508381125b61101e57600080fd5b60008082121561129f57600080fd5b5090565b6001600160a01b038216600090815260208190526040902054808211156112e25760006112d083836113f5565b90506112dc8482611483565b50610eab565b80821015610eab5760006112f682846113f5565b905061130284826114e7565b50505050565b60008061131483610c2d565b905080156113a0576001600160a01b0383166000908152600b602052604090205461133f9082611025565b6001600160a01b0384166000818152600b6020526040908190209290925590517fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d9061138e9084815260200190565b60405180910390a261101e838261152b565b50600092915050565b6005546001600160a01b031633146113d35760405162461bcd60e51b81526004016106b490611a78565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600061101e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611208565b6005546001600160a01b031633146114615760405162461bcd60e51b81526004016106b490611a78565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b61148d82826116ce565b6114c76114a861097083600654610f9c90919063ffffffff16565b6001600160a01b0384166000908152600a6020526040902054906117b9565b6001600160a01b039092166000908152600a602052604090209190915550565b6114f182826117f6565b6114c761150c61097083600654610f9c90919063ffffffff16565b6001600160a01b0384166000908152600a602052604090205490611252565b604080516002808252606082018352600092839291906020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bd9190611b84565b816000815181106115d0576115d0611ba1565b6001600160a01b03928316602091820292909201015260085482519116908290600190811061160157611601611ba1565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de959085906116479060009086908a904290600401611bb7565b6000604051808303818588803b15801561166057600080fd5b505af193505050508015611672575060015b6116be576001600160a01b0384166000908152600b602052604090205461169990846113f5565b6001600160a01b0385166000908152600b602052604081209190915591506107f39050565b829150506107f3565b5092915050565b6001600160a01b0382166117245760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106b4565b61173060008383610eab565b60025461173d9082611025565b6002556001600160a01b0382166000908152602081905260409020546117639082611025565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b6000806117c68385611c21565b9050600083121580156117d95750838113155b806112875750600083128015611287575083811361101e57600080fd5b6001600160a01b0382166118565760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016106b4565b61186282600083610eab565b61189f81604051806060016040528060228152602001611c42602291396001600160a01b0385166000908152602081905260409020549190611208565b6001600160a01b0383166000908152602081905260409020556002546118c590826113f5565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016117ad565b600060208083528351808285015260005b8181101561193357858101830151858201604001528201611917565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b1a57600080fd5b6000806040838503121561197c57600080fd5b823561198781611954565b946020939093013593505050565b6000602082840312156119a757600080fd5b5035919050565b6000602082840312156119c057600080fd5b813561101e81611954565b6000806000606084860312156119e057600080fd5b83356119eb81611954565b925060208401356119fb81611954565b929592945050506040919091013590565b60008060408385031215611a1f57600080fd5b8235611a2a81611954565b915060208301358015158114611a3f57600080fd5b809150509250929050565b60008060408385031215611a5d57600080fd5b8235611a6881611954565b91506020830135611a3f81611954565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082611ae057634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680611af957607f821691505b602082108103611b1957634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176107f3576107f3611aad565b808201808211156107f3576107f3611aad565b818103818111156107f3576107f3611aad565b8082018281126000831280158216821582161715611b7c57611b7c611aad565b505092915050565b600060208284031215611b9657600080fd5b815161101e81611954565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015611c015784516001600160a01b031683529383019391830191600101611bdc565b50506001600160a01b039690961660408501525050506060015292915050565b81810360008312801583831316838312821617156116c7576116c7611aad56fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220794ace93881b91e45ae3974c7478eb0e89875a605b20422aeb718d2199860ead64736f6c63430008110033