60a0604052600980546001600160a01b03191661dead17905573833589fcd6edb6e08f4c7c32d4f71b54bda0291360805261005261271061004c6a3063db5ac1d44d4a8000006005610742565b906107ce565b600a9081556a3063db5ac1d44d4a800000600b819055600c819055600d55600e819055600f819055601460108190556011829055606460125560138290558055601555601b80546001600160a01b0319908116738be12378c9b22983b83d3c977be707e73de6244917909155601c8054821672c386c1f08be2c9d78149edd62fc86ced0fd4bd179055601d805482167384844e25481fed0472c17422c6049be64cfa0af4179055601e8054821673ce8f2d2e3268e21b5cc86c9c7e03440505c3dc73179055601f8054909116733a4d247cfebcbb6cc9f4286947f5df909ac0cc65179055620493e0602055348015610148575f5ffd5b506040518060400160405280601681526020017f536b79706174682053656375726974792c20496e632e000000000000000000008152506040518060400160405280600481526020016324534b5960e01b81525081600390816101ab9190610d41565b5060046101b88282610d41565b5050505f6101ca61081560201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060405161022390610c9d565b604051809103905ff08015801561023c573d5f5f3e3d5ffd5b5060085f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505f734752ba5dbc23f44d87826276bf6fd6b1c372ad2490505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102db9190610dfb565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610326573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061034a9190610dfb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610394573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103b89190610dfb565b90506103c5816001610819565b600680546001600160a01b038481166001600160a01b03199283161790925560078054848416921691909117905560085460405163031e79db60e41b8152911660048201819052906331e79db0906024015f604051808303815f87803b15801561042d575f5ffd5b505af115801561043f573d5f5f3e3d5ffd5b505060085460405163031e79db60e41b81523060048201526001600160a01b0390911692506331e79db091506024015f604051808303815f87803b158015610485575f5ffd5b505af1158015610497573d5f5f3e3d5ffd5b50506008546001600160a01b031691506331e79db090506104c06005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f604051808303815f87803b1580156104fe575f5ffd5b505af1158015610510573d5f5f3e3d5ffd5b505060085460095460405163031e79db60e41b81526001600160a01b039182166004820152911692506331e79db091506024015f604051808303815f87803b15801561055a575f5ffd5b505af115801561056c573d5f5f3e3d5ffd5b505060085460405163031e79db60e41b81526001600160a01b03868116600483015290911692506331e79db091506024015f604051808303815f87803b1580156105b4575f5ffd5b505af11580156105c6573d5f5f3e3d5ffd5b505050506105e26105db6109db60201b60201c565b60016109ea565b601b546105f9906001600160a01b031660016109ea565b601f54610610906001600160a01b031660016109ea565b601c54610627906001600160a01b031660016109ea565b601d5461063e906001600160a01b031660016109ea565b601e54610655906001600160a01b031660016109ea565b6106603060016109ea565b600160225f6106776005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601b54821681526022909352818320805485166001908117909155601f54821684528284208054861682179055601c54821684528284208054861682179055601d54821684528284208054861682179055601e54909116835281832080548516821790553083529120805490921617905561073b61072a6005546001600160a01b031690565b6a3063db5ac1d44d4a800000610b29565b5050610eb3565b5f825f0361075157505f6107c8565b5f61075c8385610e35565b9050826107698583610e4c565b146107c55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6107c583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610c0560201b60201c565b3390565b6001600160a01b0382166108845760405162461bcd60e51b815260206004820152602c60248201527f534b593a205061697220616464726573732063616e6e6f74206265207468652060448201526b7a65726f206164647265737360a01b60648201526084016107bc565b6001600160a01b0382165f9081526024602052604090205481151560ff9091161515036109195760405162461bcd60e51b815260206004820152603d60248201527f534b593a204175746f6d61746564206d61726b6574206d616b6572207061697260448201527f20697320616c72656164792073657420746f20746861742076616c756500000060648201526084016107bc565b6001600160a01b0382165f908152602460205260409020805460ff191682158015919091179091556109a05760085460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db0906024015f604051808303815f87803b158015610989575f5ffd5b505af115801561099b573d5f5f3e3d5ffd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6005546001600160a01b031690565b6005546001600160a01b03163314610a445760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107bc565b6001600160a01b0382165f9081526021602052604090205481151560ff909116151503610acb5760405162461bcd60e51b815260206004820152602f60248201527f534b593a204163636f756e7420697320616c7265616479207468652076616c7560448201526e65206f6620276578636c756465642760881b60648201526084016107bc565b6001600160a01b0382165f81815260216020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216610b7f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107bc565b600254610b8c9082610c3f565b6002556001600160a01b0382165f90815260208190526040902054610bb19082610c3f565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b5f8183610c255760405162461bcd60e51b81526004016107bc9190610e6b565b505f610c318486610e4c565b95945050505050565b505050565b5f80610c4b8385610ea0565b9050838110156107c55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107bc565b6122ee806158cb83390190565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680610cd257607f821691505b602082108103610cf057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610c3a57805f5260205f20601f840160051c81016020851015610d1b5750805b601f840160051c820191505b81811015610d3a575f8155600101610d27565b5050505050565b81516001600160401b03811115610d5a57610d5a610caa565b610d6e81610d688454610cbe565b84610cf6565b6020601f821160018114610da0575f8315610d895750848201515b5f19600385901b1c1916600184901b178455610d3a565b5f84815260208120601f198516915b82811015610dcf5787850151825560209485019460019092019101610daf565b5084821015610dec57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610e0b575f5ffd5b81516001600160a01b03811681146107c5575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107c8576107c8610e21565b5f82610e6657634e487b7160e01b5f52601260045260245ffd5b500490565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b808201808211156107c8576107c8610e21565b6080516149eb610ee05f395f818161089801528181613c9901528181613d3801526141e901526149eb5ff3fe608060405260043610610419575f3560e01c80638da5cb5b1161021b578063c9567bf911610121578063e7841ec0116100af578063f2fde38b11610076578063f2fde38b14610ca9578063f34eb0b814610cc8578063fab7964a14610ce7578063ffb54a9914610cfc578063ffd7a79814610d1c57005b8063e7841ec014610c19578063e98030c714610c2d578063e99c9d0914610c4c578063ec29e0fe14610c6b578063f27fd25414610c8a57005b8063d568eaa9116100f3578063d568eaa914610b6e578063dd62ed3e14610b8d578063dff90b5b14610bd1578063e2f4560514610be5578063e588ec8514610bfa57005b8063c9567bf914610b07578063c9e79b6b14610b1b578063cbd6b6e614610b3a578063d077b48f14610b4f57005b8063a8b9d240116101a9578063b425bac311610170578063b425bac314610a5d578063b62496f514610a7c578063c024666814610aaa578063c04a894c14610ac9578063c492f04614610ae857005b8063a8b9d24014610991578063a9059cbb146109b0578063aa4bde28146109cf578063ad56c13c146109e4578063b128652914610a4857005b80639c1b8af5116101ed5780639c1b8af51461091f5780639fa9cba014610934578063a26579ad14610949578063a39e29cc1461095d578063a457c2d71461097257005b80638da5cb5b146108ba57806395d89b41146108d7578063961aa4a6146108eb5780639a7a23d61461090057005b80634144d9e4116103205780636fe5ec31116102ae57806385141a771161027557806385141a7714610815578063871c128d1461083457806388bdd9be1461085357806388e765ff1461087257806389a302711461088757005b80636fe5ec311461077b578063700bb1911461079a57806370a08231146107b9578063715018a6146107ed578063751039fc1461080157005b80635d098b38116102f25780635d098b38146106f557806364b0f6531461071457806365b8dbc01461072857806366d602ae146107475780636843cd841461075c57005b80634144d9e41461066c57806349bd5a5e1461068b5780634e71d92d146106aa5780634fbee193146106be57005b80632063d583116103a85780632c1f52161161036f5780632c1f5216146105e057806330bb4cff146105ff578063313ce5671461061357806331e79db01461062e578063395093511461064d57005b80632063d5831461055a57806320800a001461056f57806323b872dd1461058357806327a14fc2146105a2578063296f0a0c146105c157005b80630c599134116103ec5780630c599134146104b25780631694505e146104e957806318160ddd146105085780631f1105001461051c5780631f53ac021461053b57005b806305e6e6fa1461041b57806306fdde0314610443578063095ea7b3146104645780630a3d5b5514610493575b005b348015610426575f5ffd5b5061043060125481565b6040519081526020015b60405180910390f35b34801561044e575f5ffd5b50610457610d3b565b60405161043a9190614279565b34801561046f575f5ffd5b5061048361047e3660046142d2565b610dcb565b604051901515815260200161043a565b34801561049e575f5ffd5b506104196104ad366004614328565b610de1565b3480156104bd575f5ffd5b50601c546104d1906001600160a01b031681565b6040516001600160a01b03909116815260200161043a565b3480156104f4575f5ffd5b506006546104d1906001600160a01b031681565b348015610513575f5ffd5b50600254610430565b348015610527575f5ffd5b50610419610536366004614328565b610e73565b348015610546575f5ffd5b50610419610555366004614405565b610ef7565b348015610565575f5ffd5b5061043060155481565b34801561057a575f5ffd5b50610419610fea565b34801561058e575f5ffd5b5061048361059d366004614420565b61105e565b3480156105ad575f5ffd5b506104196105bc36600461445e565b6110c5565b3480156105cc575f5ffd5b506104196105db366004614405565b611189565b3480156105eb575f5ffd5b506008546104d1906001600160a01b031681565b34801561060a575f5ffd5b50610430611282565b34801561061e575f5ffd5b506040516012815260200161043a565b348015610639575f5ffd5b50610419610648366004614405565b6112f2565b348015610658575f5ffd5b506104836106673660046142d2565b61137a565b348015610677575f5ffd5b50601b546104d1906001600160a01b031681565b348015610696575f5ffd5b506007546104d1906001600160a01b031681565b3480156106b5575f5ffd5b506104196113af565b3480156106c9575f5ffd5b506104836106d8366004614405565b6001600160a01b03165f9081526021602052604090205460ff1690565b348015610700575f5ffd5b5061041961070f366004614405565b611423565b34801561071f575f5ffd5b5061043061151c565b348015610733575f5ffd5b50610419610742366004614405565b611563565b348015610752575f5ffd5b50610430600c5481565b348015610767575f5ffd5b50610430610776366004614405565b6117c8565b348015610786575f5ffd5b50610419610795366004614475565b611835565b3480156107a5575f5ffd5b506104196107b436600461445e565b611938565b3480156107c4575f5ffd5b506104306107d3366004614405565b6001600160a01b03165f9081526020819052604090205490565b3480156107f8575f5ffd5b50610419611a05565b34801561080c575f5ffd5b50610419611a78565b348015610820575f5ffd5b506009546104d1906001600160a01b031681565b34801561083f575f5ffd5b5061041961084e36600461445e565b611abd565b34801561085e575f5ffd5b5061041961086d366004614405565b611c0c565b34801561087d575f5ffd5b50610430600b5481565b348015610892575f5ffd5b506104d17f000000000000000000000000000000000000000000000000000000000000000081565b3480156108c5575f5ffd5b506005546001600160a01b03166104d1565b3480156108e2575f5ffd5b50610457611f7d565b3480156108f6575f5ffd5b5061043060115481565b34801561090b575f5ffd5b5061041961091a3660046144ac565b611f8c565b34801561092a575f5ffd5b5061043060205481565b34801561093f575f5ffd5b5061043060145481565b348015610954575f5ffd5b5061043061205b565b348015610968575f5ffd5b5061043060105481565b34801561097d575f5ffd5b5061048361098c3660046142d2565b6120a2565b34801561099c575f5ffd5b506104306109ab366004614405565b6120ef565b3480156109bb575f5ffd5b506104836109ca3660046142d2565b612121565b3480156109da575f5ffd5b50610430600d5481565b3480156109ef575f5ffd5b50610a036109fe366004614405565b61212d565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a084015260c083015260e08201526101000161043a565b348015610a53575f5ffd5b50610430600e5481565b348015610a68575f5ffd5b50601f546104d1906001600160a01b031681565b348015610a87575f5ffd5b50610483610a96366004614405565b60246020525f908152604090205460ff1681565b348015610ab5575f5ffd5b50610419610ac43660046144ac565b6121c5565b348015610ad4575f5ffd5b50610419610ae3366004614328565b6122d4565b348015610af3575f5ffd5b50610419610b023660046144d8565b612415565b348015610b12575f5ffd5b506104196124e4565b348015610b26575f5ffd5b50610419610b3536600461445e565b6125c8565b348015610b45575f5ffd5b50610430600f5481565b348015610b5a575f5ffd5b50610419610b69366004614405565b61260a565b348015610b79575f5ffd5b50610419610b8836600461455a565b61270d565b348015610b98575f5ffd5b50610430610ba7366004614475565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610bdc575f5ffd5b506104196127b2565b348015610bf0575f5ffd5b50610430600a5481565b348015610c05575f5ffd5b50601d546104d1906001600160a01b031681565b348015610c24575f5ffd5b506104306127e6565b348015610c38575f5ffd5b50610419610c4736600461445e565b61282d565b348015610c57575f5ffd5b50610419610c6636600461445e565b612888565b348015610c76575f5ffd5b50610419610c85366004614405565b612940565b348015610c95575f5ffd5b50610a03610ca436600461445e565b61298c565b348015610cb4575f5ffd5b50610419610cc3366004614405565b6129cd565b348015610cd3575f5ffd5b50610419610ce236600461445e565b612ab7565b348015610cf2575f5ffd5b5061043060135481565b348015610d07575f5ffd5b5060075461048390600160a81b900460ff1681565b348015610d27575f5ffd5b50610419610d3636600461455a565b612b68565b606060038054610d4a90614589565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7690614589565b8015610dc15780601f10610d9857610100808354040283529160200191610dc1565b820191905f5260205f20905b815481529060010190602001808311610da457829003601f168201915b5050505050905090565b5f610dd7338484612c07565b5060015b92915050565b6005546001600160a01b03163314610e145760405162461bcd60e51b8152600401610e0b906145c1565b60405180910390fd5b5f5b8251811015610e6e578160225f858481518110610e3557610e356145f6565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610e16565b505050565b6005546001600160a01b03163314610e9d5760405162461bcd60e51b8152600401610e0b906145c1565b5f5b8251811015610e6e578160215f858481518110610ebe57610ebe6145f6565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610e9f565b6005546001600160a01b03163314610f215760405162461bcd60e51b8152600401610e0b906145c1565b6001600160a01b038116610f925760405162461bcd60e51b815260206004820152603260248201527f534b593a204465762077616c6c657420616464726573732063616e6e6f7420626044820152716520746865207a65726f206164647265737360701b6064820152608401610e0b565b601f80546001600160a01b0319166001600160a01b0392831690811782555f908152602160209081526040808320805460ff199081166001908117909255945490951683526022909152902080549091169091179055565b6005546001600160a01b031633146110145760405162461bcd60e51b8152600401610e0b906145c1565b6040515f90339047908381818185875af1925050503d805f8114611053576040519150601f19603f3d011682016040523d82523d5f602084013e611058565b606091505b50505050565b5f61106a848484612d2b565b6110bb84336110b685604051806060016040528060288152602001614969602891396001600160a01b038a165f90815260016020908152604080832033845290915290205491906134d1565b612c07565b5060019392505050565b6005546001600160a01b031633146110ef5760405162461bcd60e51b8152600401610e0b906145c1565b61110f6103e8611109600161110360025490565b90613509565b9061358e565b8110156111845760405162461bcd60e51b815260206004820152603960248201527f4d61782077616c6c657420616d6f756e742063616e6e6f74206265206c6f776560448201527f72207468616e20302e312520746f74616c20737570706c792e000000000000006064820152608401610e0b565b600d55565b6005546001600160a01b031633146111b35760405162461bcd60e51b8152600401610e0b906145c1565b6001600160a01b03811661122a5760405162461bcd60e51b815260206004820152603860248201527f534b593a204c69717569646974792077616c6c657420616464726573732063616044820152776e6e6f7420626520746865207a65726f206164647265737360401b6064820152608401610e0b565b601e80546001600160a01b0319166001600160a01b0392831690811782555f908152602160209081526040808320805460ff199081166001908117909255945490951683526022909152902080549091169091179055565b600854604080516342d359d760e11b815290515f926001600160a01b0316916385a6b3ae9160048083019260209291908290030181865afa1580156112c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ed919061460a565b905090565b6005546001600160a01b0316331461131c5760405162461bcd60e51b8152600401610e0b906145c1565b60085460405163031e79db60e41b81526001600160a01b038381166004830152909116906331e79db0906024015b5f604051808303815f87803b158015611361575f5ffd5b505af1158015611373573d5f5f3e3d5ffd5b5050505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610dd79185906110b690866135cf565b60085460405163bc4c4b3760e01b81523360048201525f60248201526001600160a01b039091169063bc4c4b37906044016020604051808303815f875af11580156113fc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114209190614621565b50565b6005546001600160a01b0316331461144d5760405162461bcd60e51b8152600401610e0b906145c1565b6001600160a01b0381166114c45760405162461bcd60e51b815260206004820152603860248201527f534b593a204d61726b6574696e672077616c6c657420616464726573732063616044820152776e6e6f7420626520746865207a65726f206164647265737360401b6064820152608401610e0b565b601b80546001600160a01b0319166001600160a01b0392831690811782555f908152602160209081526040808320805460ff199081166001908117909255945490951683526022909152902080549091169091179055565b600854604080516304ddf6ef60e11b815290515f926001600160a01b0316916309bbedde9160048083019260209291908290030181865afa1580156112c9573d5f5f3e3d5ffd5b6005546001600160a01b0316331461158d5760405162461bcd60e51b8152600401610e0b906145c1565b6006546001600160a01b03908116908216036115fc5760405162461bcd60e51b815260206004820152602860248201527f534b593a2054686520726f7574657220616c7265616479206861732074686174604482015267206164647265737360c01b6064820152608401610e0b565b6006546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e905f90a3600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290515f929163c45a01559160048083019260209291908290030181865afa15801561168f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b3919061463c565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611712573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611736919061463c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611780573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a4919061463c565b600780546001600160a01b0319166001600160a01b03929092169190911790555050565b6008546040516370a0823160e01b81526001600160a01b0383811660048301525f9216906370a08231906024015b602060405180830381865afa158015611811573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ddb919061460a565b6005546001600160a01b0316331461185f5760405162461bcd60e51b8152600401610e0b906145c1565b6001600160a01b0382166118855760405162461bcd60e51b8152600401610e0b90614657565b6001600160a01b0381166118ab5760405162461bcd60e51b8152600401610e0b90614657565b601c80546001600160a01b039384166001600160a01b0319918216811783555f908152602160208181526040808420805460ff19908116600190811790925596548916855260228084528286208054891683179055601d8054998b169990971689178755978552928252808420805487168417905593549096168252939094529092208054909216179055565b6008546040516001624d3b8760e01b03198152600481018390525f91829182916001600160a01b03169063ffb2c479906024016060604051808303815f875af1158015611987573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119ab919061469a565b604080518481526020810184905290810182905260608101889052929550909350915032905f907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a350505050565b6005546001600160a01b03163314611a2f5760405162461bcd60e51b8152600401610e0b906145c1565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314611aa25760405162461bcd60e51b8152600401610e0b906145c1565b6a3063db5ac1d44d4a800000600b819055600c819055600d55565b6005546001600160a01b03163314611ae75760405162461bcd60e51b8152600401610e0b906145c1565b62030d408110158015611afd57506207a1208111155b611b6f5760405162461bcd60e51b815260206004820152603960248201527f534b593a20676173466f7250726f63657373696e67206d75737420626520626560448201527f747765656e203230302c30303020616e64203530302c303030000000000000006064820152608401610e0b565b6020548103611bda5760405162461bcd60e51b815260206004820152603160248201527f534b593a2043616e6e6f742075706461746520676173466f7250726f63657373604482015270696e6720746f2073616d652076616c756560781b6064820152608401610e0b565b60205460405182907f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db7905f90a3602055565b6005546001600160a01b03163314611c365760405162461bcd60e51b8152600401610e0b906145c1565b6008546001600160a01b0390811690821603611caf5760405162461bcd60e51b815260206004820152603260248201527f534b593a20546865206469766964656e6420747261636b657220616c7265616460448201527179206861732074686174206164647265737360701b6064820152608401610e0b565b5f819050306001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cf9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d1d919061463c565b6001600160a01b031614611da75760405162461bcd60e51b815260206004820152604560248201527f534b593a20546865206e6577206469766964656e6420747261636b6572206d7560448201527f7374206265206f776e65642062792074686520534b5920746f6b656e20636f6e6064820152641d1c9858dd60da1b608482015260a401610e0b565b60405163031e79db60e41b81526001600160a01b03821660048201819052906331e79db0906024015f604051808303815f87803b158015611de6575f5ffd5b505af1158015611df8573d5f5f3e3d5ffd5b505060405163031e79db60e41b81523060048201526001600160a01b03841692506331e79db091506024015f604051808303815f87803b158015611e3a575f5ffd5b505af1158015611e4c573d5f5f3e3d5ffd5b50505050806001600160a01b03166331e79db0611e716005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024015f604051808303815f87803b158015611eaf575f5ffd5b505af1158015611ec1573d5f5f3e3d5ffd5b505060065460405163031e79db60e41b81526001600160a01b03918216600482015290841692506331e79db091506024015f604051808303815f87803b158015611f09575f5ffd5b505af1158015611f1b573d5f5f3e3d5ffd5b50506008546040516001600160a01b03918216935090851691507f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a8905f90a3600880546001600160a01b0319166001600160a01b039290921691909117905550565b606060048054610d4a90614589565b6005546001600160a01b03163314611fb65760405162461bcd60e51b8152600401610e0b906145c1565b6007546001600160a01b039081169083160361204d5760405162461bcd60e51b815260206004820152604a60248201527f736b793a205468652050616e63616b655377617020706169722063616e6e6f7460448201527f2062652072656d6f7665642066726f6d206175746f6d617465644d61726b65746064820152694d616b6572506169727360b01b608482015260a401610e0b565b612057828261362d565b5050565b60085460408051631bc9e27b60e21b815290515f926001600160a01b031691636f2789ec9160048083019260209291908290030181865afa1580156112c9573d5f5f3e3d5ffd5b5f610dd733846110b68560405180606001604052806025815260200161499160259139335f9081526001602090815260408083206001600160a01b038d16845290915290205491906134d1565b6008546040516302a2e74960e61b81526001600160a01b0383811660048301525f92169063a8b9d240906024016117f6565b5f610dd7338484612d2b565b60085460405163fbcbc0f160e01b81526001600160a01b0383811660048301525f92839283928392839283928392839291169063fbcbc0f1906024015b61010060405180830381865afa158015612186573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121aa91906146c5565b97509750975097509750975097509750919395975091939597565b6005546001600160a01b031633146121ef5760405162461bcd60e51b8152600401610e0b906145c1565b6001600160a01b0382165f9081526021602052604090205481151560ff9091161515036122765760405162461bcd60e51b815260206004820152602f60248201527f534b593a204163636f756e7420697320616c7265616479207468652076616c7560448201526e65206f6620276578636c756465642760881b6064820152608401610e0b565b6001600160a01b0382165f81815260216020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146122fe5760405162461bcd60e51b8152600401610e0b906145c1565b5f5b8251811015610e6e5760075483516001600160a01b039091169084908390811061232c5761232c6145f6565b60200260200101516001600160a01b0316141580156123765750306001600160a01b0316838281518110612362576123626145f6565b60200260200101516001600160a01b031614155b80156123b4575060065483516001600160a01b03909116908490839081106123a0576123a06145f6565b60200260200101516001600160a01b031614155b1561240d578160235f8584815181106123cf576123cf6145f6565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b600101612300565b6005546001600160a01b0316331461243f5760405162461bcd60e51b8152600401610e0b906145c1565b5f5b828110156124a3578160215f86868581811061245f5761245f6145f6565b90506020020160208101906124749190614405565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101612441565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b358383836040516124d79392919061474d565b60405180910390a1505050565b6005546001600160a01b0316331461250e5760405162461bcd60e51b8152600401610e0b906145c1565b600754600160a81b900460ff16156125685760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610e0b565b6a3063db5ac1d44d4a800000600b819055600c819055612591906103e890611109906005613509565b600d556125b06127106111096a3063db5ac1d44d4a8000006005613509565b600a556007805460ff60a81b1916600160a81b179055565b6005546001600160a01b031633146125f25760405162461bcd60e51b8152600401610e0b906145c1565b61260481670de0b6b3a76400006147b9565b600a5550565b6005546001600160a01b031633146126345760405162461bcd60e51b8152600401610e0b906145c1565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015612678573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061269c919061460a565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303815f875af11580156126e9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e6e9190614621565b6005546001600160a01b031633146127375760405162461bcd60e51b8152600401610e0b906145c1565b61012c6127508261274a858189896135cf565b906135cf565b111561279e5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203330250000006044820152606401610e0b565b600e93909355600f91909155601055601155565b6005546001600160a01b031633146127dc5760405162461bcd60e51b8152600401610e0b906145c1565b47611420816137ef565b6008546040805163039e107b60e61b815290515f926001600160a01b03169163e7841ec09160048083019260209291908290030181865afa1580156112c9573d5f5f3e3d5ffd5b6005546001600160a01b031633146128575760405162461bcd60e51b8152600401610e0b906145c1565b60085460405163e98030c760e01b8152600481018390526001600160a01b039091169063e98030c79060240161134a565b6005546001600160a01b031633146128b25760405162461bcd60e51b8152600401610e0b906145c1565b6128c66103e8611109600161110360025490565b81101561293b5760405162461bcd60e51b815260206004820152603760248201527f4d61782073656c6c20616d6f756e742063616e6e6f74206265206c6f7765722060448201527f7468616e20302e312520746f74616c20737570706c792e0000000000000000006064820152608401610e0b565b600c55565b6005546001600160a01b0316331461296a5760405162461bcd60e51b8152600401610e0b906145c1565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b600854604051635183d6fd60e01b8152600481018390525f9182918291829182918291829182916001600160a01b0390911690635183d6fd9060240161216a565b6005546001600160a01b031633146129f75760405162461bcd60e51b8152600401610e0b906145c1565b6001600160a01b038116612a5c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e0b565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314612ae15760405162461bcd60e51b8152600401610e0b906145c1565b612af56103e8611109600161110360025490565b811015612b635760405162461bcd60e51b815260206004820152603660248201527f4d61782062757920616d6f756e742063616e6e6f74206265206c6f77657220746044820152753430b71018171892903a37ba30b61039bab838363c9760511b6064820152608401610e0b565b600b55565b6005546001600160a01b03163314612b925760405162461bcd60e51b8152600401610e0b906145c1565b61012c612ba58261274a858189896135cf565b1115612bf35760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b6565702053454c4c2074617865732062656c6f772033302500006044820152606401610e0b565b601293909355601391909155601455601555565b6001600160a01b038316612c695760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e0b565b6001600160a01b038216612cca5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e0b565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316612d515760405162461bcd60e51b8152600401610e0b906147d0565b6001600160a01b038216612d775760405162461bcd60e51b8152600401610e0b90614815565b5f818103612d8a5761105884845f61386e565b6005546001600160a01b03858116911614801590612db657506005546001600160a01b03848116911614155b8015612dcc5750600754600160a01b900460ff16155b156130db576001600160a01b0384165f9081526023602052604090205460ff16158015612e1157506001600160a01b0383165f9081526023602052604090205460ff16155b612e465760405162461bcd60e51b8152600401610e0b906020808252600490820152632137ba1760e11b604082015260600190565b600754600160a81b900460ff16612ee0576001600160a01b0384165f9081526021602052604090205460ff1680612e9457506001600160a01b0383165f9081526021602052604090205460ff165b612ee05760405162461bcd60e51b815260206004820152601b60248201527f54726164696e67206973206e6f7420616c6c6f776564207965742e00000000006044820152606401610e0b565b6007546001600160a01b038581169116148015612f0b57506006546001600160a01b03848116911614155b8015612f2f57506001600160a01b0383165f9081526022602052604090205460ff16155b1561301e57600b54821115612f985760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610e0b565b600d5482612fba856001600160a01b03165f9081526020819052604090205490565b612fc49190614858565b111561301e5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610e0b565b6007546001600160a01b03848116911614801561304957506006546001600160a01b03858116911614155b801561306d57506001600160a01b0384165f9081526022602052604090205460ff16155b156130db57600c548211156130d75760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610e0b565b5060015b305f90815260208190526040902054600a54811080159081906131085750600754600160a01b900460ff16155b801561312c57506001600160a01b0386165f9081526024602052604090205460ff16155b801561314657506005546001600160a01b03878116911614155b801561316057506005546001600160a01b03868116911614155b156131f8576007805460ff60a01b1916600160a01b179055601a546019546018545f9161319e918491611109916131979190614858565b8790613509565b90506131a981613974565b5f6131c3836111096017548861350990919063ffffffff16565b90506131ce81613bf5565b305f908152602081905260409020546131e681613c79565b50506007805460ff60a01b1916905550505b6007546001600160a01b0387165f9081526021602052604090205460ff600160a01b90920482161591168061324457506001600160a01b0386165f9081526021602052604090205460ff165b1561324c57505f5b6007546001600160a01b0388811691161480159061327857506007546001600160a01b03878116911614155b1561328057505f5b80156132de57831561329957613294613e3c565b6132a1565b6132a1613e73565b5f6132bd6103e8611109601a548961350990919063ffffffff16565b90506132c98682613ea5565b955080156132dc576132dc88308361386e565b505b6132e987878761386e565b6008546001600160a01b031663e30443bc88613319816001600160a01b03165f9081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b15801561335c575f5ffd5b505af192505050801561336d575060015b506008546001600160a01b031663e30443bc8761339e816001600160a01b03165f9081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b1580156133e1575f5ffd5b505af19250505080156133f2575060015b50600754600160a01b900460ff166134c8576020546008546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c479906024016060604051808303815f875af1925050508015613470575060408051601f3d908101601f1916820190925261346d9181019061469a565b60015b156134c65760408051848152602081018490529081018290526060810185905232906001907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a35050505b505b50505050505050565b5f81848411156134f45760405162461bcd60e51b8152600401610e0b9190614279565b505f613500848661486b565b95945050505050565b5f825f0361351857505f610ddb565b5f61352383856147b9565b905082613530858361487e565b146135875760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e0b565b9392505050565b5f61358783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ee6565b5f806135db8385614858565b9050838110156135875760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610e0b565b6001600160a01b0382166136985760405162461bcd60e51b815260206004820152602c60248201527f534b593a205061697220616464726573732063616e6e6f74206265207468652060448201526b7a65726f206164647265737360a01b6064820152608401610e0b565b6001600160a01b0382165f9081526024602052604090205481151560ff90911615150361372d5760405162461bcd60e51b815260206004820152603d60248201527f534b593a204175746f6d61746564206d61726b6574206d616b6572207061697260448201527f20697320616c72656164792073657420746f20746861742076616c75650000006064820152608401610e0b565b6001600160a01b0382165f908152602460205260409020805460ff191682158015919091179091556137b45760085460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db0906024015f604051808303815f87803b15801561379d575f5ffd5b505af11580156137af573d5f5f3e3d5ffd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b601b546001600160a01b03166108fc61380983600261358e565b6040518115909202915f818181858888f1935050505015801561382e573d5f5f3e3d5ffd5b50601f546001600160a01b03166108fc61384983600261358e565b6040518115909202915f818181858888f19350505050158015612057573d5f5f3e3d5ffd5b6001600160a01b0383166138945760405162461bcd60e51b8152600401610e0b906147d0565b6001600160a01b0382166138ba5760405162461bcd60e51b8152600401610e0b90614815565b6138f681604051806060016040528060268152602001614943602691396001600160a01b0386165f9081526020819052604090205491906134d1565b6001600160a01b038085165f90815260208190526040808220939093559084168152205461392490826135cf565b6001600160a01b038381165f818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612d1e565b4761397e82613f12565b5f6139894783613ea5565b601a5490915015610e6e575f6019546018546139a59190614858565b826018546139b391906147b9565b6139bd919061487e565b90505f6139ca828461486b565b90508115613b47575f6139de60028461487e565b90505f6139ec60028361487e565b601b546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f8114613a3b576040519150601f19603f3d011682016040523d82523d5f602084013e613a40565b606091505b5050905080613a615760405162461bcd60e51b8152600401610e0b9061489d565b601c546040515f916001600160a01b03169084908381818185875af1925050503d805f8114613aab576040519150601f19603f3d011682016040523d82523d5f602084013e613ab0565b606091505b5050905080613ad15760405162461bcd60e51b8152600401610e0b9061489d565b601d546040515f916001600160a01b03169085908381818185875af1925050503d805f8114613b1b576040519150601f19603f3d011682016040523d82523d5f602084013e613b20565b606091505b5050905080613b415760405162461bcd60e51b8152600401610e0b9061489d565b50505050505b801561137357601f546040515f916001600160a01b03169083908381818185875af1925050503d805f8114613b97576040519150601f19603f3d011682016040523d82523d5f602084013e613b9c565b606091505b5050905080613bed5760405162461bcd60e51b815260206004820152601a60248201527f4465762077616c6c6574207472616e73666572206661696c65640000000000006044820152606401610e0b565b505050505050565b5f613c0182600261358e565b90505f613c0e8383613ea5565b905047613c1a83613f12565b5f613c254783613ea5565b9050613c31838261405a565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b613c8281614104565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015613ce6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d0a919061460a565b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529192505f917f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af1158015613d80573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613da49190614621565b90508015610e6e57600854604051635fb1cc4560e01b8152600481018490526001600160a01b0390911690635fb1cc45906024015f604051808303815f87803b158015613def575f5ffd5b505af1158015613e01573d5f5f3e3d5ffd5b505060408051868152602081018690527f80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc393500190506124d7565b6012546016819055601354601781905560145460188190556015546019819055613e6e93909261274a929183916135cf565b601a55565b600e546016819055600f54601781905560105460188190556011546019819055613e6e93909261274a929183916135cf565b5f61358783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134d1565b5f8183613f065760405162461bcd60e51b8152600401610e0b9190614279565b505f613500848661487e565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110613f4557613f456145f6565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613f9c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fc0919061463c565b81600181518110613fd357613fd36145f6565b6001600160a01b039283166020918202929092010152600654613ff99130911684612c07565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906140319085905f908690309042906004016148d2565b5f604051808303815f87803b158015614048575f5ffd5b505af1158015613bed573d5f5f3e3d5ffd5b6006546140729030906001600160a01b031684612c07565b600654601e5460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156140df573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611373919061469a565b604080516003808252608082019092525f916020820160608036833701905050905030815f81518110614139576141396145f6565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015614190573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141b4919061463c565b816001815181106141c7576141c76145f6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160028151811061421b5761421b6145f6565b6001600160a01b0392831660209182029290920101526006546142419130911684612c07565b600654604051635c11d79560e01b81526001600160a01b0390911690635c11d795906140319085905f908690309042906004016148d2565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611420575f5ffd5b80356142cd816142ae565b919050565b5f5f604083850312156142e3575f5ffd5b82356142ee816142ae565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b8015158114611420575f5ffd5b80356142cd81614310565b5f5f60408385031215614339575f5ffd5b823567ffffffffffffffff81111561434f575f5ffd5b8301601f8101851361435f575f5ffd5b803567ffffffffffffffff811115614379576143796142fc565b8060051b604051601f19603f830116810181811067ffffffffffffffff821117156143a6576143a66142fc565b6040529182526020818401810192908101888411156143c3575f5ffd5b6020850194505b838510156143e9576143db856142c2565b8152602094850194016143ca565b5094506143fc925050506020840161431d565b90509250929050565b5f60208284031215614415575f5ffd5b8135613587816142ae565b5f5f5f60608486031215614432575f5ffd5b833561443d816142ae565b9250602084013561444d816142ae565b929592945050506040919091013590565b5f6020828403121561446e575f5ffd5b5035919050565b5f5f60408385031215614486575f5ffd5b8235614491816142ae565b915060208301356144a1816142ae565b809150509250929050565b5f5f604083850312156144bd575f5ffd5b82356144c8816142ae565b915060208301356144a181614310565b5f5f5f604084860312156144ea575f5ffd5b833567ffffffffffffffff811115614500575f5ffd5b8401601f81018613614510575f5ffd5b803567ffffffffffffffff811115614526575f5ffd5b8660208260051b840101111561453a575f5ffd5b60209182019450925084013561454f81614310565b809150509250925092565b5f5f5f5f6080858703121561456d575f5ffd5b5050823594602084013594506040840135936060013592509050565b600181811c9082168061459d57607f821691505b6020821081036145bb57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561461a575f5ffd5b5051919050565b5f60208284031215614631575f5ffd5b815161358781614310565b5f6020828403121561464c575f5ffd5b8151613587816142ae565b60208082526023908201527f6d61726b6574696e6757616c6c657420616464726573732063616e6e6f74206260408201526206520360ec1b606082015260800190565b5f5f5f606084860312156146ac575f5ffd5b5050815160208301516040909301519094929350919050565b5f5f5f5f5f5f5f5f610100898b0312156146dd575f5ffd5b88516146e8816142ae565b809850505f60208a01519050809750505f60408a01519050809650505f60608a01519050809550505f60808a01519050809450505f60a08a01519050809350505f60c08a01519050809250505f60e08a01519050809150509295985092959890939650565b604080825281018390525f8460608301825b8681101561478f578235614772816142ae565b6001600160a01b031682526020928301929091019060010161475f565b5080925050508215156020830152949350505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610ddb57610ddb6147a5565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80820180821115610ddb57610ddb6147a5565b81810381811115610ddb57610ddb6147a5565b5f8261489857634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252818101527f4d61726b6574696e672077616c6c6574207472616e73666572206661696c6564604082015260600190565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156149225783516001600160a01b03168352602093840193909201916001016148fb565b50506001600160a01b03959095166060840152505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f1bee16367026f3750edd017d7d62e014209639b62d2f09f1232a4b984b7e84e64736f6c634300081c003360a060405273833589fcd6edb6e08f4c7c32d4f71b54bda02913608052348015610027575f5ffd5b506040518060400160405280601381526020017f534b595f4469766964656e5f547261636b6572000000000000000000000000008152506040518060400160405280601481526020017f534b595f4469766964656e645f547261636b6572000000000000000000000000815250818181600390816100a591906101c8565b5060046100b282826101c8565b5050505f6100c461012c60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050610e106011555069021e19e0c9bab2400000601255610282565b3390565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061015857607f821691505b60208210810361017657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c357805f5260205f20601f840160051c810160208510156101a15750805b601f840160051c820191505b818110156101c0575f81556001016101ad565b50505b505050565b81516001600160401b038111156101e1576101e1610130565b6101f5816101ef8454610144565b8461017c565b6020601f821160018114610227575f83156102105750848201515b5f19600385901b1c1916600184901b1784556101c0565b5f84815260208120601f198516915b828110156102565787850151825560209485019460019092019101610236565b508482101561027357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805161204d6102a15f395f818161040f0152611910015261204d5ff3fe608060405234801561000f575f5ffd5b5060043610610234575f3560e01c806383435e5911610135578063bc4c4b37116100b4578063e7841ec011610079578063e7841ec014610550578063e98030c714610558578063f2fde38b1461056b578063fbcbc0f11461057e578063ffb2c47914610591575f5ffd5b8063bc4c4b37146104d6578063be10b614146104e9578063dd62ed3e146104f2578063e229e26d1461052a578063e30443bc1461053d575f5ffd5b806395d89b41116100fa57806395d89b411461046d578063a457c2d714610475578063a8b9d24014610488578063a9059cbb1461049b578063aafd847a146104ae575f5ffd5b806383435e59146103ee57806385a6b3ae1461040157806389a302711461040a5780638da5cb5b1461044957806391b89fba1461045a575f5ffd5b8063313ce567116101c15780635fb1cc45116101865780635fb1cc451461039a5780636a474002146103ad5780636f2789ec146103b557806370a08231146103be578063715018a6146103e6575f5ffd5b8063313ce567146102eb57806331e79db0146102fa578063395093511461030d5780634e7b827f146103205780635183d6fd14610342575f5ffd5b806318160ddd1161020757806318160ddd14610295578063226cfa3d1461029d57806323b872dd146102bc57806327ce0147146102cf5780633009a609146102e2575f5ffd5b806306fdde0314610238578063095ea7b31461025657806309bbedde146102795780631458bb461461028b575b5f5ffd5b6102406105bf565b60405161024d9190611cb9565b60405180910390f35b610269610264366004611d02565b61064f565b604051901515815260200161024d565b600a545b60405190815260200161024d565b610293610665565b005b60025461027d565b61027d6102ab366004611d2c565b60106020525f908152604090205481565b6102696102ca366004611d47565b6106eb565b61027d6102dd366004611d2c565b610752565b61027d600e5481565b6040516012815260200161024d565b610293610308366004611d2c565b6107ad565b61026961031b366004611d02565b6108cc565b61026961032e366004611d2c565b600f6020525f908152604090205460ff1681565b610355610350366004611d85565b610901565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a084015260c083015260e08201526101000161024d565b6102936103a8366004611d85565b610a4a565b610293610b06565b61027d60115481565b61027d6103cc366004611d2c565b6001600160a01b03165f9081526020819052604090205490565b610293610ba6565b6102936103fc366004611d2c565b610c19565b61027d60095481565b6104317f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024d565b6005546001600160a01b0316610431565b61027d610468366004611d2c565b610d2a565b610240610d34565b610269610483366004611d02565b610d43565b61027d610496366004611d2c565b610d90565b6102696104a9366004611d02565b610dbb565b61027d6104bc366004611d2c565b6001600160a01b03165f9081526008602052604090205490565b6102696104e4366004611da9565b610dc7565b61027d60125481565b61027d610500366004611de0565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610293610538366004611d85565b610e71565b61029361054b366004611d02565b610ea9565b600e5461027d565b610293610566366004611d85565b611007565b610293610579366004611d2c565b611177565b61035561058c366004611d2c565b611261565b6105a461059f366004611d85565b6113c0565b6040805193845260208401929092529082015260600161024d565b6060600380546105ce90611e0c565b80601f01602080910402602001604051908101604052809291908181526020018280546105fa90611e0c565b80156106455780601f1061061c57610100808354040283529160200191610645565b820191905f5260205f20905b81548152906001019060200180831161062857829003601f168201915b5050505050905090565b5f61065b3384846114d4565b5060015b92915050565b73ce8f2d2e3268e21b5cc86c9c7e03440505c3dc7333146106a15760405162461bcd60e51b815260040161069890611e44565b60405180910390fd5b6040515f90339047908381818185875af1925050503d805f81146106e0576040519150601f19603f3d011682016040523d82523d5f602084013e6106e5565b606091505b50505050565b5f6106f78484846115f7565b610748843361074385604051806060016040528060288152602001611fcb602891396001600160a01b038a165f9081526001602090815260408083203384529091529020549190611652565b6114d4565b5060019392505050565b6001600160a01b0381165f9081526007602090815260408083205491839052822054600654600160801b926107a39261079e9261079891610793919061168a565b61170f565b9061171d565b611757565b61065f9190611e8d565b6005546001600160a01b031633146107d75760405162461bcd60e51b815260040161069890611e44565b6001600160a01b0381165f908152600f602052604090205460ff16156107fb575f5ffd5b6001600160a01b0381165f908152600f60205260408120805460ff19166001179055610828908290611768565b60405163131836e760e21b8152600a60048201526001600160a01b038216602482015273e2b0b5502d70ca69f63b98923c2f4b3eb28f69db90634c60db9c906044015f6040518083038186803b158015610880575f5ffd5b505af4158015610892573d5f5f3e3d5ffd5b50506040516001600160a01b03841692507fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2591505f90a250565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161065b91859061074390866117be565b5f5f5f5f5f5f5f5f600a73e2b0b5502d70ca69f63b98923c2f4b3eb28f69db63deb3d89690916040518263ffffffff1660e01b815260040161094591815260200190565b602060405180830381865af4158015610960573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109849190611eac565b89106109a757505f96505f19955085945086935083925082915081905080610a3f565b6040516368d54f3f60e11b8152600a6004820152602481018a90525f9073e2b0b5502d70ca69f63b98923c2f4b3eb28f69db9063d1aa9e7e90604401602060405180830381865af41580156109fe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a229190611ec3565b9050610a2d81611261565b98509850985098509850985098509850505b919395975091939597565b6005546001600160a01b03163314610a745760405162461bcd60e51b815260040161069890611e44565b5f610a7e60025490565b11610a87575f5ffd5b8015610b0357610aba610a9960025490565b610aa783600160801b61168a565b610ab19190611e8d565b600654906117be565b60065560405181815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a2600954610aff90826117be565b6009555b50565b60405162461bcd60e51b815260206004820152606360248201527f534b595f4469766964656e645f547261636b65723a207769746864726177446960448201527f766964656e642064697361626c65642e20557365207468652027636c61696d2760648201527f2066756e6374696f6e206f6e20746865206d61696e20534b5920636f6e74726160848201526231ba1760e91b60a482015260c401610698565b6005546001600160a01b03163314610bd05760405162461bcd60e51b815260040161069890611e44565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b73ce8f2d2e3268e21b5cc86c9c7e03440505c3dc733314610c4c5760405162461bcd60e51b815260040161069890611e44565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610c90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb49190611eac565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610d01573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d259190611ede565b505050565b5f61065f82610d90565b6060600480546105ce90611e0c565b5f61065b338461074385604051806060016040528060258152602001611ff360259139335f9081526001602090815260408083206001600160a01b038d1684529091529020549190611652565b6001600160a01b0381165f9081526008602052604081205461065f90610db584610752565b9061181c565b5f61065b3384846115f7565b6005545f906001600160a01b03163314610df35760405162461bcd60e51b815260040161069890611e44565b5f610dfd8461185d565b90508015610e68576001600160a01b0384165f81815260106020526040908190204290555184151591907fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf09290610e569085815260200190565b60405180910390a3600191505061065f565b505f9392505050565b73ce8f2d2e3268e21b5cc86c9c7e03440505c3dc733314610ea45760405162461bcd60e51b815260040161069890611e44565b601255565b6005546001600160a01b03163314610ed35760405162461bcd60e51b815260040161069890611e44565b6001600160a01b0382165f908152600f602052604090205460ff16611003576012548110610f7f57610f058282611768565b604051632f0ad01760e21b8152600a60048201526001600160a01b03831660248201526044810182905273e2b0b5502d70ca69f63b98923c2f4b3eb28f69db9063bc2b405c906064015f6040518083038186803b158015610f64575f5ffd5b505af4158015610f76573d5f5f3e3d5ffd5b50505050610ff8565b610f89825f611768565b60405163131836e760e21b8152600a60048201526001600160a01b038316602482015273e2b0b5502d70ca69f63b98923c2f4b3eb28f69db90634c60db9c906044015f6040518083038186803b158015610fe1575f5ffd5b505af4158015610ff3573d5f5f3e3d5ffd5b505050505b610d25826001610dc7565b5050565b6005546001600160a01b031633146110315760405162461bcd60e51b815260040161069890611e44565b610e1081101580156110465750620151808111155b6110ce5760405162461bcd60e51b815260206004820152604d60248201527f4275534b59726e5f4469766964656e645f547261636b65723a20636c61696d5760448201527f616974206d757374206265207570646174656420746f206265747765656e203160648201526c20616e6420323420686f75727360981b608482015260a401610698565b60115481036111455760405162461bcd60e51b815260206004820152603b60248201527f534b595f4469766964656e645f547261636b65723a2043616e6e6f742075706460448201527f61746520636c61696d5761697420746f2073616d652076616c756500000000006064820152608401610698565b60115460405182907f474ea64804364a1e29a4487ddb63c3342a2dd826ccd8acf48825e680a0e6f20f905f90a3601155565b6005546001600160a01b031633146111a15760405162461bcd60e51b815260040161069890611e44565b6001600160a01b0381166112065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610698565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6040516317e142d160e01b8152600a60048201526001600160a01b038216602482015281905f9081908190819081908190819073e2b0b5502d70ca69f63b98923c2f4b3eb28f69db906317e142d190604401602060405180830381865af41580156112ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f29190611eac565b96505f1995505f871261135057600e5487111561131e57600e546113179088906119d8565b9550611350565b600e54600a545f9110611331575f611340565b600e54600a546113409161181c565b905061134c888261171d565b9650505b61135988610d90565b945061136488610752565b6001600160a01b0389165f9081526010602052604090205490945092508261138c575f61139a565b60115461139a9084906117be565b91504282116113a9575f6113b3565b6113b3824261181c565b9050919395975091939597565b600a545f90819081908082036113e0575050600e545f92508291506114cd565b600e545f805a90505f805b89841080156113f957508582105b156114bc578461140881611ef9565b600a549096508610905061141a575f94505b5f600a5f01868154811061143057611430611f11565b5f9182526020808320909101546001600160a01b0316808352601090915260409091205490915061146090611a11565b1561148357611470816001610dc7565b15611483578161147f81611ef9565b9250505b8261148d81611ef9565b9350505f5a9050808511156114b3576114b06114a9868361181c565b87906117be565b95505b93506113eb9050565b600e85905590975095509193505050505b9193909250565b6001600160a01b0383166115365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610698565b6001600160a01b0382166115975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610698565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60405162461bcd60e51b815260206004820152602a60248201527f534b595f4469766964656e645f547261636b65723a204e6f207472616e7366656044820152691c9cc8185b1b1bddd95960b21b6064820152608401610698565b5f81848411156116755760405162461bcd60e51b81526004016106989190611cb9565b505f6116818486611f25565b95945050505050565b5f825f0361169957505f61065f565b5f6116a48385611f38565b9050826116b18583611e8d565b146117085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610698565b9392505050565b5f818181121561065f575f5ffd5b5f806117298385611f4f565b90505f831215801561173b5750838112155b8061174f57505f8312801561174f57508381125b611708575f5ffd5b5f5f821215611764575f5ffd5b5090565b6001600160a01b0382165f908152602081905260409020548082111561179f575f611793838361181c565b90506106e58482611a36565b80821015610d25575f6117b2828461181c565b90506106e58482611a98565b5f806117ca8385611f76565b9050838110156117085760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610698565b5f61170883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611652565b5f5f61186883610d90565b905080156119d0576001600160a01b0383165f9081526008602052604090205461189290826117be565b6001600160a01b0384165f81815260086020526040908190209290925590517fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d906118e09084815260200190565b60405180910390a260405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af1158015611958573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197c9190611ede565b9050806119c9576001600160a01b0384165f908152600860205260409020546119a5908361181c565b6001600160a01b039094165f90815260086020526040812094909455509192915050565b5092915050565b505f92915050565b5f806119e48385611f89565b90505f83121580156119f65750838113155b8061174f57505f8312801561174f5750838113611708575f5ffd5b5f42821115611a2157505f919050565b601154611a2e428461181c565b101592915050565b611a408282611adb565b611a79611a5b6107938360065461168a90919063ffffffff16565b6001600160a01b0384165f90815260076020526040902054906119d8565b6001600160a01b039092165f9081526007602052604090209190915550565b611aa28282611bb8565b611a79611abd6107938360065461168a90919063ffffffff16565b6001600160a01b0384165f908152600760205260409020549061171d565b6001600160a01b038216611b315760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610698565b600254611b3e90826117be565b6002556001600160a01b0382165f90815260208190526040902054611b6390826117be565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b6001600160a01b038216611c185760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610698565b611c5481604051806060016040528060228152602001611fa9602291396001600160a01b0385165f908152602081905260409020549190611652565b6001600160a01b0383165f90815260208190526040902055600254611c79908261181c565b6002556040518181525f906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611bac565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610b03575f5ffd5b5f5f60408385031215611d13575f5ffd5b8235611d1e81611cee565b946020939093013593505050565b5f60208284031215611d3c575f5ffd5b813561170881611cee565b5f5f5f60608486031215611d59575f5ffd5b8335611d6481611cee565b92506020840135611d7481611cee565b929592945050506040919091013590565b5f60208284031215611d95575f5ffd5b5035919050565b8015158114610b03575f5ffd5b5f5f60408385031215611dba575f5ffd5b8235611dc581611cee565b91506020830135611dd581611d9c565b809150509250929050565b5f5f60408385031215611df1575f5ffd5b8235611dfc81611cee565b91506020830135611dd581611cee565b600181811c90821680611e2057607f821691505b602082108103611e3e57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82611ea757634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611ebc575f5ffd5b5051919050565b5f60208284031215611ed3575f5ffd5b815161170881611cee565b5f60208284031215611eee575f5ffd5b815161170881611d9c565b5f60018201611f0a57611f0a611e79565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561065f5761065f611e79565b808202811582820484141761065f5761065f611e79565b8082018281125f831280158216821582161715611f6e57611f6e611e79565b505092915050565b8082018082111561065f5761065f611e79565b8181035f8312801583831316838312821617156119c9576119c9611e7956fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d090a428f749cc0a449b3ab3f5a39ceb2df411c0304feb41209d0b9d3ef96ffe64736f6c634300081c0033