0x608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063b1369e6a11610097578063dd62ed3e11610071578063dd62ed3e1461064d578063e1eae0b41461067b578063e49cb2fb146106a1578063f2fde38b146106cd57610173565b8063b1369e6a14610551578063cae9ca511461056e578063ce606ee01461062957610173565b806370a08231146104715780637964dd2b1461049757806379cc6790146104c557806395d89b41146104f1578063a457c2d7146104f9578063a9059cbb1461052557610173565b806323b872dd1161013057806323b872dd146103c457806329613086146103fa578063313ce56714610402578063395093511461042057806342966c681461044c5780634b56c39e1461046957610173565b806306fdde0314610178578063095ea7b3146101f55780630ccaa97e1461023557806318160ddd1461025b5780631e89d54514610275578063223d04171461039e575b600080fd5b6101806106f3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b038135169060200135610789565b604080519115158252519081900360200190f35b6102216004803603602081101561024b57600080fd5b50356001600160a01b0316610806565b61026361081b565b60408051918252519081900360200190f35b61039c6004803603604081101561028b57600080fd5b8101906020810181356401000000008111156102a657600080fd5b8201836020820111156102b857600080fd5b803590602001918460208302840111640100000000831117156102da57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561032a57600080fd5b82018360208201111561033c57600080fd5b8035906020019184602083028401116401000000008311171561035e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610821945050505050565b005b610263600480360360208110156103b457600080fd5b50356001600160a01b0316610879565b610221600480360360608110156103da57600080fd5b506001600160a01b03813581169160208101359091169060400135610937565b61039c6109d4565b61040a610b00565b6040805160ff9092168252519081900360200190f35b6102216004803603604081101561043657600080fd5b506001600160a01b038135169060200135610b09565b61039c6004803603602081101561046257600080fd5b5035610bb7565b610263610bc4565b6102636004803603602081101561048757600080fd5b50356001600160a01b0316610bca565b61039c600480360360408110156104ad57600080fd5b506001600160a01b0381351690602001351515610be5565b61039c600480360360408110156104db57600080fd5b506001600160a01b038135169060200135610cb2565b610180610d48565b6102216004803603604081101561050f57600080fd5b506001600160a01b038135169060200135610da8565b6102216004803603604081101561053b57600080fd5b506001600160a01b038135169060200135610df1565b6102636004803603602081101561056757600080fd5b5035610e07565b6102216004803603606081101561058457600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156105b457600080fd5b8201836020820111156105c657600080fd5b803590602001918460018302840111640100000000831117156105e857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e21945050505050565b610631610f6c565b604080516001600160a01b039092168252519081900360200190f35b6102636004803603604081101561066357600080fd5b506001600160a01b0381358116916020013516610f7b565b6102636004803603602081101561069157600080fd5b50356001600160a01b0316610fa6565b61039c600480360360408110156106b757600080fd5b506001600160a01b038135169060200135610fc8565b61039c600480360360208110156106e357600080fd5b50356001600160a01b0316611077565b60008054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b5050505050905090565b60006001600160a01b03831661079e57600080fd5b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60086020526000908152604090205460ff1681565b60055490565b805182511461082f57600080fd5b60005b82518110156108745761086c3384838151811061084b57fe5b602002602001015184848151811061085f57fe5b60200260200101516110fd565b600101610832565b505050565b6001600160a01b03811660009081526008602052604081205460ff16156108b957506001600160a01b0381166000908152600b6020526040902054610932565b6001600160a01b0382166000908152600a60205260408120546009546108e49163ffffffff6113d616565b905060006109016108f485610fa6565b839063ffffffff6113e816565b6001600160a01b0385166000908152600b602052604090205490915061092d908263ffffffff61141316565b925050505b919050565b6001600160a01b038316600090815260046020908152604080832033845290915281205482111561096757600080fd5b6001600160a01b038416600090815260046020908152604080832033845290915290205461099b908363ffffffff6113d616565b6001600160a01b03851660009081526004602090815260408083203384529091529020556109ca8484846110fd565b5060019392505050565b6109dd33611422565b336000908152600b60205260409020548015801590610a0b5750306000908152600360205260409020548111155b610a1457600080fd5b336000908152600b60209081526040808320839055600390915281205490610a42828463ffffffff61141316565b3360009081526008602052604090205490915060ff16610a9857600754610a78610a6b84610e07565b829063ffffffff6113d616565b9050610a93610a8683610e07565b829063ffffffff61141316565b600755505b30600090815260036020526040902054610ab8908463ffffffff6113d616565b306000818152600360209081526040808320949094553380835291849020859055835187815293519193600080516020611573833981519152929081900390910190a3505050565b60025460ff1690565b60006001600160a01b038316610b1e57600080fd5b3360009081526004602090815260408083206001600160a01b0387168452909152902054610b52908363ffffffff61141316565b3360008181526004602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b610bc13382611459565b50565b60075481565b6001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610bfc57600080fd5b6001600160a01b038216301415610c1257600080fd5b6001600160a01b03821660009081526008602052604090205460ff1615158115151415610c3e57600080fd5b610c4782611422565b6001600160a01b0382166000908152600860205260409020805460ff191682151517905580610c9057610c8b610c7c83610fa6565b6007549063ffffffff61141316565b610cab565b610cab610c9c83610fa6565b6007549063ffffffff6113d616565b6007555050565b6001600160a01b0382166000908152600460209081526040808320338452909152902054811115610ce257600080fd5b6001600160a01b0382166000908152600460209081526040808320338452909152902054610d16908263ffffffff6113d616565b6001600160a01b0383166000908152600460209081526040808320338452909152902055610d448282611459565b5050565b60018054604080516020601f6002600019610100878916150201909516949094049384018190048102820181019092528281526060939092909183018282801561077f5780601f106107545761010080835404028352916020019161077f565b60006001600160a01b038316610dbd57600080fd5b3360009081526004602090815260408083206001600160a01b0387168452909152902054610b52908363ffffffff6113d616565b6000610dfe3384846110fd565b50600192915050565b600061080082670de0b6b3a764000063ffffffff61155d16565b3360008181526004602090815260408083206001600160a01b038816808552908352818420879055815187815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a3604051600160e01b638f4ffcb102815233600482018181526024830186905230604484018190526080606485019081528651608486015286516001600160a01b038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015610efb578181015183820152602001610ee3565b50505050905090810190601f168015610f285780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610f4a57600080fd5b505af1158015610f5e573d6000803e3d6000fd5b506001979650505050505050565b6006546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6001600160a01b03811660009081526003602052604081205461080090610e07565b6006546001600160a01b03163314610fdf57600080fd5b6001600160a01b038216301415610ff557600080fd5b60408051600160e01b63a9059cbb0281523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b15801561104757600080fd5b505af115801561105b573d6000803e3d6000fd5b505050506040513d602081101561107157600080fd5b50505050565b6006546001600160a01b0316331461108e57600080fd5b6001600160a01b0381166110a157600080fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831660009081526003602052604090205481111561112257600080fd5b6001600160a01b0382161580159061114357506001600160a01b0382163014155b61114c57600080fd5b61115583611422565b61115e82611422565b6000611182606461117684600563ffffffff6113e816565b9063ffffffff61155d16565b9050801580156111925750600082115b1561119b575060015b6001600160a01b038416600090815260036020526040812054906111c5828563ffffffff6113d616565b90506111d7848463ffffffff6113d616565b6001600160a01b038616600090815260036020526040812054919550611203828763ffffffff61141316565b6001600160a01b03808a166000818152600360209081526040808320899055938c168083529184902085905583518b8152935194955090939192600080516020611573833981519152929081900390910190a36007546001600160a01b03891660009081526008602052604090205460ff1661129657611285610a6b86610e07565b9050611293610a8685610e07565b90505b6001600160a01b03881660009081526008602052604090205460ff166112d3576112c2610a6b84610e07565b90506112d0610a8683610e07565b90505b600781905585811561138e5760006112f288600263ffffffff61155d16565b90506000611306828563ffffffff61155d16565b60095490915061131c908263ffffffff61141316565b6009553060009081526003602052604090205461133f908363ffffffff61141316565b306000818152600360209081526040918290209390935580518581529051919233926000805160206115738339815191529281900390910190a3611389838363ffffffff6113d616565b925050505b6005546113a1908263ffffffff6113d616565b60055560408051828152905160009133916000805160206115738339815191529181900360200190a350505050505050505050565b6000828211156113e257fe5b50900390565b6000826113f757506000610800565b8282028284828161140457fe5b041461140c57fe5b9392505050565b60008282018381101561140c57fe5b61142b81610879565b6001600160a01b039091166000908152600b6020908152604080832093909355600954600a90915291902055565b8061146357600080fd5b6001600160a01b03821660009081526003602052604090205481111561148857600080fd5b6001600160a01b038216600090815260036020526040812054906114b2828463ffffffff6113d616565b6001600160a01b03851660009081526003602052604090208190556005549091506114e3908463ffffffff6113d616565b6005556001600160a01b03841660009081526008602052604090205460ff1661152857600754611515610a6b84610e07565b9050611523610a8683610e07565b600755505b6040805184815290516000916001600160a01b038716916000805160206115738339815191529181900360200190a350505050565b60008082848161156957fe5b0494935050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820c4c88064a0a12f5eb84169fe0323bf4a59c6e1664941de162ecdd30c8c8676750029
0x60806040526000600555600060075560006009553480156200002057600080fd5b5060408051808201825260048082527f424f4c54000000000000000000000000000000000000000000000000000000006020808401828152855180870190965292855284015281519192916012916200007d9160009190620002b9565b50815162000093906001906020850190620002b9565b506002805460ff90921660ff19928316179055600680546001600160a01b03191633908117909155600081815260086020908152604080832080548616600190811790915530845292208054909416909117909255620001069350915069d3c21bcecceda1000000906200010c811b901c565b6200035e565b806200011757600080fd5b6001600160a01b038216600090815260036020908152604082205491906200014c90839085906200141362000251821b17901c565b6001600160a01b038516600090815260036020908152604090912082905560055491925062000187919085906200141362000251821b17901c565b6005556001600160a01b03841660009081526008602052604090205460ff166200020a57600754620001d9620001c48462000268602090811b901c565b826200029060201b620013d61790919060201c565b905062000205620001f0836200026860201b60201c565b826200025160201b620014131790919060201c565b600755505b6040805184815290516001600160a01b038616916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350505050565b6000828201838110156200026157fe5b9392505050565b60006200028a82670de0b6b3a7640000620002a3602090811b6200155d17901c565b92915050565b6000828211156200029d57fe5b50900390565b600080828481620002b057fe5b04949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002fc57805160ff19168380011785556200032c565b828001600101855582156200032c579182015b828111156200032c5782518255916020019190600101906200030f565b506200033a9291506200033e565b5090565b6200035b91905b808211156200033a576000815560010162000345565b90565b6115be806200036e6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063b1369e6a11610097578063dd62ed3e11610071578063dd62ed3e1461064d578063e1eae0b41461067b578063e49cb2fb146106a1578063f2fde38b146106cd57610173565b8063b1369e6a14610551578063cae9ca511461056e578063ce606ee01461062957610173565b806370a08231146104715780637964dd2b1461049757806379cc6790146104c557806395d89b41146104f1578063a457c2d7146104f9578063a9059cbb1461052557610173565b806323b872dd1161013057806323b872dd146103c457806329613086146103fa578063313ce56714610402578063395093511461042057806342966c681461044c5780634b56c39e1461046957610173565b806306fdde0314610178578063095ea7b3146101f55780630ccaa97e1461023557806318160ddd1461025b5780631e89d54514610275578063223d04171461039e575b600080fd5b6101806106f3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b038135169060200135610789565b604080519115158252519081900360200190f35b6102216004803603602081101561024b57600080fd5b50356001600160a01b0316610806565b61026361081b565b60408051918252519081900360200190f35b61039c6004803603604081101561028b57600080fd5b8101906020810181356401000000008111156102a657600080fd5b8201836020820111156102b857600080fd5b803590602001918460208302840111640100000000831117156102da57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561032a57600080fd5b82018360208201111561033c57600080fd5b8035906020019184602083028401116401000000008311171561035e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610821945050505050565b005b610263600480360360208110156103b457600080fd5b50356001600160a01b0316610879565b610221600480360360608110156103da57600080fd5b506001600160a01b03813581169160208101359091169060400135610937565b61039c6109d4565b61040a610b00565b6040805160ff9092168252519081900360200190f35b6102216004803603604081101561043657600080fd5b506001600160a01b038135169060200135610b09565b61039c6004803603602081101561046257600080fd5b5035610bb7565b610263610bc4565b6102636004803603602081101561048757600080fd5b50356001600160a01b0316610bca565b61039c600480360360408110156104ad57600080fd5b506001600160a01b0381351690602001351515610be5565b61039c600480360360408110156104db57600080fd5b506001600160a01b038135169060200135610cb2565b610180610d48565b6102216004803603604081101561050f57600080fd5b506001600160a01b038135169060200135610da8565b6102216004803603604081101561053b57600080fd5b506001600160a01b038135169060200135610df1565b6102636004803603602081101561056757600080fd5b5035610e07565b6102216004803603606081101561058457600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156105b457600080fd5b8201836020820111156105c657600080fd5b803590602001918460018302840111640100000000831117156105e857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e21945050505050565b610631610f6c565b604080516001600160a01b039092168252519081900360200190f35b6102636004803603604081101561066357600080fd5b506001600160a01b0381358116916020013516610f7b565b6102636004803603602081101561069157600080fd5b50356001600160a01b0316610fa6565b61039c600480360360408110156106b757600080fd5b506001600160a01b038135169060200135610fc8565b61039c600480360360208110156106e357600080fd5b50356001600160a01b0316611077565b60008054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b5050505050905090565b60006001600160a01b03831661079e57600080fd5b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60086020526000908152604090205460ff1681565b60055490565b805182511461082f57600080fd5b60005b82518110156108745761086c3384838151811061084b57fe5b602002602001015184848151811061085f57fe5b60200260200101516110fd565b600101610832565b505050565b6001600160a01b03811660009081526008602052604081205460ff16156108b957506001600160a01b0381166000908152600b6020526040902054610932565b6001600160a01b0382166000908152600a60205260408120546009546108e49163ffffffff6113d616565b905060006109016108f485610fa6565b839063ffffffff6113e816565b6001600160a01b0385166000908152600b602052604090205490915061092d908263ffffffff61141316565b925050505b919050565b6001600160a01b038316600090815260046020908152604080832033845290915281205482111561096757600080fd5b6001600160a01b038416600090815260046020908152604080832033845290915290205461099b908363ffffffff6113d616565b6001600160a01b03851660009081526004602090815260408083203384529091529020556109ca8484846110fd565b5060019392505050565b6109dd33611422565b336000908152600b60205260409020548015801590610a0b5750306000908152600360205260409020548111155b610a1457600080fd5b336000908152600b60209081526040808320839055600390915281205490610a42828463ffffffff61141316565b3360009081526008602052604090205490915060ff16610a9857600754610a78610a6b84610e07565b829063ffffffff6113d616565b9050610a93610a8683610e07565b829063ffffffff61141316565b600755505b30600090815260036020526040902054610ab8908463ffffffff6113d616565b306000818152600360209081526040808320949094553380835291849020859055835187815293519193600080516020611573833981519152929081900390910190a3505050565b60025460ff1690565b60006001600160a01b038316610b1e57600080fd5b3360009081526004602090815260408083206001600160a01b0387168452909152902054610b52908363ffffffff61141316565b3360008181526004602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b610bc13382611459565b50565b60075481565b6001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610bfc57600080fd5b6001600160a01b038216301415610c1257600080fd5b6001600160a01b03821660009081526008602052604090205460ff1615158115151415610c3e57600080fd5b610c4782611422565b6001600160a01b0382166000908152600860205260409020805460ff191682151517905580610c9057610c8b610c7c83610fa6565b6007549063ffffffff61141316565b610cab565b610cab610c9c83610fa6565b6007549063ffffffff6113d616565b6007555050565b6001600160a01b0382166000908152600460209081526040808320338452909152902054811115610ce257600080fd5b6001600160a01b0382166000908152600460209081526040808320338452909152902054610d16908263ffffffff6113d616565b6001600160a01b0383166000908152600460209081526040808320338452909152902055610d448282611459565b5050565b60018054604080516020601f6002600019610100878916150201909516949094049384018190048102820181019092528281526060939092909183018282801561077f5780601f106107545761010080835404028352916020019161077f565b60006001600160a01b038316610dbd57600080fd5b3360009081526004602090815260408083206001600160a01b0387168452909152902054610b52908363ffffffff6113d616565b6000610dfe3384846110fd565b50600192915050565b600061080082670de0b6b3a764000063ffffffff61155d16565b3360008181526004602090815260408083206001600160a01b038816808552908352818420879055815187815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a3604051600160e01b638f4ffcb102815233600482018181526024830186905230604484018190526080606485019081528651608486015286516001600160a01b038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015610efb578181015183820152602001610ee3565b50505050905090810190601f168015610f285780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610f4a57600080fd5b505af1158015610f5e573d6000803e3d6000fd5b506001979650505050505050565b6006546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6001600160a01b03811660009081526003602052604081205461080090610e07565b6006546001600160a01b03163314610fdf57600080fd5b6001600160a01b038216301415610ff557600080fd5b60408051600160e01b63a9059cbb0281523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b15801561104757600080fd5b505af115801561105b573d6000803e3d6000fd5b505050506040513d602081101561107157600080fd5b50505050565b6006546001600160a01b0316331461108e57600080fd5b6001600160a01b0381166110a157600080fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831660009081526003602052604090205481111561112257600080fd5b6001600160a01b0382161580159061114357506001600160a01b0382163014155b61114c57600080fd5b61115583611422565b61115e82611422565b6000611182606461117684600563ffffffff6113e816565b9063ffffffff61155d16565b9050801580156111925750600082115b1561119b575060015b6001600160a01b038416600090815260036020526040812054906111c5828563ffffffff6113d616565b90506111d7848463ffffffff6113d616565b6001600160a01b038616600090815260036020526040812054919550611203828763ffffffff61141316565b6001600160a01b03808a166000818152600360209081526040808320899055938c168083529184902085905583518b8152935194955090939192600080516020611573833981519152929081900390910190a36007546001600160a01b03891660009081526008602052604090205460ff1661129657611285610a6b86610e07565b9050611293610a8685610e07565b90505b6001600160a01b03881660009081526008602052604090205460ff166112d3576112c2610a6b84610e07565b90506112d0610a8683610e07565b90505b600781905585811561138e5760006112f288600263ffffffff61155d16565b90506000611306828563ffffffff61155d16565b60095490915061131c908263ffffffff61141316565b6009553060009081526003602052604090205461133f908363ffffffff61141316565b306000818152600360209081526040918290209390935580518581529051919233926000805160206115738339815191529281900390910190a3611389838363ffffffff6113d616565b925050505b6005546113a1908263ffffffff6113d616565b60055560408051828152905160009133916000805160206115738339815191529181900360200190a350505050505050505050565b6000828211156113e257fe5b50900390565b6000826113f757506000610800565b8282028284828161140457fe5b041461140c57fe5b9392505050565b60008282018381101561140c57fe5b61142b81610879565b6001600160a01b039091166000908152600b6020908152604080832093909355600954600a90915291902055565b8061146357600080fd5b6001600160a01b03821660009081526003602052604090205481111561148857600080fd5b6001600160a01b038216600090815260036020526040812054906114b2828463ffffffff6113d616565b6001600160a01b03851660009081526003602052604090208190556005549091506114e3908463ffffffff6113d616565b6005556001600160a01b03841660009081526008602052604090205460ff1661152857600754611515610a6b84610e07565b9050611523610a8683610e07565b600755505b6040805184815290516000916001600160a01b038716916000805160206115738339815191529181900360200190a350505050565b60008082848161156957fe5b0494935050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820c4c88064a0a12f5eb84169fe0323bf4a59c6e1664941de162ecdd30c8c8676750029