0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639557e0bb1161010f578063e064172e116100a2578063f165478311610071578063f165478314610861578063fab46d661461088f578063fb1677b1146108d3578063fdd1f986146108f9576101e5565b8063e064172e146107fd578063eae4c19f14610823578063ec5ffac21461082b578063ef1f966114610833576101e5565b8063ba7bffd3116100de578063ba7bffd31461075d578063cbe945dc14610783578063d98f233d146107a9578063da8be864146107d7576101e5565b80639557e0bb146106d3578063a590ae3614610701578063aed1ec7214610727578063afff33ef1461072f576101e5565b80635139a6c511610187578063719f308911610156578063719f30891461048357806384d57689146105425780638e49aa7a146105685780638f4ffcb114610610576101e5565b80635139a6c5146103d3578063525835f9146103ff5780635fce5b171461042557806370a082311461044b576101e5565b806320018d27116101c357806320018d271461032d57806321e1625e1461035b578063335e91a1146103875780634a1ce599146103ad576101e5565b806309055e90146101ea57806310a63ec0146102a957806314afd79e146102eb575b600080fd5b6102a76004803603608081101561020057600080fd5b8135916020810135916001600160a01b036040830135169190810190608081016060820135600160201b81111561023657600080fd5b82018360208201111561024857600080fd5b803590602001918460208302840111600160201b8311171561026957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610901945050505050565b005b6102d7600480360360408110156102bf57600080fd5b506001600160a01b0381358116916020013516610c7c565b604080519115158252519081900360200190f35b6103116004803603602081101561030157600080fd5b50356001600160a01b0316610c9b565b604080516001600160a01b039092168252519081900360200190f35b6102a76004803603604081101561034357600080fd5b506001600160a01b0381358116916020013516610cbf565b6102a76004803603604081101561037157600080fd5b506001600160a01b038135169060200135610d7b565b6102d76004803603602081101561039d57600080fd5b50356001600160a01b0316610f4a565b6102a7600480360360208110156103c357600080fd5b50356001600160a01b0316610fe7565b6102a7600480360360408110156103e957600080fd5b506001600160a01b0381351690602001356110af565b6102a76004803603602081101561041557600080fd5b50356001600160a01b0316611330565b6102a76004803603602081101561043b57600080fd5b50356001600160a01b031661155c565b6104716004803603602081101561046157600080fd5b50356001600160a01b0316611626565b60408051918252519081900360200190f35b6104a96004803603602081101561049957600080fd5b50356001600160a01b0316611648565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156104ed5781810151838201526020016104d5565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561052c578181015183820152602001610514565b5050505090500194505050505060405180910390f35b6102d76004803603602081101561055857600080fd5b50356001600160a01b0316611804565b6102a76004803603604081101561057e57600080fd5b81359190810190604081016020820135600160201b81111561059f57600080fd5b8201836020820111156105b157600080fd5b803590602001918460208302840111600160201b831117156105d257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061187b945050505050565b6102a76004803603608081101561062657600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b81111561065f57600080fd5b82018360208201111561067157600080fd5b803590602001918460018302840111600160201b8311171561069257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b99945050505050565b610471600480360360408110156106e957600080fd5b506001600160a01b0381358116916020013516611cbe565b6102a76004803603602081101561071757600080fd5b50356001600160a01b0316611d1d565b610471611e53565b6104716004803603604081101561074557600080fd5b506001600160a01b0381358116916020013516611e59565b6103116004803603602081101561077357600080fd5b50356001600160a01b0316611e9c565b6103116004803603602081101561079957600080fd5b50356001600160a01b0316611ebd565b6102a7600480360360408110156107bf57600080fd5b506001600160a01b0381358116916020013516611ef8565b6102a7600480360360208110156107ed57600080fd5b50356001600160a01b0316611f83565b6102a76004803603602081101561081357600080fd5b50356001600160a01b0316611f90565b610471612155565b61047161215b565b6102d76004803603604081101561084957600080fd5b506001600160a01b038135811691602001351661216f565b6102a76004803603604081101561087757600080fd5b506001600160a01b03813581169160200135166121b2565b6108b5600480360360208110156108a557600080fd5b50356001600160a01b0316612302565b60408051938452602084019290925282820152519081900360600190f35b610311600480360360208110156108e957600080fd5b50356001600160a01b0316612335565b610471612357565b3361090b81611804565b61094a576040805162461bcd60e51b815260206004820152601c602482015260008051602061382c833981519152604482015290519081900360640190fd5b60008061095633611ebd565b905060005b8451811015610bbf57600085828151811061097257fe5b6020908102919091018101516001600160a01b03808616600090815280845260408082209284168252919093529091205490915060ff166109eb576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b038116600090815260036020526040902054610a0d81612387565b610a4f576040805162461bcd60e51b815260206004820152600e60248201526d496e616374697665207374616b6560901b604482015290519081900360640190fd5b610a5a8282336123a0565b15610aa0576040805162461bcd60e51b815260206004820152601160248201527014dd185ad9481a5cc81c995b19585cd959607a1b604482015290519081900360640190fd5b6000610aab82612450565b90508a811015610b2f57610ac5868263ffffffff61245616565b9550610ad882600063ffffffff6124b016565b6001600160a01b038416600081815260036020908152604091829020939093558051848152905191927fc5c18d4a60510957a4dc6dbd6d40ecfcfa32ab9517528a6b4052729e48e183d392918290030190a2610bb4565b610b3f868c63ffffffff61245616565b9550610b61610b54828d63ffffffff6124cd16565b839063ffffffff6124b016565b6001600160a01b0384166000818152600360209081526040918290209390935580518e8152905191927fc5c18d4a60510957a4dc6dbd6d40ecfcfa32ab9517528a6b4052729e48e183d392918290030190a25b50505060010161095b565b506000610be387610bd785600563ffffffff61250f16565b9063ffffffff61250f16565b600654909150610c03906001600160a01b0316878363ffffffff61253216565b6006546001600160a01b03166342966c68610c24858463ffffffff6124cd16565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610c5a57600080fd5b505af1158015610c6e573d6000803e3d6000fd5b505050505050505050505050565b6000610c8661215b565b610c908484611cbe565b101590505b92915050565b6001600160a01b03808216600090815260036020526040902060010154165b919050565b6001600160a01b03828116600090815260036020526040902060010154163314610d21576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b0382811660008181526003602052604080822060010180546001600160a01b0319169486169485179055517f53c9cc0a3dd0a95beb5f7bf6f604aecacd38455e718ebce597fb058856166fef9190a35050565b33610d8581611804565b610dc4576040805162461bcd60e51b815260206004820152601c602482015260008051602061382c833981519152604482015290519081900360640190fd5b610dce833361216f565b610e10576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b038316600090815260036020526040902054610e3281612387565b610e74576040805162461bcd60e51b815260206004820152600e60248201526d496e616374697665207374616b6560901b604482015290519081900360640190fd5b610e7d81612589565b15610ec4576040805162461bcd60e51b8152602060048201526012602482015271556e64656c65676174696e67207374616b6560701b604482015290519081900360640190fd5b60408051630f5d13cd60e41b8152600a60048201526001600160a01b0386166024820152604481018590529051736c84a8f1c29108f47a79964b5fe888d4f4d0de409163f5d13cd0916064808301926000929190829003018186803b158015610f2c57600080fd5b505af4158015610f40573d6000803e3d6000fd5b5050505050505050565b604080516330f0ab4360e11b8152600a60048201526001600160a01b03831660248201523060448201529051600091736c84a8f1c29108f47a79964b5fe888d4f4d0de40916361e1568691606480820192602092909190829003018186803b158015610fb557600080fd5b505af4158015610fc9573d6000803e3d6000fd5b505050506040513d6020811015610fdf57600080fd5b505192915050565b610ff1813361216f565b611033576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b604080516301d7a26560e21b8152600a60048201526001600160a01b03831660248201529051736c84a8f1c29108f47a79964b5fe888d4f4d0de409163075e8994916044808301926000929190829003018186803b15801561109457600080fd5b505af41580156110a8573d6000803e3d6000fd5b5050505050565b336001600160a01b03831614806110e257506001600160a01b038281166000908152600360205260409020600101541633145b8061118157506007546040805163283338ed60e01b8152600960048201526001600160a01b0380861660248301529092166044830152517302612d20cc087670a959bb12ca3c5fd56c8a3db39163283338ed916064808301926020929190829003018186803b15801561115457600080fd5b505af4158015611168573d6000803e3d6000fd5b505050506040513d602081101561117e57600080fd5b50515b6111c3576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b03821660009081526003602052604090205442821080159061120557506112026005546111f6836125a9565b9063ffffffff61245616565b82115b61124a576040805162461bcd60e51b81526020600482015260116024820152700496e76616c69642074696d657374616d7607c1b604482015290519081900360640190fd5b6000611255826125b9565b905080158061126357508281115b806112775750336001600160a01b03851614155b6112c8576040805162461bcd60e51b815260206004820152601960248201527f4f70657261746f72206d6179206e6f7420706f7374706f6e6500000000000000604482015290519081900360640190fd5b6112d8828463ffffffff6125c616565b6001600160a01b038516600081815260036020908152604091829020939093558051868152905191927f4ae68879209bc4b489a38251122202a3653305e3d95a27baf7a5681410c90b3892918290030190a250505050565b6001600160a01b038116600090815260036020526040902054611352816125b9565b611395576040805162461bcd60e51b815260206004820152600f60248201526e139bdd081d5b99195b1959d85d1959608a1b604482015290519081900360640190fd5b61139e816125e3565b6113e4576040805162461bcd60e51b81526020600482015260126024820152715374696c6c20756e64656c65676174696e6760701b604482015290519081900360640190fd5b6113ed82610f4a565b1561142e576040805162461bcd60e51b815260206004820152600c60248201526b4c6f636b6564207374616b6560a01b604482015290519081900360640190fd5b600061143982612450565b6040805163b171f47b60e01b8152600b60048201526001600160a01b038616602482015290519192506114da917341c9b5639e3f2f6c61e9b78b2c6ff3746e79d91a9163b171f47b916044808301926020929190829003018186803b1580156114a157600080fd5b505af41580156114b5573d6000803e3d6000fd5b505050506040513d60208110156114cb57600080fd5b5051829063ffffffff61245616565b90506114ed82600063ffffffff6124b016565b6001600160a01b03808516600090815260036020526040902091825560019091015461151b9116848361261c565b604080516001600160a01b038516815290517fd8d7d3f648c98e58aaabbb17253dc4a04c610cf9d36f0a42400015b56d7410729181900360200190a1505050565b6001600160a01b038116600081815260036020908152604091829020546005548351630c17d33f60e31b8152600b600482015260248101959095526044850191909152606484015290517341c9b5639e3f2f6c61e9b78b2c6ff3746e79d91a926360be99f8926084808301939192829003018186803b1580156115de57600080fd5b505af41580156115f2573d6000803e3d6000fd5b505050506040513d602081101561160857600080fd5b50516001600160a01b03909116600090815260036020526040902055565b6001600160a01b038116600090815260036020526040812054610c9590612450565b60408051637b5e35e160e01b8152600a60048201526001600160a01b038316602482015290516060918291736c84a8f1c29108f47a79964b5fe888d4f4d0de4091637b5e35e1916044808301926000929190829003018186803b1580156116ae57600080fd5b505af41580156116c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160409081528110156116eb57600080fd5b8101908080516040519392919084600160201b82111561170a57600080fd5b90830190602082018581111561171f57600080fd5b82518660208202830111600160201b8211171561173b57600080fd5b82525081516020918201928201910280838360005b83811015611768578181015183820152602001611750565b5050505090500160405260200180516040519392919084600160201b82111561179057600080fd5b9083019060208201858111156117a557600080fd5b82518660208202830111600160201b821117156117c157600080fd5b82525081516020918201928201910280838360005b838110156117ee5781810151838201526020016117d6565b5050505090500160405250505091509150915091565b6002546000906001600160a01b03166384d5768961182184611ebd565b6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561186757600080fd5b505afa158015610fc9573d6000803e3d6000fd5b3361188581611804565b6118c4576040805162461bcd60e51b815260206004820152601c602482015260008051602061382c833981519152604482015290519081900360640190fd5b6000806118d033611ebd565b905060005b8451811015611b2c5760008582815181106118ec57fe5b6020908102919091018101516001600160a01b03808616600090815280845260408082209284168252919093529091205490915060ff16611965576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205461198781612387565b6119c9576040805162461bcd60e51b815260206004820152600e60248201526d496e616374697665207374616b6560901b604482015290519081900360640190fd5b6119d48282336123a0565b15611a1a576040805162461bcd60e51b815260206004820152601160248201527014dd185ad9481a5cc81c995b19585cd959607a1b604482015290519081900360640190fd5b6000611a2582612450565b905088811015611aa957611a3f868263ffffffff61245616565b9550611a5282600063ffffffff6124b016565b6001600160a01b038416600081815260036020908152604091829020939093558051848152905191927ff71d4eeef63c86ffc692e306c623b01b8373e091da8ee455aa0fe26305a4981c92918290030190a2611b21565b611ab9868a63ffffffff61245616565b9550611ace610b54828b63ffffffff6124cd16565b6001600160a01b0384166000818152600360209081526040918290209390935580518c8152905191927ff71d4eeef63c86ffc692e306c623b01b8373e091da8ee455aa0fe26305a4981c92918290030190a25b5050506001016118d5565b5060065460408051630852cd8d60e31b81526004810185905290516001600160a01b03909216916342966c689160248082019260009290919082900301818387803b158015611b7a57600080fd5b505af1158015611b8e573d6000803e3d6000fd5b505050505050505050565b6006546001600160a01b03838116911614611bf0576040805162461bcd60e51b81526020600482015260126024820152712ab73932b1b7b3b734bd32b2103a37b5b2b760711b604482015290519081900360640190fd5b603c81511015611c47576040805162461bcd60e51b815260206004820152601960248201527f436f727275707465642064656c65676174696f6e206461746100000000000000604482015290519081900360640190fd5b600654611c65906001600160a01b031685308663ffffffff61286916565b6000611c7882601463ffffffff6128c316565b6001600160a01b038116600090815260036020526040902054909150611c9d906125a9565b611cb257611cad85858385612925565b6110a8565b6110a885858385612cb9565b6001600160a01b038216600090815260036020526040812054611ce1848461216f565b8015611cf15750611cf181612387565b8015611d055750611d038482856123a0565b155b15611d1657611d1381612450565b91505b5092915050565b80611d2781611804565b611d66576040805162461bcd60e51b815260206004820152601c602482015260008051602061382c833981519152604482015290519081900360640190fd5b6040805163361c300d60e21b815233600482015290516001600160a01b0384169163d870c0349160248083019260209291908290030181600087803b158015611dae57600080fd5b505af1158015611dc2573d6000803e3d6000fd5b505050506040513d6020811015611dd857600080fd5b5051611e23576040805162461bcd60e51b8152602060048201526015602482015274155b9c9958dbd9db9a5e99590818db185a5b585b9d605a1b604482015290519081900360640190fd5b5033600090815260016020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60055481565b6001600160a01b038216600090815260036020526040812054611e7c848461216f565b8015611e8c5750611e8c81612387565b8015611d055750611d0381612589565b6001600160a01b039081166000908152600360205260409020600201541690565b6001600160a01b0380821660009081526001602052604081205490911680611ee85782915050610cba565b611ef181611ebd565b9392505050565b604080516318bc8f0160e01b8152600a60048201526001600160a01b038085166024830152831660448201523060648201529051736c84a8f1c29108f47a79964b5fe888d4f4d0de40916318bc8f01916084808301926000929190829003018186803b158015611f6757600080fd5b505af4158015611f7b573d6000803e3d6000fd5b505050505050565b611f8d81426110af565b50565b6001600160a01b038082166000908152600360205260409020600101541633811480611fc45750336001600160a01b038316145b8061206357506007546040805163283338ed60e01b8152600960048201526001600160a01b0380861660248301529092166044830152517302612d20cc087670a959bb12ca3c5fd56c8a3db39163283338ed916064808301926020929190829003018186803b15801561203657600080fd5b505af415801561204a573d6000803e3d6000fd5b505050506040513d602081101561206057600080fd5b50515b6120a5576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b0382166000908152600360205260409020546120c781612387565b1561210d576040805162461bcd60e51b8152602060048201526011602482015270496e697469616c697a6564207374616b6560781b604482015290519081900360640190fd5b600061211882612450565b905061212b82600063ffffffff6124b016565b6001600160a01b03851660009081526003602052604090205561214f83858361261c565b50505050565b60045481565b600061216a635ea79a7e6132e9565b905090565b600080600061217d84611ebd565b6001600160a01b039081168252602080830193909352604091820160009081209187168152925290205460ff16905092915050565b806121bc81611804565b6121fb576040805162461bcd60e51b815260206004820152601c602482015260008051602061382c833981519152604482015290519081900360640190fd5b3361220584612335565b6001600160a01b031614612260576040805162461bcd60e51b815260206004820152601760248201527f4e6f74206f70657261746f7220617574686f72697a6572000000000000000000604482015290519081900360640190fd5b816001600160a01b031661227383611ebd565b6001600160a01b0316146122ce576040805162461bcd60e51b815260206004820152601860248201527f44656c65676174656420617574686f7269747920757365640000000000000000604482015290519081900360640190fd5b506001600160a01b03908116600090815260208181526040808320949093168252929092529020805460ff19166001179055565b6001600160a01b0381166000908152600360205260408120548190819061232890613377565b9250925092509193909250565b6001600160a01b03908116600090815260036020819052604090912001541690565b60045460009061237090624f1a0063ffffffff61245616565b421061237f57624f1a0061216a565b506212750090565b60006123986005546111f6846125a9565b421192915050565b60006123ab836125e3565b8015612448575060408051636a1127cd60e11b8152600a60048201526001600160a01b038087166024830152841660448201529051736c84a8f1c29108f47a79964b5fe888d4f4d0de409163d4224f9a916064808301926020929190829003018186803b15801561241b57600080fd5b505af415801561242f573d6000803e3d6000fd5b505050506040513d602081101561244557600080fd5b50515b949350505050565b60801c90565b600082820183811015611ef1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000611ef1826124bf856125a9565b6124c8866125b9565b6133a3565b6000611ef183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613463565b6000611ef16064612526858563ffffffff6134fa16565b9063ffffffff61355316565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612584908490613595565b505050565b600080612595836125b9565b90508015801590611ef15750421192915050565b60401c67ffffffffffffffff1690565b67ffffffffffffffff1690565b6000611ef16125d484612450565b6125dd856125a9565b846133a3565b6000806125ef836125b9565b90508015801590611ef15750612613612606612357565b829063ffffffff61245616565b42119392505050565b6040805163ae4ae2db60e01b8152600960048201526001600160a01b038416602482015290517302612d20cc087670a959bb12ca3c5fd56c8a3db39163ae4ae2db916044808301926020929190829003018186803b15801561267d57600080fd5b505af4158015612691573d6000803e3d6000fd5b505050506040513d60208110156126a757600080fd5b50511561284c5760065460085460408051632a43ab6560e11b8152600960048201526001600160a01b03868116602483015291519382169363cae9ca519390921691859187917302612d20cc087670a959bb12ca3c5fd56c8a3db39163548756ca916044808301926020929190829003018186803b15801561272857600080fd5b505af415801561273c573d6000803e3d6000fd5b505050506040513d602081101561275257600080fd5b5051604080516001600160a01b03938416602082810191909152818301939093528151808203830181526060808301938490526001600160e01b031960e08a901b16909352938616606482019081526084820186905260a48201928352845160c48301528451909360e49092019185019080838360005b838110156127e15781810151838201526020016127c9565b50505050905090810190601f16801561280e5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561282f57600080fd5b505af1158015612843573d6000803e3d6000fd5b50505050612584565b600654612584906001600160a01b0316848363ffffffff61253216565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261214f908590613595565b60006014820182811180156128d9575080845110155b6129145760405162461bcd60e51b81526004018080602001828103825260218152602001806137ea6021913960400191505060405180910390fd5b50500160200151600160601b900490565b61292d61215b565b831015612981576040805162461bcd60e51b815260206004820152601b60248201527f4c657373207468616e20746865206d696e696d756d207374616b650000000000604482015290519081900360640190fd5b6000612993828263ffffffff6128c316565b905060006129a883602863ffffffff6128c316565b905060405180608001604052806129c1874260006133a3565b8152602001876001600160a01b03168152602001836001600160a01b03168152602001826001600160a01b031681525060036000866001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555090505060097302612d20cc087670a959bb12ca3c5fd56c8a3db363adb3e4c59091600760009054906101000a90046001600160a01b0316600860009054906101000a90046001600160a01b03168a89896040518763ffffffff1660e01b815260040180878152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612ba9578181015183820152602001612b91565b50505050905090810190601f168015612bd65780820380516001836020036101000a031916815260200191505b50975050505050505050604080518083038186803b158015612bf757600080fd5b505af4158015612c0b573d6000803e3d6000fd5b505050506040513d6040811015612c2157600080fd5b50506040516001600160a01b0380861691908816907f83455714d30de40b1396056e44480074130d2ac0a2a7bd7cb1dfcd6d619e172490600090a3806001600160a01b0316826001600160a01b0316856001600160a01b03167f175a298cbf37645403c82164f78783abb2869a97657c362fe979817d3184cc51886040518082815260200191505060405180910390a4505050505050565b60075460408051632496bfb360e01b81526001600160a01b0385811660048301529151600093838916931691632496bfb3916024808301926020929190829003018186803b158015612d0a57600080fd5b505afa158015612d1e573d6000803e3d6000fd5b505050506040513d6020811015612d3457600080fd5b50516001600160a01b03161480612d5857506008546001600160a01b038681169116145b6040805163ae4ae2db60e01b8152600960048201526001600160a01b038616602482015290519192507302612d20cc087670a959bb12ca3c5fd56c8a3db39163ae4ae2db91604480820192602092909190829003018186803b158015612dbd57600080fd5b505af4158015612dd1573d6000803e3d6000fd5b505050506040513d6020811015612de757600080fd5b5051156130a95780612e37576040805162461bcd60e51b8152602060048201526014602482015273135d5cdd08189948199c9bdb48184819dc985b9d60621b604482015290519081900360640190fd5b60408051632a43ab6560e11b8152600960048201526001600160a01b038516602482015290516000917302612d20cc087670a959bb12ca3c5fd56c8a3db39163548756ca91604480820192602092909190829003018186803b158015612e9c57600080fd5b505af4158015612eb0573d6000803e3d6000fd5b505050506040513d6020811015612ec657600080fd5b81019080805190602001909291905050509050600060097302612d20cc087670a959bb12ca3c5fd56c8a3db363adb3e4c59091600760009054906101000a90046001600160a01b0316600860009054906101000a90046001600160a01b03168b8a8a6040518763ffffffff1660e01b815260040180878152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612fda578181015183820152602001612fc2565b50505050905090810190601f1680156130075780820380516001836020036101000a031916815260200191505b50975050505050505050604080518083038186803b15801561302857600080fd5b505af415801561303c573d6000803e3d6000fd5b505050506040513d604081101561305257600080fd5b506020015190508181146130a2576040805162461bcd60e51b8152602060048201526012602482015271139bdd081d1a19481cd85b594819dc985b9d60721b604482015290519081900360640190fd5b5050613165565b80156130fc576040805162461bcd60e51b815260206004820152601860248201527f4d757374206e6f742062652066726f6d2061206772616e740000000000000000604482015290519081900360640190fd5b6001600160a01b03838116600090815260036020526040902060010154811690861614613165576040805162461bcd60e51b81526020600482015260126024820152712737ba103a34329039b0b6b29037bbb732b960711b604482015290519081900360640190fd5b6001600160a01b03831660009081526003602052604090205461318781612387565b61324f5760085460408051631fd456e360e31b8152600b6004820152602481018890526001600160a01b038088166044830152606482018590529092166084830152517341c9b5639e3f2f6c61e9b78b2c6ff3746e79d91a9163fea2b7189160a4808301926020929190829003018186803b15801561320557600080fd5b505af4158015613219573d6000803e3d6000fd5b505050506040513d602081101561322f57600080fd5b50516001600160a01b038516600090815260036020526040902055611f7b565b60085460408051637ecd2c7960e11b8152600b6004820152602481018890526001600160a01b038088166044830152606482018590529092166084830152517341c9b5639e3f2f6c61e9b78b2c6ff3746e79d91a9163fd9a58f29160a4808301926000929190829003018186803b1580156132c957600080fd5b505af41580156132dd573d6000803e3d6000fd5b50505050505050505050565b60006132ff826303c2670063ffffffff61245616565b4210156133665760006133316303c26700612526613323428763ffffffff6124cd16565b600a9063ffffffff6134fa16565b905061335e613347600a8363ffffffff6124cd16565b69021e19e0c9bab24000009063ffffffff6134fa16565b915050610cba565b5069021e19e0c9bab2400000919050565b600080600061338584612450565b9250613390846125a9565b915061339b846125b9565b929491935050565b60006fffffffffffffffffffffffffffffffff8411156133fd576040805162461bcd60e51b815260206004820152601060248201526f75696e74313238206f766572666c6f7760801b604482015290519081900360640190fd5b67ffffffffffffffff838317111561344e576040805162461bcd60e51b815260206004820152600f60248201526e75696e743634206f766572666c6f7760881b604482015290519081900360640190fd5b50608083901b604083901b1781179392505050565b600081848411156134f25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156134b757818101518382015260200161349f565b50505050905090810190601f1680156134e45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008261350957506000610c95565b8282028284828161351657fe5b0414611ef15760405162461bcd60e51b815260040180806020018281038252602181526020018061380b6021913960400191505060405180910390fd5b6000611ef183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061374d565b6135a7826001600160a01b03166137b2565b6135f8576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106136365780518252601f199092019160209182019101613617565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613698576040519150601f19603f3d011682016040523d82523d6000602084013e61369d565b606091505b5091509150816136f4576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561214f5780806020019051602081101561371057600080fd5b505161214f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061384c602a913960400191505060405180910390fd5b6000818361379c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156134b757818101518382015260200161349f565b5060008385816137a857fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590612448575014159291505056fe4164647265737320636f6e76657273696f6e206f7574206f6620626f756e64732e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f70657261746f7220636f6e747261637420756e617070726f766564000000005361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8f698fd9c40d2bef8bc1343900a5c659788e6a72c8b7b2059933b549070887764736f6c63430005110032
0x608060405234801561001057600080fd5b5060405161395f38038061395f833981810160405260a081101561003357600080fd5b50805160208201516040830151606084015160809094015160028054600680546001600160a01b039788166001600160a01b03199182161790915560078054968816968216969096179095556008805494871694861694909417909355939094169082168117909116179055600555426004556138aa806100b56000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639557e0bb1161010f578063e064172e116100a2578063f165478311610071578063f165478314610861578063fab46d661461088f578063fb1677b1146108d3578063fdd1f986146108f9576101e5565b8063e064172e146107fd578063eae4c19f14610823578063ec5ffac21461082b578063ef1f966114610833576101e5565b8063ba7bffd3116100de578063ba7bffd31461075d578063cbe945dc14610783578063d98f233d146107a9578063da8be864146107d7576101e5565b80639557e0bb146106d3578063a590ae3614610701578063aed1ec7214610727578063afff33ef1461072f576101e5565b80635139a6c511610187578063719f308911610156578063719f30891461048357806384d57689146105425780638e49aa7a146105685780638f4ffcb114610610576101e5565b80635139a6c5146103d3578063525835f9146103ff5780635fce5b171461042557806370a082311461044b576101e5565b806320018d27116101c357806320018d271461032d57806321e1625e1461035b578063335e91a1146103875780634a1ce599146103ad576101e5565b806309055e90146101ea57806310a63ec0146102a957806314afd79e146102eb575b600080fd5b6102a76004803603608081101561020057600080fd5b8135916020810135916001600160a01b036040830135169190810190608081016060820135600160201b81111561023657600080fd5b82018360208201111561024857600080fd5b803590602001918460208302840111600160201b8311171561026957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610901945050505050565b005b6102d7600480360360408110156102bf57600080fd5b506001600160a01b0381358116916020013516610c7c565b604080519115158252519081900360200190f35b6103116004803603602081101561030157600080fd5b50356001600160a01b0316610c9b565b604080516001600160a01b039092168252519081900360200190f35b6102a76004803603604081101561034357600080fd5b506001600160a01b0381358116916020013516610cbf565b6102a76004803603604081101561037157600080fd5b506001600160a01b038135169060200135610d7b565b6102d76004803603602081101561039d57600080fd5b50356001600160a01b0316610f4a565b6102a7600480360360208110156103c357600080fd5b50356001600160a01b0316610fe7565b6102a7600480360360408110156103e957600080fd5b506001600160a01b0381351690602001356110af565b6102a76004803603602081101561041557600080fd5b50356001600160a01b0316611330565b6102a76004803603602081101561043b57600080fd5b50356001600160a01b031661155c565b6104716004803603602081101561046157600080fd5b50356001600160a01b0316611626565b60408051918252519081900360200190f35b6104a96004803603602081101561049957600080fd5b50356001600160a01b0316611648565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156104ed5781810151838201526020016104d5565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561052c578181015183820152602001610514565b5050505090500194505050505060405180910390f35b6102d76004803603602081101561055857600080fd5b50356001600160a01b0316611804565b6102a76004803603604081101561057e57600080fd5b81359190810190604081016020820135600160201b81111561059f57600080fd5b8201836020820111156105b157600080fd5b803590602001918460208302840111600160201b831117156105d257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061187b945050505050565b6102a76004803603608081101561062657600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b81111561065f57600080fd5b82018360208201111561067157600080fd5b803590602001918460018302840111600160201b8311171561069257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b99945050505050565b610471600480360360408110156106e957600080fd5b506001600160a01b0381358116916020013516611cbe565b6102a76004803603602081101561071757600080fd5b50356001600160a01b0316611d1d565b610471611e53565b6104716004803603604081101561074557600080fd5b506001600160a01b0381358116916020013516611e59565b6103116004803603602081101561077357600080fd5b50356001600160a01b0316611e9c565b6103116004803603602081101561079957600080fd5b50356001600160a01b0316611ebd565b6102a7600480360360408110156107bf57600080fd5b506001600160a01b0381358116916020013516611ef8565b6102a7600480360360208110156107ed57600080fd5b50356001600160a01b0316611f83565b6102a76004803603602081101561081357600080fd5b50356001600160a01b0316611f90565b610471612155565b61047161215b565b6102d76004803603604081101561084957600080fd5b506001600160a01b038135811691602001351661216f565b6102a76004803603604081101561087757600080fd5b506001600160a01b03813581169160200135166121b2565b6108b5600480360360208110156108a557600080fd5b50356001600160a01b0316612302565b60408051938452602084019290925282820152519081900360600190f35b610311600480360360208110156108e957600080fd5b50356001600160a01b0316612335565b610471612357565b3361090b81611804565b61094a576040805162461bcd60e51b815260206004820152601c602482015260008051602061382c833981519152604482015290519081900360640190fd5b60008061095633611ebd565b905060005b8451811015610bbf57600085828151811061097257fe5b6020908102919091018101516001600160a01b03808616600090815280845260408082209284168252919093529091205490915060ff166109eb576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b038116600090815260036020526040902054610a0d81612387565b610a4f576040805162461bcd60e51b815260206004820152600e60248201526d496e616374697665207374616b6560901b604482015290519081900360640190fd5b610a5a8282336123a0565b15610aa0576040805162461bcd60e51b815260206004820152601160248201527014dd185ad9481a5cc81c995b19585cd959607a1b604482015290519081900360640190fd5b6000610aab82612450565b90508a811015610b2f57610ac5868263ffffffff61245616565b9550610ad882600063ffffffff6124b016565b6001600160a01b038416600081815260036020908152604091829020939093558051848152905191927fc5c18d4a60510957a4dc6dbd6d40ecfcfa32ab9517528a6b4052729e48e183d392918290030190a2610bb4565b610b3f868c63ffffffff61245616565b9550610b61610b54828d63ffffffff6124cd16565b839063ffffffff6124b016565b6001600160a01b0384166000818152600360209081526040918290209390935580518e8152905191927fc5c18d4a60510957a4dc6dbd6d40ecfcfa32ab9517528a6b4052729e48e183d392918290030190a25b50505060010161095b565b506000610be387610bd785600563ffffffff61250f16565b9063ffffffff61250f16565b600654909150610c03906001600160a01b0316878363ffffffff61253216565b6006546001600160a01b03166342966c68610c24858463ffffffff6124cd16565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610c5a57600080fd5b505af1158015610c6e573d6000803e3d6000fd5b505050505050505050505050565b6000610c8661215b565b610c908484611cbe565b101590505b92915050565b6001600160a01b03808216600090815260036020526040902060010154165b919050565b6001600160a01b03828116600090815260036020526040902060010154163314610d21576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b0382811660008181526003602052604080822060010180546001600160a01b0319169486169485179055517f53c9cc0a3dd0a95beb5f7bf6f604aecacd38455e718ebce597fb058856166fef9190a35050565b33610d8581611804565b610dc4576040805162461bcd60e51b815260206004820152601c602482015260008051602061382c833981519152604482015290519081900360640190fd5b610dce833361216f565b610e10576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b038316600090815260036020526040902054610e3281612387565b610e74576040805162461bcd60e51b815260206004820152600e60248201526d496e616374697665207374616b6560901b604482015290519081900360640190fd5b610e7d81612589565b15610ec4576040805162461bcd60e51b8152602060048201526012602482015271556e64656c65676174696e67207374616b6560701b604482015290519081900360640190fd5b60408051630f5d13cd60e41b8152600a60048201526001600160a01b0386166024820152604481018590529051736c84a8f1c29108f47a79964b5fe888d4f4d0de409163f5d13cd0916064808301926000929190829003018186803b158015610f2c57600080fd5b505af4158015610f40573d6000803e3d6000fd5b5050505050505050565b604080516330f0ab4360e11b8152600a60048201526001600160a01b03831660248201523060448201529051600091736c84a8f1c29108f47a79964b5fe888d4f4d0de40916361e1568691606480820192602092909190829003018186803b158015610fb557600080fd5b505af4158015610fc9573d6000803e3d6000fd5b505050506040513d6020811015610fdf57600080fd5b505192915050565b610ff1813361216f565b611033576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b604080516301d7a26560e21b8152600a60048201526001600160a01b03831660248201529051736c84a8f1c29108f47a79964b5fe888d4f4d0de409163075e8994916044808301926000929190829003018186803b15801561109457600080fd5b505af41580156110a8573d6000803e3d6000fd5b5050505050565b336001600160a01b03831614806110e257506001600160a01b038281166000908152600360205260409020600101541633145b8061118157506007546040805163283338ed60e01b8152600960048201526001600160a01b0380861660248301529092166044830152517302612d20cc087670a959bb12ca3c5fd56c8a3db39163283338ed916064808301926020929190829003018186803b15801561115457600080fd5b505af4158015611168573d6000803e3d6000fd5b505050506040513d602081101561117e57600080fd5b50515b6111c3576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b03821660009081526003602052604090205442821080159061120557506112026005546111f6836125a9565b9063ffffffff61245616565b82115b61124a576040805162461bcd60e51b81526020600482015260116024820152700496e76616c69642074696d657374616d7607c1b604482015290519081900360640190fd5b6000611255826125b9565b905080158061126357508281115b806112775750336001600160a01b03851614155b6112c8576040805162461bcd60e51b815260206004820152601960248201527f4f70657261746f72206d6179206e6f7420706f7374706f6e6500000000000000604482015290519081900360640190fd5b6112d8828463ffffffff6125c616565b6001600160a01b038516600081815260036020908152604091829020939093558051868152905191927f4ae68879209bc4b489a38251122202a3653305e3d95a27baf7a5681410c90b3892918290030190a250505050565b6001600160a01b038116600090815260036020526040902054611352816125b9565b611395576040805162461bcd60e51b815260206004820152600f60248201526e139bdd081d5b99195b1959d85d1959608a1b604482015290519081900360640190fd5b61139e816125e3565b6113e4576040805162461bcd60e51b81526020600482015260126024820152715374696c6c20756e64656c65676174696e6760701b604482015290519081900360640190fd5b6113ed82610f4a565b1561142e576040805162461bcd60e51b815260206004820152600c60248201526b4c6f636b6564207374616b6560a01b604482015290519081900360640190fd5b600061143982612450565b6040805163b171f47b60e01b8152600b60048201526001600160a01b038616602482015290519192506114da917341c9b5639e3f2f6c61e9b78b2c6ff3746e79d91a9163b171f47b916044808301926020929190829003018186803b1580156114a157600080fd5b505af41580156114b5573d6000803e3d6000fd5b505050506040513d60208110156114cb57600080fd5b5051829063ffffffff61245616565b90506114ed82600063ffffffff6124b016565b6001600160a01b03808516600090815260036020526040902091825560019091015461151b9116848361261c565b604080516001600160a01b038516815290517fd8d7d3f648c98e58aaabbb17253dc4a04c610cf9d36f0a42400015b56d7410729181900360200190a1505050565b6001600160a01b038116600081815260036020908152604091829020546005548351630c17d33f60e31b8152600b600482015260248101959095526044850191909152606484015290517341c9b5639e3f2f6c61e9b78b2c6ff3746e79d91a926360be99f8926084808301939192829003018186803b1580156115de57600080fd5b505af41580156115f2573d6000803e3d6000fd5b505050506040513d602081101561160857600080fd5b50516001600160a01b03909116600090815260036020526040902055565b6001600160a01b038116600090815260036020526040812054610c9590612450565b60408051637b5e35e160e01b8152600a60048201526001600160a01b038316602482015290516060918291736c84a8f1c29108f47a79964b5fe888d4f4d0de4091637b5e35e1916044808301926000929190829003018186803b1580156116ae57600080fd5b505af41580156116c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160409081528110156116eb57600080fd5b8101908080516040519392919084600160201b82111561170a57600080fd5b90830190602082018581111561171f57600080fd5b82518660208202830111600160201b8211171561173b57600080fd5b82525081516020918201928201910280838360005b83811015611768578181015183820152602001611750565b5050505090500160405260200180516040519392919084600160201b82111561179057600080fd5b9083019060208201858111156117a557600080fd5b82518660208202830111600160201b821117156117c157600080fd5b82525081516020918201928201910280838360005b838110156117ee5781810151838201526020016117d6565b5050505090500160405250505091509150915091565b6002546000906001600160a01b03166384d5768961182184611ebd565b6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561186757600080fd5b505afa158015610fc9573d6000803e3d6000fd5b3361188581611804565b6118c4576040805162461bcd60e51b815260206004820152601c602482015260008051602061382c833981519152604482015290519081900360640190fd5b6000806118d033611ebd565b905060005b8451811015611b2c5760008582815181106118ec57fe5b6020908102919091018101516001600160a01b03808616600090815280845260408082209284168252919093529091205490915060ff16611965576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205461198781612387565b6119c9576040805162461bcd60e51b815260206004820152600e60248201526d496e616374697665207374616b6560901b604482015290519081900360640190fd5b6119d48282336123a0565b15611a1a576040805162461bcd60e51b815260206004820152601160248201527014dd185ad9481a5cc81c995b19585cd959607a1b604482015290519081900360640190fd5b6000611a2582612450565b905088811015611aa957611a3f868263ffffffff61245616565b9550611a5282600063ffffffff6124b016565b6001600160a01b038416600081815260036020908152604091829020939093558051848152905191927ff71d4eeef63c86ffc692e306c623b01b8373e091da8ee455aa0fe26305a4981c92918290030190a2611b21565b611ab9868a63ffffffff61245616565b9550611ace610b54828b63ffffffff6124cd16565b6001600160a01b0384166000818152600360209081526040918290209390935580518c8152905191927ff71d4eeef63c86ffc692e306c623b01b8373e091da8ee455aa0fe26305a4981c92918290030190a25b5050506001016118d5565b5060065460408051630852cd8d60e31b81526004810185905290516001600160a01b03909216916342966c689160248082019260009290919082900301818387803b158015611b7a57600080fd5b505af1158015611b8e573d6000803e3d6000fd5b505050505050505050565b6006546001600160a01b03838116911614611bf0576040805162461bcd60e51b81526020600482015260126024820152712ab73932b1b7b3b734bd32b2103a37b5b2b760711b604482015290519081900360640190fd5b603c81511015611c47576040805162461bcd60e51b815260206004820152601960248201527f436f727275707465642064656c65676174696f6e206461746100000000000000604482015290519081900360640190fd5b600654611c65906001600160a01b031685308663ffffffff61286916565b6000611c7882601463ffffffff6128c316565b6001600160a01b038116600090815260036020526040902054909150611c9d906125a9565b611cb257611cad85858385612925565b6110a8565b6110a885858385612cb9565b6001600160a01b038216600090815260036020526040812054611ce1848461216f565b8015611cf15750611cf181612387565b8015611d055750611d038482856123a0565b155b15611d1657611d1381612450565b91505b5092915050565b80611d2781611804565b611d66576040805162461bcd60e51b815260206004820152601c602482015260008051602061382c833981519152604482015290519081900360640190fd5b6040805163361c300d60e21b815233600482015290516001600160a01b0384169163d870c0349160248083019260209291908290030181600087803b158015611dae57600080fd5b505af1158015611dc2573d6000803e3d6000fd5b505050506040513d6020811015611dd857600080fd5b5051611e23576040805162461bcd60e51b8152602060048201526015602482015274155b9c9958dbd9db9a5e99590818db185a5b585b9d605a1b604482015290519081900360640190fd5b5033600090815260016020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60055481565b6001600160a01b038216600090815260036020526040812054611e7c848461216f565b8015611e8c5750611e8c81612387565b8015611d055750611d0381612589565b6001600160a01b039081166000908152600360205260409020600201541690565b6001600160a01b0380821660009081526001602052604081205490911680611ee85782915050610cba565b611ef181611ebd565b9392505050565b604080516318bc8f0160e01b8152600a60048201526001600160a01b038085166024830152831660448201523060648201529051736c84a8f1c29108f47a79964b5fe888d4f4d0de40916318bc8f01916084808301926000929190829003018186803b158015611f6757600080fd5b505af4158015611f7b573d6000803e3d6000fd5b505050505050565b611f8d81426110af565b50565b6001600160a01b038082166000908152600360205260409020600101541633811480611fc45750336001600160a01b038316145b8061206357506007546040805163283338ed60e01b8152600960048201526001600160a01b0380861660248301529092166044830152517302612d20cc087670a959bb12ca3c5fd56c8a3db39163283338ed916064808301926020929190829003018186803b15801561203657600080fd5b505af415801561204a573d6000803e3d6000fd5b505050506040513d602081101561206057600080fd5b50515b6120a5576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b0382166000908152600360205260409020546120c781612387565b1561210d576040805162461bcd60e51b8152602060048201526011602482015270496e697469616c697a6564207374616b6560781b604482015290519081900360640190fd5b600061211882612450565b905061212b82600063ffffffff6124b016565b6001600160a01b03851660009081526003602052604090205561214f83858361261c565b50505050565b60045481565b600061216a635ea79a7e6132e9565b905090565b600080600061217d84611ebd565b6001600160a01b039081168252602080830193909352604091820160009081209187168152925290205460ff16905092915050565b806121bc81611804565b6121fb576040805162461bcd60e51b815260206004820152601c602482015260008051602061382c833981519152604482015290519081900360640190fd5b3361220584612335565b6001600160a01b031614612260576040805162461bcd60e51b815260206004820152601760248201527f4e6f74206f70657261746f7220617574686f72697a6572000000000000000000604482015290519081900360640190fd5b816001600160a01b031661227383611ebd565b6001600160a01b0316146122ce576040805162461bcd60e51b815260206004820152601860248201527f44656c65676174656420617574686f7269747920757365640000000000000000604482015290519081900360640190fd5b506001600160a01b03908116600090815260208181526040808320949093168252929092529020805460ff19166001179055565b6001600160a01b0381166000908152600360205260408120548190819061232890613377565b9250925092509193909250565b6001600160a01b03908116600090815260036020819052604090912001541690565b60045460009061237090624f1a0063ffffffff61245616565b421061237f57624f1a0061216a565b506212750090565b60006123986005546111f6846125a9565b421192915050565b60006123ab836125e3565b8015612448575060408051636a1127cd60e11b8152600a60048201526001600160a01b038087166024830152841660448201529051736c84a8f1c29108f47a79964b5fe888d4f4d0de409163d4224f9a916064808301926020929190829003018186803b15801561241b57600080fd5b505af415801561242f573d6000803e3d6000fd5b505050506040513d602081101561244557600080fd5b50515b949350505050565b60801c90565b600082820183811015611ef1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000611ef1826124bf856125a9565b6124c8866125b9565b6133a3565b6000611ef183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613463565b6000611ef16064612526858563ffffffff6134fa16565b9063ffffffff61355316565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612584908490613595565b505050565b600080612595836125b9565b90508015801590611ef15750421192915050565b60401c67ffffffffffffffff1690565b67ffffffffffffffff1690565b6000611ef16125d484612450565b6125dd856125a9565b846133a3565b6000806125ef836125b9565b90508015801590611ef15750612613612606612357565b829063ffffffff61245616565b42119392505050565b6040805163ae4ae2db60e01b8152600960048201526001600160a01b038416602482015290517302612d20cc087670a959bb12ca3c5fd56c8a3db39163ae4ae2db916044808301926020929190829003018186803b15801561267d57600080fd5b505af4158015612691573d6000803e3d6000fd5b505050506040513d60208110156126a757600080fd5b50511561284c5760065460085460408051632a43ab6560e11b8152600960048201526001600160a01b03868116602483015291519382169363cae9ca519390921691859187917302612d20cc087670a959bb12ca3c5fd56c8a3db39163548756ca916044808301926020929190829003018186803b15801561272857600080fd5b505af415801561273c573d6000803e3d6000fd5b505050506040513d602081101561275257600080fd5b5051604080516001600160a01b03938416602082810191909152818301939093528151808203830181526060808301938490526001600160e01b031960e08a901b16909352938616606482019081526084820186905260a48201928352845160c48301528451909360e49092019185019080838360005b838110156127e15781810151838201526020016127c9565b50505050905090810190601f16801561280e5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561282f57600080fd5b505af1158015612843573d6000803e3d6000fd5b50505050612584565b600654612584906001600160a01b0316848363ffffffff61253216565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261214f908590613595565b60006014820182811180156128d9575080845110155b6129145760405162461bcd60e51b81526004018080602001828103825260218152602001806137ea6021913960400191505060405180910390fd5b50500160200151600160601b900490565b61292d61215b565b831015612981576040805162461bcd60e51b815260206004820152601b60248201527f4c657373207468616e20746865206d696e696d756d207374616b650000000000604482015290519081900360640190fd5b6000612993828263ffffffff6128c316565b905060006129a883602863ffffffff6128c316565b905060405180608001604052806129c1874260006133a3565b8152602001876001600160a01b03168152602001836001600160a01b03168152602001826001600160a01b031681525060036000866001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555090505060097302612d20cc087670a959bb12ca3c5fd56c8a3db363adb3e4c59091600760009054906101000a90046001600160a01b0316600860009054906101000a90046001600160a01b03168a89896040518763ffffffff1660e01b815260040180878152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612ba9578181015183820152602001612b91565b50505050905090810190601f168015612bd65780820380516001836020036101000a031916815260200191505b50975050505050505050604080518083038186803b158015612bf757600080fd5b505af4158015612c0b573d6000803e3d6000fd5b505050506040513d6040811015612c2157600080fd5b50506040516001600160a01b0380861691908816907f83455714d30de40b1396056e44480074130d2ac0a2a7bd7cb1dfcd6d619e172490600090a3806001600160a01b0316826001600160a01b0316856001600160a01b03167f175a298cbf37645403c82164f78783abb2869a97657c362fe979817d3184cc51886040518082815260200191505060405180910390a4505050505050565b60075460408051632496bfb360e01b81526001600160a01b0385811660048301529151600093838916931691632496bfb3916024808301926020929190829003018186803b158015612d0a57600080fd5b505afa158015612d1e573d6000803e3d6000fd5b505050506040513d6020811015612d3457600080fd5b50516001600160a01b03161480612d5857506008546001600160a01b038681169116145b6040805163ae4ae2db60e01b8152600960048201526001600160a01b038616602482015290519192507302612d20cc087670a959bb12ca3c5fd56c8a3db39163ae4ae2db91604480820192602092909190829003018186803b158015612dbd57600080fd5b505af4158015612dd1573d6000803e3d6000fd5b505050506040513d6020811015612de757600080fd5b5051156130a95780612e37576040805162461bcd60e51b8152602060048201526014602482015273135d5cdd08189948199c9bdb48184819dc985b9d60621b604482015290519081900360640190fd5b60408051632a43ab6560e11b8152600960048201526001600160a01b038516602482015290516000917302612d20cc087670a959bb12ca3c5fd56c8a3db39163548756ca91604480820192602092909190829003018186803b158015612e9c57600080fd5b505af4158015612eb0573d6000803e3d6000fd5b505050506040513d6020811015612ec657600080fd5b81019080805190602001909291905050509050600060097302612d20cc087670a959bb12ca3c5fd56c8a3db363adb3e4c59091600760009054906101000a90046001600160a01b0316600860009054906101000a90046001600160a01b03168b8a8a6040518763ffffffff1660e01b815260040180878152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612fda578181015183820152602001612fc2565b50505050905090810190601f1680156130075780820380516001836020036101000a031916815260200191505b50975050505050505050604080518083038186803b15801561302857600080fd5b505af415801561303c573d6000803e3d6000fd5b505050506040513d604081101561305257600080fd5b506020015190508181146130a2576040805162461bcd60e51b8152602060048201526012602482015271139bdd081d1a19481cd85b594819dc985b9d60721b604482015290519081900360640190fd5b5050613165565b80156130fc576040805162461bcd60e51b815260206004820152601860248201527f4d757374206e6f742062652066726f6d2061206772616e740000000000000000604482015290519081900360640190fd5b6001600160a01b03838116600090815260036020526040902060010154811690861614613165576040805162461bcd60e51b81526020600482015260126024820152712737ba103a34329039b0b6b29037bbb732b960711b604482015290519081900360640190fd5b6001600160a01b03831660009081526003602052604090205461318781612387565b61324f5760085460408051631fd456e360e31b8152600b6004820152602481018890526001600160a01b038088166044830152606482018590529092166084830152517341c9b5639e3f2f6c61e9b78b2c6ff3746e79d91a9163fea2b7189160a4808301926020929190829003018186803b15801561320557600080fd5b505af4158015613219573d6000803e3d6000fd5b505050506040513d602081101561322f57600080fd5b50516001600160a01b038516600090815260036020526040902055611f7b565b60085460408051637ecd2c7960e11b8152600b6004820152602481018890526001600160a01b038088166044830152606482018590529092166084830152517341c9b5639e3f2f6c61e9b78b2c6ff3746e79d91a9163fd9a58f29160a4808301926000929190829003018186803b1580156132c957600080fd5b505af41580156132dd573d6000803e3d6000fd5b50505050505050505050565b60006132ff826303c2670063ffffffff61245616565b4210156133665760006133316303c26700612526613323428763ffffffff6124cd16565b600a9063ffffffff6134fa16565b905061335e613347600a8363ffffffff6124cd16565b69021e19e0c9bab24000009063ffffffff6134fa16565b915050610cba565b5069021e19e0c9bab2400000919050565b600080600061338584612450565b9250613390846125a9565b915061339b846125b9565b929491935050565b60006fffffffffffffffffffffffffffffffff8411156133fd576040805162461bcd60e51b815260206004820152601060248201526f75696e74313238206f766572666c6f7760801b604482015290519081900360640190fd5b67ffffffffffffffff838317111561344e576040805162461bcd60e51b815260206004820152600f60248201526e75696e743634206f766572666c6f7760881b604482015290519081900360640190fd5b50608083901b604083901b1781179392505050565b600081848411156134f25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156134b757818101518382015260200161349f565b50505050905090810190601f1680156134e45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008261350957506000610c95565b8282028284828161351657fe5b0414611ef15760405162461bcd60e51b815260040180806020018281038252602181526020018061380b6021913960400191505060405180910390fd5b6000611ef183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061374d565b6135a7826001600160a01b03166137b2565b6135f8576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106136365780518252601f199092019160209182019101613617565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613698576040519150601f19603f3d011682016040523d82523d6000602084013e61369d565b606091505b5091509150816136f4576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561214f5780806020019051602081101561371057600080fd5b505161214f5760405162461bcd60e51b815260040180806020018281038252602a81526020018061384c602a913960400191505060405180910390fd5b6000818361379c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156134b757818101518382015260200161349f565b5060008385816137a857fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590612448575014159291505056fe4164647265737320636f6e76657273696f6e206f7574206f6620626f756e64732e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f70657261746f7220636f6e747261637420756e617070726f766564000000005361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8f698fd9c40d2bef8bc1343900a5c659788e6a72c8b7b2059933b549070887764736f6c6343000511003200000000000000000000000085eee30c52b0b379b046fb0f85f4f3dc3009afec000000000000000000000000175989c71fd023d580c65f5dc214002687ff88b7000000000000000000000000da534b567099ca481384133bc121d5843f6813650000000000000000000000001a9589f56c969d6b0d3787ea02322476ead3fb05000000000000000000000000000000000000000000000000000000000000a8c0