60806040526008805462ffffff60b81b191661010160b81b17905560c8600981905562000041306001600160a01b031660009081526020819052604090205490565b6200004d9190620009bd565b600a556200006e600c54600b54620004de60201b62001a4c1790919060201c565b600d55601c600e553480156200008357600080fd5b506040516200427138038062004271833981016040819052620000a691620009fd565b604080518082018252600a81526954656e2043726f776e7360b01b602080830191825283518085019094526005845264524556313360d81b908401528151919291620000f59160039162000901565b5080516200010b90600490602084019062000901565b5050506000620001206200054e60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620001a2866200018e60648a6200055260201b62001ab21790919060201c565b6200059c60201b62001af41790919060201c565b620001b290633b9aca0062000a82565b601055620001d3856200018e89606462000552602090811b62001ab217901c565b620001e390633b9aca0062000a82565b60115562000204846200018e89606462000552602090811b62001ab217901c565b6200021490633b9aca0062000a82565b6012556200023087606462000552602090811b62001ab217901c565b6200024090633b9aca0062000a82565b600f55600b899055600c889055620002658989620004de602090811b62001a4c17901c565b600d8190555060008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ac57600080fd5b505afa158015620002c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e7919062000aa4565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033057600080fd5b505afa15801562000345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036b919062000aa4565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620003b457600080fd5b505af1158015620003c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ef919062000aa4565b600880546001600160a01b038086166001600160a01b031992831617909255601a80549284169290911691909117905590506200042e81600162000623565b601b80546001600160a01b038681166001600160a01b031992831617909255601c805488841692169190911790556005546200046d911660016200070e565b6200047a3060016200070e565b601b5462000493906001600160a01b031660016200070e565b620004a08560016200070e565b620004cd620004b76005546001600160a01b031690565b620004c78b633b9aca0062000a82565b620007c9565b505050505050505050505062000b72565b600080620004ed838562000ac2565b905083811015620005455760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b90505b92915050565b3390565b60006200054583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620008c560201b60201c565b600082620005ad5750600062000548565b6000620005bb838562000a82565b905082620005ca8583620009bd565b14620005455760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016200053c565b6001600160a01b03821660009081526018602052604090205460ff1615158115151415620006ba5760405162461bcd60e51b815260206004820152603f60248201527f546f6b656e3a204175746f6d61746564206d61726b6574206d616b657220706160448201527f697220697320616c72656164792073657420746f20746861742076616c75650060648201526084016200053c565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146200076a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200053c565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620008215760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200053c565b6200083d81600254620004de60201b62001a4c1790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200087091839062001a4c620004de821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60008183620008e95760405162461bcd60e51b81526004016200053c919062000add565b506000620008f88486620009bd565b95945050505050565b8280546200090f9062000b35565b90600052602060002090601f0160209004810192826200093357600085556200097e565b82601f106200094e57805160ff19168380011785556200097e565b828001600101855582156200097e579182015b828111156200097e57825182559160200191906001019062000961565b506200098c92915062000990565b5090565b5b808211156200098c576000815560010162000991565b634e487b7160e01b600052601160045260246000fd5b600082620009db57634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160a01b0381168114620009f857600080fd5b919050565b60008060008060008060008060006101208a8c03121562000a1d57600080fd5b8951985060208a0151975060408a0151965060608a0151955060808a0151945060a08a0151935062000a5260c08b01620009e0565b925062000a6260e08b01620009e0565b915062000a736101008b01620009e0565b90509295985092959850929598565b600081600019048311821515161562000a9f5762000a9f620009a7565b500290565b60006020828403121562000ab757600080fd5b6200054582620009e0565b6000821982111562000ad85762000ad8620009a7565b500190565b600060208083528351808285015260005b8181101562000b0c5785810183015185820160400152820162000aee565b8181111562000b1f576000604083870101525b50601f01601f1916929092016040019392505050565b600181811c9082168062000b4a57607f821691505b6020821081141562000b6c57634e487b7160e01b600052602260045260246000fd5b50919050565b6136ef8062000b826000396000f3fe6080604052600436106103855760003560e01c80638da5cb5b116101d1578063c492f04611610102578063ddbbf683116100a0578063eb91d37e1161006f578063eb91d37e14610aa3578063f2fde38b14610ab8578063f8b3c23e14610ad8578063fb9d66c314610af957600080fd5b8063ddbbf68314610a42578063e2f4560514610a62578063e6c75f7114610a78578063e6db992f14610a8e57600080fd5b8063d9c3c610116100dc578063d9c3c610146109b1578063da473fcd146109c6578063dd467064146109dc578063dd62ed3e146109fc57600080fd5b8063c492f046146108fa578063ca02d7911461091a578063cb0e55a81461093a57600080fd5b8063a9059cbb1161016f578063b99d483911610149578063b99d48391461088f578063bf56b371146108af578063bf6a1c0d146108c5578063c0246668146108da57600080fd5b8063a9059cbb1461082a578063b62496f51461084a578063b6c523241461087a57600080fd5b806398118cb4116101ab57806398118cb4146107b35780639a7a23d6146107c95780639ec5691d146107e9578063a457c2d71461080a57600080fd5b80638da5cb5b146107605780638e9893821461077e57806395d89b411461079e57600080fd5b806331a0a88c116102b65780635d098b3811610254578063715018a611610223578063715018a6146106ea5780637290b621146106ff5780637316c2e91461071f578063877f4de51461073f57600080fd5b80635d098b381461067457806365b8dbc0146106945780636b67c4df146106b457806370a08231146106ca57600080fd5b806349bd5a5e1161029057806349bd5a5e146105e55780634fbee1931461060557806352f7c9881461063e5780635aa821a91461065e57600080fd5b806331a0a88c1461058457806339509351146105a5578063455a4396146105c557600080fd5b80631c15aa111161032357806323b872dd116102fd57806323b872dd14610506578063264d26dd14610526578063313ce56714610546578063316601a71461056257600080fd5b80631c15aa11146104855780631cdd3be3146104a65780631fca803d146104d657600080fd5b8063095ea7b31161035f578063095ea7b3146103f257806313114a9d146104225780631694505e1461043857806318160ddd1461047057600080fd5b806301f59d161461039157806302259e9e146103ba57806306fdde03146103d057600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a7600e5481565b6040519081526020015b60405180910390f35b3480156103c657600080fd5b506103a760115481565b3480156103dc57600080fd5b506103e5610b19565b6040516103b19190612fff565b3480156103fe57600080fd5b5061041261040d366004613069565b610bab565b60405190151581526020016103b1565b34801561042e57600080fd5b506103a7600d5481565b34801561044457600080fd5b50600854610458906001600160a01b031681565b6040516001600160a01b0390911681526020016103b1565b34801561047c57600080fd5b506002546103a7565b34801561049157600080fd5b5060085461041290600160b81b900460ff1681565b3480156104b257600080fd5b506104126104c1366004613095565b60156020526000908152604090205460ff1681565b3480156104e257600080fd5b506104126104f1366004613095565b60166020526000908152604090205460ff1681565b34801561051257600080fd5b506104126105213660046130b2565b610bc2565b34801561053257600080fd5b50601b54610458906001600160a01b031681565b34801561055257600080fd5b50604051600981526020016103b1565b34801561056e57600080fd5b5061058261057d3660046130f3565b610c2b565b005b34801561059057600080fd5b5060085461041290600160c81b900460ff1681565b3480156105b157600080fd5b506104126105c0366004613069565b610c63565b3480156105d157600080fd5b506105826105e036600461311a565b610c99565b3480156105f157600080fd5b50601a54610458906001600160a01b031681565b34801561061157600080fd5b50610412610620366004613095565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561064a57600080fd5b50610582610659366004613153565b610cee565b34801561066a57600080fd5b506103a760105481565b34801561068057600080fd5b5061058261068f366004613095565b610d7d565b3480156106a057600080fd5b506105826106af366004613095565b610dc9565b3480156106c057600080fd5b506103a7600c5481565b3480156106d657600080fd5b506103a76106e5366004613095565b611067565b3480156106f657600080fd5b50610582611082565b34801561070b57600080fd5b5061058261071a366004613175565b6110f9565b34801561072b57600080fd5b5061058261073a3660046131a1565b61115b565b34801561074b57600080fd5b5060085461041290600160a81b900460ff1681565b34801561076c57600080fd5b506005546001600160a01b0316610458565b34801561078a57600080fd5b506105826107993660046131be565b6111a3565b3480156107aa57600080fd5b506103e56112d3565b3480156107bf57600080fd5b506103a7600b5481565b3480156107d557600080fd5b506105826107e436600461311a565b6112e2565b3480156107f557600080fd5b5060085461041290600160c01b900460ff1681565b34801561081657600080fd5b50610412610825366004613069565b6113b3565b34801561083657600080fd5b50610412610845366004613069565b611402565b34801561085657600080fd5b50610412610865366004613095565b60186020526000908152604090205460ff1681565b34801561088657600080fd5b506007546103a7565b34801561089b57600080fd5b506105826108aa3660046131ec565b61140f565b3480156108bb57600080fd5b506103a760135481565b3480156108d157600080fd5b5061058261147e565b3480156108e657600080fd5b506105826108f536600461311a565b6114cb565b34801561090657600080fd5b5061058261091536600461322e565b611554565b34801561092657600080fd5b50601c54610458906001600160a01b031681565b34801561094657600080fd5b50610987610955366004613095565b601460205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016103b1565b3480156109bd57600080fd5b50610582611630565b3480156109d257600080fd5b506103a760095481565b3480156109e857600080fd5b506105826109f73660046130f3565b6116e7565b348015610a0857600080fd5b506103a7610a173660046131be565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a4e57600080fd5b50610458610a5d3660046130f3565b61176c565b348015610a6e57600080fd5b506103a7600a5481565b348015610a8457600080fd5b506103a760125481565b348015610a9a57600080fd5b50610582611796565b348015610aaf57600080fd5b506103a7611842565b348015610ac457600080fd5b50610582610ad3366004613095565b611932565b348015610ae457600080fd5b5060085461041290600160b01b900460ff1681565b348015610b0557600080fd5b50610582610b14366004613069565b611a0b565b606060038054610b28906132a9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b54906132a9565b8015610ba15780601f10610b7657610100808354040283529160200191610ba1565b820191906000526020600020905b815481529060010190602001808311610b8457829003601f168201915b5050505050905090565b6000610bb8338484611b73565b5060015b92915050565b6000610bcf848484611c98565b610c218433610c1c8560405180606001604052806028815260200161364d602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919061271b565b611b73565b5060019392505050565b6005546001600160a01b03163314610c5e5760405162461bcd60e51b8152600401610c55906132e4565b60405180910390fd5b600955565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bb8918590610c1c9086611a4c565b6005546001600160a01b03163314610cc35760405162461bcd60e51b8152600401610c55906132e4565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d185760405162461bcd60e51b8152600401610c55906132e4565b600b829055600c819055610d2c8282611a4c565b600d819055600b54600c546040805192835260208301919091528101919091527f9fef908e44cc0f51b9e9f7fd26bc506a50448657da0dc10a9661e37bc1c4a3929060600160405180910390a15050565b6005546001600160a01b03163314610da75760405162461bcd60e51b8152600401610c55906132e4565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610df35760405162461bcd60e51b8152600401610c55906132e4565b6008546001600160a01b0382811691161415610e645760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e3a2054686520726f7574657220616c7265616479206861732074686044820152696174206164647265737360b01b6064820152608401610c55565b6008546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600880546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a0155916004808301926020929190829003018186803b158015610ef657600080fd5b505afa158015610f0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2e9190613319565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8b57600080fd5b505afa158015610f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc39190613319565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561100b57600080fd5b505af115801561101f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110439190613319565b601a80546001600160a01b0319166001600160a01b03929092169190911790555050565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146110ac5760405162461bcd60e51b8152600401610c55906132e4565b600554600680546001600160a01b0319166001600160a01b03909216918217905560405160009190600080516020613675833981519152908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146111235760405162461bcd60e51b8152600401610c55906132e4565b61113183633b9aca0061334c565b60105561114282633b9aca0061334c565b60115561115381633b9aca0061334c565b601255505050565b6005546001600160a01b031633146111855760405162461bcd60e51b8152600401610c55906132e4565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b031633146111cd5760405162461bcd60e51b8152600401610c55906132e4565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561120f57600080fd5b505afa158015611223573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611247919061336b565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b15801561129557600080fd5b505af11580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190613384565b50505050565b606060048054610b28906132a9565b6005546001600160a01b0316331461130c5760405162461bcd60e51b8152600401610c55906132e4565b601a546001600160a01b03838116911614156113a55760405162461bcd60e51b815260206004820152604c60248201527f546f6b656e3a205468652050616e63616b655377617020706169722063616e6e60448201527f6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b60648201526b65744d616b6572506169727360a01b608482015260a401610c55565b6113af8282612755565b5050565b6000610bb83384610c1c85604051806060016040528060258152602001613695602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919061271b565b6000610bb8338484611c98565b6005546001600160a01b031633146114395760405162461bcd60e51b8152600401610c55906132e4565b604183111561144757600080fd5b6008805461ffff60b81b1916600160b81b9315159390930260ff60c01b191692909217600160c01b91151591909102179055600e55565b6005546001600160a01b031633146114a85760405162461bcd60e51b8152600401610c55906132e4565b6008805460ff60b01b1916600160b01b1790556114c6426000611a4c565b601355565b6005546001600160a01b031633146114f55760405162461bcd60e51b8152600401610c55906132e4565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461157e5760405162461bcd60e51b8152600401610c55906132e4565b60005b828110156115ef5781601760008686858181106115a0576115a06133a1565b90506020020160208101906115b59190613095565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806115e7816133b7565b915050611581565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051611623939291906133d2565b60405180910390a1505050565b6006546001600160a01b031633146116965760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610c55565b6006546005546040516001600160a01b03928316929091169060008051602061367583398151915290600090a3600654600580546001600160a01b0319166001600160a01b03909216919091179055565b6005546001600160a01b031633146117115760405162461bcd60e51b8152600401610c55906132e4565b60058054600680546001600160a01b03199081166001600160a01b03841617909155169055611740814261342b565b6007556005546040516000916001600160a01b031690600080516020613675833981519152908390a350565b6019818154811061177c57600080fd5b6000918252602090912001546001600160a01b0316905081565b6005546001600160a01b031633146117c05760405162461bcd60e51b8152600401610c55906132e4565b60005b60195481101561183f576000601982815481106117e2576117e26133a1565b60009182526020822001546001600160a01b0316915061180182611067565b905061180d828261283e565b506001600160a01b03166000908152601660205260409020805460ff1916905580611837816133b7565b9150506117c3565b50565b601a5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac91600480820192606092909190829003018186803b15801561188e57600080fd5b505afa1580156118a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c6919061345f565b506001600160701b039182169350169050818111156118e157905b806118ef576000935061192c565b8161190082655af3107a400061334c565b1115611927576119208261191a83655af3107a400061334c565b90611ab2565b935061192c565b600093505b50505090565b6005546001600160a01b0316331461195c5760405162461bcd60e51b8152600401610c55906132e4565b6001600160a01b0381166119c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c55565b6005546040516001600160a01b0380841692169060008051602061367583398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611a355760405162461bcd60e51b8152600401610c55906132e4565b6113af82611a4783633b9aca0061334c565b61294a565b600080611a59838561342b565b905083811015611aab5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c55565b9392505050565b6000611aab83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612954565b600082611b0357506000610bbc565b6000611b0f838561334c565b905082611b1c85836134a4565b14611aab5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c55565b6001600160a01b038316611bd55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c55565b6001600160a01b038216611c365760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c55565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611cbe5760405162461bcd60e51b8152600401610c55906134c6565b6001600160a01b038216611ce45760405162461bcd60e51b8152600401610c559061350b565b6001600160a01b03821660009081526015602052604090205460ff16158015611d2657506001600160a01b03831660009081526015602052604090205460ff16155b611d8b5760405162461bcd60e51b815260206004820152603060248201527f596f75722061646472657373206f7220726563697069656e742061646472657360448201526f1cc81a5cc8189b1858dadb1a5cdd195960821b6064820152608401610c55565b80611da157611d9c83836000612982565b505050565b6000611dac30611067565b90506000600a5482101590506000818015611dd15750600854600160a01b900460ff16155b8015611df657506001600160a01b03861660009081526018602052604090205460ff16155b8015611e1057506005546001600160a01b03878116911614155b8015611e2a57506005546001600160a01b03868116911614155b15611f18576008805460ff60a01b1916600160a01b179055600d54600c54600091611e5a9161191a908790611af4565b9050611e6581612a8b565b601c54604080518381526001600160a01b0390921660208301527feafa9125fd4b0edd379b9ab67721e8f4eb26bc018c352092ccac54a89ac6fed7910160405180910390a16000611ec7600d5461191a600b5488611af490919063ffffffff16565b9050611ed281612acd565b6040518181527f61d10b3f17a77466a4241488e37c886fa1637f9863ae76dd5076a80a932bc4eb9060200160405180910390a150506008805460ff60a01b191690555060015b6008546001600160a01b03871660009081526017602052604090205460ff600160a01b909204821615911680611f6657506001600160a01b03861660009081526017602052604090205460ff165b15611f6f575060005b8015612707576001600160a01b03871660009081526018602052604090205460ff161561224957600854600160b01b900460ff16611fef5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e2069736e2774206c61756e636865642079657400000000000000006044820152606401610c55565b6010548511156120525760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c55565b6012548561205f88611067565b612069919061342b565b11156120c35760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610c55565b601354421180159081906120f057506001600160a01b03871660009081526016602052604090205460ff16155b1561214157601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b0389161790555b600854600160a81b900460ff16801561217357506001600160a01b03871660009081526016602052604090205460ff16155b156121c457601980546001810182556000919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b0319166001600160a01b0389161790555b600854600160c01b900460ff16151560011415612202576121e58787612b54565b6001600160a01b0388166000908152601460205260409020600201555b604080518781526001600160a01b03891660208201527f1df6c66a1a6eb6b0b6a23930c6ec94664e676e5d72f819a20a11e6c54540fa42910160405180910390a1506125a7565b6001600160a01b03861660009081526018602052604090205460ff16156124a8576001600160a01b03871660009081526016602052604090205460ff16156122c45760405162461bcd60e51b815260206004820152600e60248201526d2cb7ba9030b9329039b734b832b960911b6044820152606401610c55565b60115485111561233c5760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610c55565b600854600160c81b900460ff161515600114801561237657506001600160a01b03871660009081526014602052604090206004015460ff16155b1561242e57600061238688611067565b9050600281111561242c5761239c816002611ab2565b8611156123a857600080fd5b6001600160a01b038816600090815260146020526040812060030180548892906123d390849061342b565b909155506123e49050816003611ab2565b6001600160a01b0389166000908152601460205260409020600301541061242c576001600160a01b0388166000908152601460205260409020600401805460ff191660011790555b505b6124418561243b89611067565b90612be5565b612462576001600160a01b0387166000908152601460205260408120600201555b604080518681526001600160a01b03891660208201527f845540a7f3f9afb8980bffef1e5a59039c43bbd45de62cc2ce5def5830465f04910160405180910390a16125a7565b6001600160a01b03871660009081526017602052604090205460ff161580156124ea57506001600160a01b03861660009081526017602052604090205460ff16155b156125a757600854600160c01b900460ff1615156001141561252d576125108686612b54565b6001600160a01b0387166000908152601460205260409020600201555b61253a8561243b89611067565b61255b576001600160a01b0387166000908152601460205260408120600201555b604080516001600160a01b03808a168252881660208201529081018690527f38e8feed990acd7f5210170f614d354c7a0485670b9a787e9e00f8fca640d5749060600160405180910390a15b60006125c3606461191a600d5489611af490919063ffffffff16565b6001600160a01b03881660009081526018602052604090205490915060ff1615612604576125f7606461191a886001611af4565b612601908261342b565b90505b600854600090600160b81b900460ff161515600114801561263e57506001600160a01b03891660009081526017602052604090205460ff16155b801561266257506001600160a01b03881660009081526018602052604090205460ff165b156126da5760006001851515141561269557600f548711612684576001612692565b600f54612692908890611ab2565b90505b6001600160a01b038a166000908152601460205260409020600201546126bc908983612c27565b91508282116126cc5760006126d6565b6126d6838361354e565b9150505b6126ee6126e7828461342b565b8890612be5565b965061270489306126ff848661342b565b612982565b50505b612712878787612982565b50505050505050565b6000818484111561273f5760405162461bcd60e51b8152600401610c559190612fff565b50600061274c848661354e565b95945050505050565b6001600160a01b03821660009081526018602052604090205460ff16151581151514156127ea5760405162461bcd60e51b815260206004820152603f60248201527f546f6b656e3a204175746f6d61746564206d61726b6574206d616b657220706160448201527f697220697320616c72656164792073657420746f20746861742076616c7565006064820152608401610c55565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03821661289e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c55565b6128db81604051806060016040528060228152602001613605602291396001600160a01b038516600090815260208190526040902054919061271b565b6001600160a01b0383166000908152602081905260409020556002546129019082612be5565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6113af8282612cfc565b600081836129755760405162461bcd60e51b8152600401610c559190612fff565b50600061274c84866134a4565b6001600160a01b0383166129a85760405162461bcd60e51b8152600401610c55906134c6565b6001600160a01b0382166129ce5760405162461bcd60e51b8152600401610c559061350b565b612a0b81604051806060016040528060268152602001613627602691396001600160a01b038616600090815260208190526040902054919061271b565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612a3a9082611a4c565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611c8b565b612a9481612dd3565b601c546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156113af573d6000803e3d6000fd5b6000612ada826002611ab2565b90506000612ae88383612be5565b905047612af483612dd3565b6000612b004783612be5565b9050612b0c8382612f3c565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b600080612b5f611842565b6001600160a01b038516600090815260146020526040812060020154919250612b8786611067565b9050811580612b94575080155b15612ba157829350612bdc565b84612bae57819350612bdc565b612bd9612bbb868361342b565b612bc5878661334c565b612bcf848661334c565b61191a919061342b565b93505b50505092915050565b6000611aab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061271b565b600080612c32611842565b90506000851580612c435750606485105b15612c515760009250612cf3565b81612c5d87600a61342b565b1015612cee576064612c88612c81612c7a600261191a8b8861354e565b8590611ab2565b8290611ab2565b915084600e541115612ce35784600e54612ca2919061354e565b821015612caf5781612cbd565b84600e54612cbd919061354e565b915060008211612cce576000612cdc565b612cdc8161191a8885611af4565b9350612ce8565b600093505b50612cf3565b600092505b50509392505050565b6001600160a01b038216612d525760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610c55565b600254612d5f9082611a4c565b6002556001600160a01b038216600090815260208190526040902054612d859082611a4c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161293e565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e0857612e086133a1565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612e5c57600080fd5b505afa158015612e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e949190613319565b81600181518110612ea757612ea76133a1565b6001600160a01b039283166020918202929092010152600854612ecd9130911684611b73565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac94790612f06908590600090869030904290600401613565565b600060405180830381600087803b158015612f2057600080fd5b505af1158015612f34573d6000803e3d6000fd5b505050505050565b600854612f549030906001600160a01b031684611b73565b600854601b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015612fbf57600080fd5b505af1158015612fd3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ff891906135d6565b5050505050565b600060208083528351808285015260005b8181101561302c57858101830151858201604001528201613010565b8181111561303e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461183f57600080fd5b6000806040838503121561307c57600080fd5b823561308781613054565b946020939093013593505050565b6000602082840312156130a757600080fd5b8135611aab81613054565b6000806000606084860312156130c757600080fd5b83356130d281613054565b925060208401356130e281613054565b929592945050506040919091013590565b60006020828403121561310557600080fd5b5035919050565b801515811461183f57600080fd5b6000806040838503121561312d57600080fd5b823561313881613054565b915060208301356131488161310c565b809150509250929050565b6000806040838503121561316657600080fd5b50508035926020909101359150565b60008060006060848603121561318a57600080fd5b505081359360208301359350604090920135919050565b6000602082840312156131b357600080fd5b8135611aab8161310c565b600080604083850312156131d157600080fd5b82356131dc81613054565b9150602083013561314881613054565b60008060006060848603121561320157600080fd5b8335925060208401356132138161310c565b915060408401356132238161310c565b809150509250925092565b60008060006040848603121561324357600080fd5b833567ffffffffffffffff8082111561325b57600080fd5b818601915086601f83011261326f57600080fd5b81358181111561327e57600080fd5b8760208260051b850101111561329357600080fd5b602092830195509350508401356132238161310c565b600181811c908216806132bd57607f821691505b602082108114156132de57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561332b57600080fd5b8151611aab81613054565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561336657613366613336565b500290565b60006020828403121561337d57600080fd5b5051919050565b60006020828403121561339657600080fd5b8151611aab8161310c565b634e487b7160e01b600052603260045260246000fd5b60006000198214156133cb576133cb613336565b5060010190565b6040808252810183905260008460608301825b868110156134155782356133f881613054565b6001600160a01b03168252602092830192909101906001016133e5565b5080925050508215156020830152949350505050565b6000821982111561343e5761343e613336565b500190565b80516001600160701b038116811461345a57600080fd5b919050565b60008060006060848603121561347457600080fd5b61347d84613443565b925061348b60208501613443565b9150604084015163ffffffff8116811461322357600080fd5b6000826134c157634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561356057613560613336565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156135b55784516001600160a01b031683529383019391830191600101613590565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156135eb57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122010afa5059188dfa65533729268ec325692acd9bdd0d33ff18b02229e338ccf7364736f6c6343000808003300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000002cc696bfcb071d7e174a45ab252a860224108bf90000000000000000000000002cc696bfcb071d7e174a45ab252a860224108bf90000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d