0x608060405260405162002a2c38038062002a2c8339810160408190526200002691620002c4565b60008989898989898989896040516200003f90620001c0565b6200005399989796959493929190620003dd565b604051809103906000f08015801562000070573d6000803e3d6000fd5b509050858715620001af5760405163095ea7b360e01b81526001600160a01b038881166004830152602482018a905283169063095ea7b3906044016020604051808303816000875af1158015620000cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f1919062000454565b506001600160a01b03811663f305d71934848b60008033620001164261016862000479565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af115801562000184573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620001ab9190620004a1565b5050505b5050505050505050505050620004d0565b61250e806200051e83390190565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000201578181015183820152602001620001e7565b50506000910152565b600082601f8301126200021c57600080fd5b81516001600160401b0380821115620002395762000239620001ce565b604051601f8301601f19908116603f01168101908282118183101715620002645762000264620001ce565b816040528381528660208588010111156200027e57600080fd5b62000291846020830160208901620001e4565b9695505050505050565b805161ffff81168114620002ae57600080fd5b919050565b80518015158114620002ae57600080fd5b60008060008060008060008060006101208a8c031215620002e457600080fd5b89516001600160401b0380821115620002fc57600080fd5b6200030a8d838e016200020a565b9a5060208c01519150808211156200032157600080fd5b50620003308c828d016200020a565b60408c015160608d015160808e0151929b50909950975090506001600160a01b03811681146200035f57600080fd5b94506200036f60a08b016200029b565b93506200037f60c08b016200029b565b92506200038f60e08b01620002b3565b9150620003a06101008b01620002b3565b90509295985092959850929598565b60008151808452620003c9816020860160208601620001e4565b601f01601f19169290920160200192915050565b6000610120808352620003f38184018d620003af565b9050828103602084015262000409818c620003af565b604084019a909a52505060608101969096526001600160a01b0394909416608086015261ffff92831660a0860152911660c0840152151560e083015215156101009091015292915050565b6000602082840312156200046757600080fd5b6200047282620002b3565b9392505050565b808201808211156200049b57634e487b7160e01b600052601160045260246000fd5b92915050565b600080600060608486031215620004b757600080fd5b8351925060208401519150604084015190509250925092565b603f80620004df6000396000f3fe6080604052600080fdfea26469706673582212204ce43220fd58ac67b0753d33b01f273a3c006ecc033e82124bb4138ead57f86664736f6c6343000815003360806040523480156200001157600080fd5b506040516200250e3803806200250e833981016040819052620000349162000d79565b338989600362000045838262000ee2565b50600462000054828262000ee2565b5050506001600160a01b0381166200008757604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000928162000389565b508115620000bd576006805460ff60f01b1916600160f01b179055620000b7620003db565b620000c8565b620000c832620003fb565b620000df32620000d9888a62000fc4565b6200043f565b8515620000f257620000f233876200043f565b600680546001600160a01b0319166001600160a01b0387169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200014c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000172919062000fda565b6001600160a01b031663c9c6539630600660000160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fe919062000fda565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200024c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000272919062000fda565b600780546001600160a01b0319166001600160a01b03928316179055600654620002a2913091166000196200047d565b816200037a576109c48461ffff161180620002c257506109c48361ffff16115b156200030a578361ffff168361ffff1611620002df5783620002e1565b825b604051636fd3d0a160e11b815261ffff90911660048201526109c460248201526044016200007e565b6006805463ffffffff60a01b1916600160a01b61ffff8781169190910261ffff60b01b191691909117600160b01b918616919091021766ff00000000ffff60c01b1916600160f01b8315150261ffff60c01b191617600560c11b1763ffffffff60d01b19166219001960d31b1790555b505050505050505050620010d4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620003e562000491565b620003ef620004c0565b620003f96200066c565b565b6200040562000491565b6001600160a01b0381166200043157604051631e4fbdf760e01b8152600060048201526024016200007e565b6200043c8162000389565b50565b6001600160a01b0382166200046b5760405163ec442f0560e01b8152600060048201526024016200007e565b620004796000838362000682565b5050565b6200048c8383836001620008b7565b505050565b6005546001600160a01b03163314620003f95760405163118cdaa760e01b81523360048201526024016200007e565b60068054600160f81b6001600160f81b038216179091553060008181526020819052604090205491620004fe91906001600160a01b0316836200047d565b604080516002808252606082018352600092602083019080368337019050509050308160008151811062000536576200053662000ff8565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562000590573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005b6919062000fda565b81600181518110620005cc57620005cc62000ff8565b6001600160a01b0392831660209182029290920101526006541663791ac94783600084620006026005546001600160a01b031690565b426040518663ffffffff1660e01b8152600401620006259594939291906200100e565b600060405180830381600087803b1580156200064057600080fd5b505af115801562000655573d6000803e3d6000fd5b5050600680546001600160f81b0316905550505050565b6200067662000491565b620003f9600062000389565b6200068e838362000993565b80620006b557506000620006aa6005546001600160a01b031690565b6001600160a01b0316145b15620006c8576200048c83838362000a20565b600654600160f01b900460ff16620006f357604051631393b97560e11b815260040160405180910390fd5b6007546000906001600160a01b0385811691161480156200072257506006546001600160a01b03848116911614155b6006549091506000906001600160a01b038681169116148015906200075457506007546001600160a01b038581169116145b90508115801562000763575080155b80620007835750818015620007835750600654600160a01b900461ffff16155b80620007a35750808015620007a35750600654600160b01b900461ffff16155b15620007c957620007b5848462000b53565b620007c285858562000a20565b5050505050565b6007546001600160a01b0316331480159062000815575062000802620007ee60025490565b600654600160c01b900461ffff1662000c52565b3060009081526020819052604090205410155b15620008255762000825620004c0565b6000826200084f57816200083b5760006200085e565b600654600160b01b900461ffff166200085e565b600654600160a01b900461ffff165b905060006200086e858362000c52565b905060006200087e828762000fc4565b90506200088c878262000b53565b8115620008a057620008a088308462000a20565b620008ad88888362000a20565b5050505050505050565b6001600160a01b038416620008e35760405163e602df0560e01b8152600060048201526024016200007e565b6001600160a01b0383166200090f57604051634a1406b160e11b8152600060048201526024016200007e565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156200098d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516200098491815260200190565b60405180910390a35b50505050565b6000620009a86005546001600160a01b031690565b6001600160a01b0316326001600160a01b03161480620009d557506005546001600160a01b038481169116145b80620009ee57506005546001600160a01b038381169116145b8062000a0257506001600160a01b03821630145b8062000a175750600654600160f81b900460ff165b90505b92915050565b6001600160a01b03831662000a4f57806002600082825462000a43919062001081565b9091555062000ac39050565b6001600160a01b0383166000908152602081905260409020548181101562000aa45760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016200007e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821662000ae15760028054829003905562000b00565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b4691815260200190565b60405180910390a3505050565b62000b7562000b6160025490565b600654600160d01b900461ffff1662000c52565b81111562000baf578062000b8c62000b6160025490565b6040516301779f8360e71b8152600481019290925260248201526044016200007e565b6007546001600160a01b039081169083160362000bca575050565b62000bec62000bd860025490565b600654600160e01b900461ffff1662000c52565b8162000c0d846001600160a01b031660009081526020819052604090205490565b62000c19919062001081565b111562000479578062000c2f62000bd860025490565b6040516342cb586160e01b8152600481019290925260248201526044016200007e565b600061271062000c6761ffff84168562001097565b62000a179190620010b1565b634e487b7160e01b600052604160045260246000fd5b600082601f83011262000c9b57600080fd5b81516001600160401b038082111562000cb85762000cb862000c73565b604051601f8301601f19908116603f0116810190828211818310171562000ce35762000ce362000c73565b8160405283815260209250868385880101111562000d0057600080fd5b600091505b8382101562000d24578582018301518183018401529082019062000d05565b600093810190920192909252949350505050565b80516001600160a01b038116811462000d5057600080fd5b919050565b805161ffff8116811462000d5057600080fd5b8051801515811462000d5057600080fd5b60008060008060008060008060006101208a8c03121562000d9957600080fd5b89516001600160401b038082111562000db157600080fd5b62000dbf8d838e0162000c89565b9a5060208c015191508082111562000dd657600080fd5b5062000de58c828d0162000c89565b98505060408a0151965060608a0151955062000e0460808b0162000d38565b945062000e1460a08b0162000d55565b935062000e2460c08b0162000d55565b925062000e3460e08b0162000d68565b915062000e456101008b0162000d68565b90509295985092959850929598565b600181811c9082168062000e6957607f821691505b60208210810362000e8a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200048c57600081815260208120601f850160051c8101602086101562000eb95750805b601f850160051c820191505b8181101562000eda5782815560010162000ec5565b505050505050565b81516001600160401b0381111562000efe5762000efe62000c73565b62000f168162000f0f845462000e54565b8462000e90565b602080601f83116001811462000f4e576000841562000f355750858301515b600019600386901b1c1916600185901b17855562000eda565b600085815260208120601f198616915b8281101562000f7f5788860151825594840194600190910190840162000f5e565b508582101562000f9e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8181038181111562000a1a5762000a1a62000fae565b60006020828403121562000fed57600080fd5b62000a178262000d38565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015620010605784516001600160a01b03168352938301939183019160010162001039565b50506001600160a01b03969096166060850152505050608001529392505050565b8082018082111562000a1a5762000a1a62000fae565b808202811582820484141762000a1a5762000a1a62000fae565b600082620010cf57634e487b7160e01b600052601260045260246000fd5b500490565b61142a80620010e46000396000f3fe608060405234801561001057600080fd5b50600436106101415760003560e01c8063805d835d116100b8578063a9059cbb1161007c578063a9059cbb14610358578063b3cea2171461036b578063b5dc483414610392578063bc063e1a146103a5578063dd62ed3e146103ae578063f2fde38b146103e757600080fd5b8063805d835d14610306578063894760691461030f5780638da5cb5b1461032257806395d89b411461033d5780639ef833d41461034557600080fd5b806323b872dd1161010a57806323b872dd146101b6578063313ce567146101c957806364411e34146101d857806370a08231146101eb578063715018a61461021457806379502c551461021c57600080fd5b806299d3861461014657806305523ddc1461015057806306fdde0314610163578063095ea7b31461018157806318160ddd146101a4575b600080fd5b61014e6103fa565b005b61014e61015e3660046110f2565b610417565b61016b610479565b604051610178919061110d565b60405180910390f35b61019461018f366004611170565b61050b565b6040519015158152602001610178565b6002545b604051908152602001610178565b6101946101c436600461119c565b610525565b60405160128152602001610178565b61014e6101e63660046110f2565b610549565b6101a86101f93660046111dd565b6001600160a01b031660009081526020819052604090205490565b61014e6105b9565b600654600754610293916001600160a01b038082169261ffff600160a01b808504821694600160b01b8104831694600160c01b8204841694600160d01b8304851694600160e01b8404169360ff600160f01b8504811694600160f81b900416928216916bffffffffffffffffffffffff919004168a565b604080516001600160a01b039b8c16815261ffff9a8b166020820152988a1690890152958816606088015293871660808701529190951660a085015293151560c084015292151560e0830152919092166101008301526bffffffffffffffffffffffff1661012082015261014001610178565b6101a861271081565b61014e61031d3660046111dd565b6105d3565b6005546040516001600160a01b039091168152602001610178565b61016b6106bf565b61014e6103533660046111fa565b6106ce565b610194610366366004611170565b61076b565b6101a87f53f686ae4e881beeefcbd6512eb38cd80e351b2d0bea05a9edca003fc9ce6a1481565b61014e6103a03660046110f2565b610779565b6101a86109c481565b6101a86103bc36600461122d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61014e6103f53660046111dd565b6107ec565b61040261082a565b6006805460ff60f01b1916600160f01b179055565b61041f61082a565b600a8161ffff16101561045757604051633d0a47bb60e21b815261ffff82166004820152603260248201526044015b60405180910390fd5b6006805461ffff909216600160d01b0261ffff60d01b19909216919091179055565b60606003805461048890611266565b80601f01602080910402602001604051908101604052809291908181526020018280546104b490611266565b80156105015780601f106104d657610100808354040283529160200191610501565b820191906000526020600020905b8154815290600101906020018083116104e457829003601f168201915b5050505050905090565b600033610519818585610857565b60019150505b92915050565b600033610533858285610864565b61053e8585856108e2565b506001949350505050565b61055161082a565b600a61055c60025490565b61056691906112b6565b8161ffff1610156105975760405163712893dd60e11b815261ffff82166004820152600a602482015260440161044e565b6006805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b6105c161082a565b6105c9610941565b6105d1610add565b565b6105db61082a565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064691906112d8565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ba91906112f1565b505050565b60606004805461048890611266565b6106d661082a565b6109c48261ffff1611806106ef57506109c48161ffff16115b15610733578161ffff168161ffff1611610709578161070b565b805b604051636fd3d0a160e11b815261ffff90911660048201526109c4602482015260440161044e565b6006805463ffffffff60a01b1916600160a01b61ffff9485160261ffff60b01b191617600160b01b9290931691909102919091179055565b6000336105198185856108e2565b61078161082a565b60018161ffff161080610798575060648161ffff16115b156107ca5760405163dd362b7160e01b815261ffff82166004820152600160248201526064604482018190520161044e565b6006805461ffff909216600160c01b0261ffff60c01b19909216919091179055565b6107f461082a565b6001600160a01b03811661081e57604051631e4fbdf760e01b81526000600482015260240161044e565b61082781610aeb565b50565b6005546001600160a01b031633146105d15760405163118cdaa760e01b815233600482015260240161044e565b6106ba8383836001610b3d565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146108dc57818110156108cd57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161044e565b6108dc84848484036000610b3d565b50505050565b6001600160a01b03831661090c57604051634b637e8f60e11b81526000600482015260240161044e565b6001600160a01b0382166109365760405163ec442f0560e01b81526000600482015260240161044e565b6106ba838383610c12565b60068054600160f81b6001600160f81b03821617909155306000818152602081905260409020549161097d91906001600160a01b031683610857565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106109b2576109b2611313565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610a0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2f9190611329565b81600181518110610a4257610a42611313565b6001600160a01b0392831660209182029290920101526006541663791ac94783600084610a776005546001600160a01b031690565b426040518663ffffffff1660e01b8152600401610a98959493929190611346565b600060405180830381600087803b158015610ab257600080fd5b505af1158015610ac6573d6000803e3d6000fd5b5050600680546001600160f81b0316905550505050565b610ae561082a565b6105d160005b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038416610b675760405163e602df0560e01b81526000600482015260240161044e565b6001600160a01b038316610b9157604051634a1406b160e11b81526000600482015260240161044e565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156108dc57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0491815260200190565b60405180910390a350505050565b610c1c8383610e1d565b80610c4157506000610c366005546001600160a01b031690565b6001600160a01b0316145b15610c51576106ba838383610ea3565b600654600160f01b900460ff16610c7b57604051631393b97560e11b815260040160405180910390fd5b6007546000906001600160a01b038581169116148015610ca957506006546001600160a01b03848116911614155b6006549091506000906001600160a01b03868116911614801590610cda57506007546001600160a01b038581169116145b905081158015610ce8575080155b80610d065750818015610d065750600654600160a01b900461ffff16155b80610d245750808015610d245750600654600160b01b900461ffff16155b15610d4557610d338484610fcd565b610d3e858585610ea3565b5050505050565b6007546001600160a01b03163314801590610d8d5750610d7a610d6760025490565b600654600160c01b900461ffff166110be565b3060009081526020819052604090205410155b15610d9a57610d9a610941565b600082610dc05781610dad576000610dcf565b600654600160b01b900461ffff16610dcf565b600654600160a01b900461ffff165b90506000610ddd85836110be565b90506000610deb82876113b7565b9050610df78782610fcd565b8115610e0857610e08883084610ea3565b610e13888883610ea3565b5050505050505050565b6000610e316005546001600160a01b031690565b6001600160a01b0316326001600160a01b03161480610e5d57506005546001600160a01b038481169116145b80610e7557506005546001600160a01b038381169116145b80610e8857506001600160a01b03821630145b80610e9c5750600654600160f81b900460ff165b9392505050565b6001600160a01b038316610ece578060026000828254610ec391906113ca565b90915550610f409050565b6001600160a01b03831660009081526020819052604090205481811015610f215760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161044e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610f5c57600280548290039055610f7b565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610fc091815260200190565b60405180910390a3505050565b610fec610fd960025490565b600654600160d01b900461ffff166110be565b8111156110225780611000610fd960025490565b6040516301779f8360e71b81526004810192909252602482015260440161044e565b6007546001600160a01b039081169083160361103c575050565b61105b61104860025490565b600654600160e01b900461ffff166110be565b8161107b846001600160a01b031660009081526020819052604090205490565b61108591906113ca565b11156110ba578061109861104860025490565b6040516342cb586160e01b81526004810192909252602482015260440161044e565b5050565b60006127106110d161ffff8416856113dd565b610e9c91906112b6565b803561ffff811681146110ed57600080fd5b919050565b60006020828403121561110457600080fd5b610e9c826110db565b600060208083528351808285015260005b8181101561113a5785810183015185820160400152820161111e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461082757600080fd5b6000806040838503121561118357600080fd5b823561118e8161115b565b946020939093013593505050565b6000806000606084860312156111b157600080fd5b83356111bc8161115b565b925060208401356111cc8161115b565b929592945050506040919091013590565b6000602082840312156111ef57600080fd5b8135610e9c8161115b565b6000806040838503121561120d57600080fd5b611216836110db565b9150611224602084016110db565b90509250929050565b6000806040838503121561124057600080fd5b823561124b8161115b565b9150602083013561125b8161115b565b809150509250929050565b600181811c9082168061127a57607f821691505b60208210810361129a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000826112d357634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156112ea57600080fd5b5051919050565b60006020828403121561130357600080fd5b81518015158114610e9c57600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561133b57600080fd5b8151610e9c8161115b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156113965784516001600160a01b031683529383019391830191600101611371565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561051f5761051f6112a0565b8082018082111561051f5761051f6112a0565b808202811582820484141761051f5761051f6112a056fea2646970667358221220d5bb8d975c33a636053b065a9f5ecb55efea1c37318b26ef44d0d1fc074c0e9764736f6c63430008150033000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000204fce5e3e2502611000000000000000000000000000000000000000000000001d14a0219e548224280000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000000000000000000000000000000000000000007d000000000000000000000000000000000000000000000000000000000000007d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000d57686174206973206c6f76653f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044c6f766500000000000000000000000000000000000000000000000000000000