//
0x608060408190527f656970313936372e676f7665726e61626c65496e69742e73746f7261676500009052614712806100386000396000f3fe608060405234801561001057600080fd5b50600436106102a05760003560e01c80637d7c2a1c11610167578063a8c62e76116100ce578063c4d66de811610087578063c4d66de814610858578063dd62ed3e1461087e578063eda199aa146108ac578063f0cf91e7146108b4578063f2768c1e146108da578063f77c4791146108e2576102a0565b8063a8c62e76146107ef578063a9059cbb146107f7578063aa04462514610823578063b592c3901461082b578063b6b55f2514610833578063c2baf35614610850576102a0565b806395d89b411161012057806395d89b411461075d5780639a508c8e146107655780639d16acfd1461076d578063a457c2d714610798578063a5b1a24d146107c4578063a8365693146107e7576102a0565b80637d7c2a1c146106bd57806382de9c1b146106c5578063853828b6146106cd5780638cb1d67f146106d55780638fc1708c146106fb5780639137c1a714610737576102a0565b806333a100ca1161020b57806353ceb01c116101c457806353ceb01c1461066f5780635aa6e675146106775780635fe51e6d1461067f5780636f307dc31461068757806370a082311461068f57806377c7b8fc146106b5576102a0565b806333a100ca1461059d57806336efd16f146105c357806339509351146105ef57806345ff4c801461061b5780634af1758b1461065f5780634fa5d85414610667576102a0565b80631624f6c61161025d5780631624f6c6146103ee57806318160ddd1461051c5780631bf8e7be1461052457806323b872dd1461052c5780632e1a7d4d14610562578063313ce5671461057f576102a0565b806306fdde03146102a5578063095ea7b31461032257806309ff18f0146103625780630a6bbeb3146103865780630ad2239d146103ae5780630c80447a146103c8575b600080fd5b6102ad6108ea565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102e75781810151838201526020016102cf565b50505050905090810190601f1680156103145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61034e6004803603604081101561033857600080fd5b506001600160a01b038135169060200135610981565b604080519115158252519081900360200190f35b61036a61099f565b604080516001600160a01b039092168252519081900360200190f35b6103ac6004803603602081101561039c57600080fd5b50356001600160a01b03166109d9565b005b6103b6610ba3565b60408051918252519081900360200190f35b6103ac600480360360208110156103de57600080fd5b50356001600160a01b0316610bd6565b6103ac6004803603606081101561040457600080fd5b810190602081018135600160201b81111561041e57600080fd5b82018360208201111561043057600080fd5b803590602001918460018302840111600160201b8311171561045157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111600160201b831117156104d657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff169150610d089050565b6103b6610de4565b6103b6610dea565b61034e6004803603606081101561054257600080fd5b506001600160a01b03813581169160208101359091169060400135610e96565b6103ac6004803603602081101561057857600080fd5b5035610f23565b61058761117a565b6040805160ff9092168252519081900360200190f35b6103ac600480360360208110156105b357600080fd5b50356001600160a01b0316611183565b6103ac600480360360408110156105d957600080fd5b50803590602001356001600160a01b0316611611565b61034e6004803603604081101561060557600080fd5b506001600160a01b0381351690602001356116ee565b6103ac600480360360c081101561063157600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a00135611742565b6103b6611834565b6103ac611874565b6103b6611a8c565b61036a611abd565b61036a611b30565b61036a611b61565b6103b6600480360360208110156106a557600080fd5b50356001600160a01b0316611b8e565b6103b6611bad565b6103ac611be7565b6103b6611d4d565b6103ac611d8d565b6103b6600480360360208110156106eb57600080fd5b50356001600160a01b0316611f89565b6103ac6004803603608081101561071157600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611fbe565b6103ac6004803603602081101561074d57600080fd5b50356001600160a01b0316612523565b6102ad612648565b6103ac6126a9565b610775612794565b6040805192151583526001600160a01b0390911660208301528051918290030190f35b61034e600480360360408110156107ae57600080fd5b506001600160a01b0381351690602001356127e0565b6103ac600480360360408110156107da57600080fd5b508035906020013561284e565b6103b66129b5565b61036a6129ef565b61034e6004803603604081101561080d57600080fd5b506001600160a01b038135169060200135612a1a565b6103b6612a2e565b6103b6612a63565b6103ac6004803603602081101561084957600080fd5b5035612b3c565b6103b6612c15565b6103ac6004803603602081101561086e57600080fd5b50356001600160a01b0316612c74565b6103b66004803603604081101561089457600080fd5b506001600160a01b0381358116916020013516612d1f565b6103ac612d4a565b61034e600480360360208110156108ca57600080fd5b50356001600160a01b0316612eb2565b6103b6612f13565b61036a612f53565b60688054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109765780601f1061094b57610100808354040283529160200191610976565b820191906000526020600020905b81548152906001019060200180831161095957829003601f168201915b505050505090505b90565b600061099561098e612f95565b8484612f99565b5060015b92915050565b60006109d4604051806040016040528060128152602001713732bc3a24b6b83632b6b2b73a30ba34b7b760711b815250613085565b905090565b6109e1613116565b6001600160a01b031663b429afeb336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610a3657600080fd5b505afa158015610a4a573d6000803e3d6000fd5b505050506040513d6020811015610a6057600080fd5b505180610af25750610a70613116565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610ac557600080fd5b505afa158015610ad9573d6000803e3d6000fd5b505050506040513d6020811015610aef57600080fd5b50515b610b2d5760405162461bcd60e51b81526004018080602001828103825260398152602001806144516039913960400191505060405180910390fd5b6000610b47610b3a610ba3565b429063ffffffff61313b16565b9050610b528161319c565b610b5b826131d0565b604080516001600160a01b03841681526020810183905281517f7d5e1cfe55788983acd19d248da36a27c9413e8e43445ed36a76ae0e741a04ed929181900390910190a15050565b60006109d46040518060400160405280601081526020016f737472617465677954696d654c6f636b60801b815250613200565b610bde613116565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610c3357600080fd5b505afa158015610c47573d6000803e3d6000fd5b505050506040513d6020811015610c5d57600080fd5b5051610cad576040805162461bcd60e51b815260206004820152601a602482015279476f7665726e61626c653a204e6f7420676f7665726e616e636560301b604482015290519081900360640190fd5b610cb68161328a565b610cc9610cc4610b3a6129b5565b6132be565b604080516001600160a01b038316815290517fa4b6f8e310d460919a08867e3c80c66bc3bb13f125bff205f83e60daf1ee82e99181900360200190a150565b600054610100900460ff1680610d215750610d216132fd565b80610d2f575060005460ff16155b610d6a5760405162461bcd60e51b815260040180806020018281038252602e815260200180614504602e913960400191505060405180910390fd5b600054610100900460ff16158015610d95576000805460ff1961ff0019909116610100171660011790555b8351610da890606890602087019061423d565b508251610dbc90606990602086019061423d565b50606a805460ff191660ff84161790558015610dde576000805461ff00191690555b50505050565b60355490565b600080610df56129ef565b6001600160a01b03161415610e1357610e0c612c15565b905061097e565b6109d4610e1e6129ef565b6001600160a01b03166345d01e4a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5657600080fd5b505afa158015610e6a573d6000803e3d6000fd5b505050506040513d6020811015610e8057600080fd5b5051610e8a612c15565b9063ffffffff61313b16565b6000610ea3848484613303565b610f1984610eaf612f95565b610f14856040518060600160405280602881526020016144dc602891396001600160a01b038a16600090815260346020526040812090610eed612f95565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61346116565b612f99565b5060019392505050565b6000610f2d610de4565b11610f7f576040805162461bcd60e51b815260206004820152601a60248201527f5661756c743a205661756c7420686173206e6f20736861726573000000000000604482015290519081900360640190fd5b60008111610fbe5760405162461bcd60e51b815260040180806020018281038252602c8152602001806145bf602c913960400191505060405180910390fd5b6000610fc8610de4565b9050610fd433836134f8565b6000610ffe82610ff285610fe6610dea565b9063ffffffff6135f416565b9063ffffffff61364d16565b9050611008612c15565b81111561111c57818314156110765761101f6129ef565b6001600160a01b031663bfd131f16040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561105957600080fd5b505af115801561106d573d6000803e3d6000fd5b505050506110f9565b6000611090611083612c15565b839063ffffffff61368f16565b905061109a6129ef565b6001600160a01b031663ce8c42e8826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156110df57600080fd5b505af11580156110f3573d6000803e3d6000fd5b50505050505b61111961110c83610ff286610fe6610dea565b611114612c15565b6136d1565b90505b61113f3382611129611b61565b6001600160a01b0316919063ffffffff6136e716565b60408051828152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a2505050565b606a5460ff1690565b61118b613116565b6001600160a01b031663b429afeb336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156111e057600080fd5b505afa1580156111f4573d6000803e3d6000fd5b505050506040513d602081101561120a57600080fd5b50518061129c575061121a613116565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d602081101561129957600080fd5b50515b6112d75760405162461bcd60e51b81526004018080602001828103825260398152602001806144516039913960400191505060405180910390fd5b6112e081612eb2565b61131b5760405162461bcd60e51b81526004018080602001828103825260418152602001806143516041913960600191505060405180910390fd5b6001600160a01b0381166113605760405162461bcd60e51b81526004018080602001828103825260248152602001806143b46024913960400191505060405180910390fd5b611368611b61565b6001600160a01b0316816001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156113aa57600080fd5b505afa1580156113be573d6000803e3d6000fd5b505050506040513d60208110156113d457600080fd5b50516001600160a01b03161461141b5760405162461bcd60e51b81526004018080602001828103825260368152602001806142f96036913960400191505060405180910390fd5b306001600160a01b0316816001600160a01b031663fbfa77cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561145e57600080fd5b505afa158015611472573d6000803e3d6000fd5b505050506040513d602081101561148857600080fd5b50516001600160a01b0316146114cf5760405162461bcd60e51b815260040180806020018281038252603181526020018061448a6031913960400191505060405180910390fd5b7f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5816114f96129ef565b604080516001600160a01b03938416815291909216602082015281519081900390910190a16115266129ef565b6001600160a01b0316816001600160a01b0316146116065760006115486129ef565b6001600160a01b0316146115dc576115816115616129ef565b600061156b611b61565b6001600160a01b0316919063ffffffff61373e16565b6115896129ef565b6001600160a01b031663bfd131f16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156115c357600080fd5b505af11580156115d7573d6000803e3d6000fd5b505050505b6115e581613851565b6115f06115616129ef565b6116066115fb6129ef565b60001961156b611b61565b61160e612d4a565b50565b333214806116a45750611622612f53565b6001600160a01b0316639b19251a336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561167757600080fd5b505afa15801561168b573d6000803e3d6000fd5b505050506040513d60208110156116a157600080fd5b50515b6116df5760405162461bcd60e51b815260040180806020018281038252602d815260200180614615602d913960400191505060405180910390fd5b6116ea82338361387b565b5050565b60006109956116fb612f95565b84610f14856034600061170c612f95565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61313b16565b600054610100900460ff168061175b575061175b6132fd565b80611769575060005460ff16155b6117a45760405162461bcd60e51b815260040180806020018281038252602e815260200180614504602e913960400191505060405180910390fd5b600054610100900460ff161580156117cf576000805460ff1961ff0019909116610100171660011790555b6117d887613aa5565b6117e186613ad1565b6117ea85613b10565b6117f384613b4f565b6117fc83613b7f565b61180582613bb8565b61180f600061319c565b61181960006131d0565b801561182b576000805461ff00191690555b50505050505050565b60006109d46040518060400160405280601e81526020017f7661756c744672616374696f6e546f496e766573744e756d657261746f720000815250613200565b600061187e6129ef565b6001600160a01b031614156118da576040805162461bcd60e51b815260206004820152601f60248201527f5661756c743a205374726174656779206d75737420626520646566696e656400604482015290519081900360640190fd5b6118e2613116565b6001600160a01b031663b429afeb336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561193757600080fd5b505afa15801561194b573d6000803e3d6000fd5b505050506040513d602081101561196157600080fd5b5051806119f35750611971613116565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119c657600080fd5b505afa1580156119da573d6000803e3d6000fd5b505050506040513d60208110156119f057600080fd5b50515b611a2e5760405162461bcd60e51b81526004018080602001828103825260398152602001806144516039913960400191505060405180910390fd5b611a36613bea565b611a3e6129ef565b6001600160a01b0316634fa5d8546040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a7857600080fd5b505af1158015610dde573d6000803e3d6000fd5b60006109d46040518060400160405280600e81526020016d1d5b99195c9b1e5a5b99d55b9a5d60921b815250613200565b6000611ac7613116565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b158015611aff57600080fd5b505afa158015611b13573d6000803e3d6000fd5b505050506040513d6020811015611b2957600080fd5b5051905090565b60006109d46040518060400160405280600e81526020016d667574757265537472617465677960901b815250613085565b60006109d46040518060400160405280600a815260200169756e6465726c79696e6760b01b815250613085565b6001600160a01b0381166000908152603360205260409020545b919050565b6000611bb7610de4565b15611bdf57611bda611bc7610de4565b610ff2611bd2610dea565b610fe6611a8c565b6109d4565b6109d4611a8c565b611bef613116565b6001600160a01b031663b429afeb336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611c4457600080fd5b505afa158015611c58573d6000803e3d6000fd5b505050506040513d6020811015611c6e57600080fd5b505180611d005750611c7e613116565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611cd357600080fd5b505afa158015611ce7573d6000803e3d6000fd5b505050506040513d6020811015611cfd57600080fd5b50515b611d3b5760405162461bcd60e51b81526004018080602001828103825260398152602001806144516039913960400191505060405180910390fd5b611d43611d8d565b611d4b613bea565b565b60006109d46040518060400160405280601b81526020017f6e657874496d706c656d656e746174696f6e54696d657374616d700000000000815250613200565b611d95613116565b6001600160a01b031663b429afeb336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611dea57600080fd5b505afa158015611dfe573d6000803e3d6000fd5b505050506040513d6020811015611e1457600080fd5b505180611ea65750611e24613116565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611e7957600080fd5b505afa158015611e8d573d6000803e3d6000fd5b505050506040513d6020811015611ea357600080fd5b50515b611ee15760405162461bcd60e51b81526004018080602001828103825260398152602001806144516039913960400191505060405180910390fd5b6000611eeb6129ef565b6001600160a01b03161415611f47576040805162461bcd60e51b815260206004820152601f60248201527f5661756c743a205374726174656779206d75737420626520646566696e656400604482015290519081900360640190fd5b611f4f6129ef565b6001600160a01b031663bfd131f16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a7857600080fd5b6000611f93610de4565b611f9f57506000611ba8565b610999611faa610de4565b610ff2611fb685611b8e565b610fe6610dea565b600054610100900460ff1680611fd75750611fd76132fd565b80611fe5575060005460ff16155b6120205760405162461bcd60e51b815260040180806020018281038252602e815260200180614504602e913960400191505060405180910390fd5b600054610100900460ff1615801561204b576000805460ff1961ff0019909116610100171660011790555b8183111561208a5760405162461bcd60e51b81526004018080602001828103825260238152602001806145786023913960400191505060405180910390fd5b816120dc576040805162461bcd60e51b815260206004820152601960248201527f5661756c743a2043616e6e6f7420646976696465206279203000000000000000604482015290519081900360640190fd5b61247d846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801561211857600080fd5b505afa15801561212c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561215557600080fd5b8101908080516040519392919084600160201b82111561217457600080fd5b90830190602082018581111561218957600080fd5b8251600160201b8111828201881017156121a257600080fd5b82525081516020918201929091019080838360005b838110156121cf5781810151838201526020016121b7565b50505050905090810190601f1680156121fc5780820380516001836020036101000a031916815260200191505b50604052505050604051602001808066026a4a726a0ac160cd1b81525060070182805190602001908083835b602083106122475780518252601f199092019160209182019101612228565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052856001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156122b457600080fd5b505afa1580156122c8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156122f157600080fd5b8101908080516040519392919084600160201b82111561231057600080fd5b90830190602082018581111561232557600080fd5b8251600160201b81118282018810171561233e57600080fd5b82525081516020918201929091019080838360005b8381101561236b578181015183820152602001612353565b50505050905090810190601f1680156123985780820380516001836020036101000a031916815260200191505b506040525050506040516020018080620dac2f60eb1b81525060030182805190602001908083835b602083106123df5780518252601f1990920191602091820191016123c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561244c57600080fd5b505afa158015612460573d6000803e3d6000fd5b505050506040513d602081101561247657600080fd5b5051610d08565b61248685612c74565b6000846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156124c157600080fd5b505afa1580156124d5573d6000803e3d6000fd5b505050506040513d60208110156124eb57600080fd5b505160ff16600a0a905061a8c080612507878787868580611742565b505050801561251c576000805461ff00191690555b5050505050565b61252b613116565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561258057600080fd5b505afa158015612594573d6000803e3d6000fd5b505050506040513d60208110156125aa57600080fd5b50516125fa576040805162461bcd60e51b815260206004820152601a602482015279476f7665726e61626c653a204e6f7420676f7665726e616e636560301b604482015290519081900360640190fd5b6001600160a01b03811661263f5760405162461bcd60e51b815260040180806020018281038252602a8152602001806143fe602a913960400191505060405180910390fd5b61160e81613cac565b60698054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109765780601f1061094b57610100808354040283529160200191610976565b6126b1613116565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561270657600080fd5b505afa15801561271a573d6000803e3d6000fd5b505050506040513d602081101561273057600080fd5b5051612780576040805162461bcd60e51b815260206004820152601a602482015279476f7665726e61626c653a204e6f7420676f7665726e616e636560301b604482015290519081900360640190fd5b61278a600061328a565b611d4b60006132be565b60008061279f611d4d565b158015906127b357506127b0611d4d565b42115b80156127d0575060006127c461099f565b6001600160a01b031614155b6127d861099f565b915091509091565b60006109956127ed612f95565b84610f14856040518060600160405280602581526020016146b96025913960346000612817612f95565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61346116565b612856613116565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156128ab57600080fd5b505afa1580156128bf573d6000803e3d6000fd5b505050506040513d60208110156128d557600080fd5b5051612925576040805162461bcd60e51b815260206004820152601a602482015279476f7665726e61626c653a204e6f7420676f7665726e616e636560301b604482015290519081900360640190fd5b600081116129645760405162461bcd60e51b81526004018080602001828103825260298152602001806144286029913960400191505060405180910390fd5b808211156129a35760405162461bcd60e51b81526004018080602001828103825260418152602001806146786041913960600191505060405180910390fd5b6129ac82613ad1565b6116ea81613b10565b60006109d4604051806040016040528060178152602001766e657874496d706c656d656e746174696f6e44656c617960481b815250613200565b60006109d460405180604001604052806008815260200167737472617465677960c01b815250613085565b6000610995612a27612f95565b8484613303565b60006109d460405180604001604052806012815260200171737472617465677955706461746554696d6560701b815250613200565b600080612a7c612a71612f13565b610ff2611fb6611834565b90506000612a886129ef565b6001600160a01b03166345d01e4a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612ac057600080fd5b505afa158015612ad4573d6000803e3d6000fd5b505050506040513d6020811015612aea57600080fd5b50519050818110612b005760009250505061097e565b6000612b12838363ffffffff61368f16565b9050612b1c612c15565b811115612b3057612b2b612c15565b612b32565b805b935050505061097e565b33321480612bcf5750612b4d612f53565b6001600160a01b0316639b19251a336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612ba257600080fd5b505afa158015612bb6573d6000803e3d6000fd5b505050506040513d6020811015612bcc57600080fd5b50515b612c0a5760405162461bcd60e51b815260040180806020018281038252602d815260200180614615602d913960400191505060405180910390fd5b61160e81333361387b565b6000612c1f611b61565b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611aff57600080fd5b600054610100900460ff1680612c8d5750612c8d6132fd565b80612c9b575060005460ff16155b612cd65760405162461bcd60e51b815260040180806020018281038252602e815260200180614504602e913960400191505060405180910390fd5b600054610100900460ff16158015612d01576000805460ff1961ff0019909116610100171660011790555b612d0a82613cd0565b80156116ea576000805461ff00191690555050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b612d52613116565b6001600160a01b031663b429afeb336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612da757600080fd5b505afa158015612dbb573d6000803e3d6000fd5b505050506040513d6020811015612dd157600080fd5b505180612e635750612de1613116565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612e3657600080fd5b505afa158015612e4a573d6000803e3d6000fd5b505050506040513d6020811015612e6057600080fd5b50515b612e9e5760405162461bcd60e51b81526004018080602001828103825260398152602001806144516039913960400191505060405180910390fd5b612ea8600061319c565b611d4b60006131d0565b600080612ebd6129ef565b6001600160a01b031614806109995750612ed5611b30565b6001600160a01b0316826001600160a01b0316148015612efb5750612ef8612a2e565b42115b801561099957506000612f0c612a2e565b1192915050565b60006109d46040518060400160405280602081526020017f7661756c744672616374696f6e546f496e7665737444656e6f6d696e61746f72815250613200565b6000612f5d613116565b6001600160a01b031663f77c47916040518163ffffffff1660e01b815260040160206040518083038186803b158015611aff57600080fd5b3390565b6001600160a01b038316612fde5760405162461bcd60e51b815260040180806020018281038252602481526020018061459b6024913960400191505060405180910390fd5b6001600160a01b0382166130235760405162461bcd60e51b81526004018080602001828103825260228152602001806143926022913960400191505060405180910390fd5b6001600160a01b03808416600081815260346020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000609e6000836040516020018082805190602001908083835b602083106130be5780518252601f19909201916020918201910161309f565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528452815191810191909120865285019590955292909201600020546001600160a01b031695945050505050565b7fa7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dc5490565b600082820183811015613195576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b61160e60405180604001604052806012815260200171737472617465677955706461746554696d6560701b81525082613d66565b61160e6040518060400160405280600e81526020016d667574757265537472617465677960901b81525082613def565b6000609d6000836040516020018082805190602001908083835b602083106132395780518252601f19909201916020918201910161321a565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001208152602001908152602001600020549050919050565b61160e604051806040016040528060128152602001713732bc3a24b6b83632b6b2b73a30ba34b7b760711b81525082613def565b61160e6040518060400160405280601b81526020017f6e657874496d706c656d656e746174696f6e54696d657374616d70000000000081525082613d66565b303b1590565b6001600160a01b0383166133485760405162461bcd60e51b81526004018080602001828103825260258152602001806145536025913960400191505060405180910390fd5b6001600160a01b03821661338d5760405162461bcd60e51b81526004018080602001828103825260238152602001806142d66023913960400191505060405180910390fd5b6133d0816040518060600160405280602681526020016143d8602691396001600160a01b038616600090815260336020526040902054919063ffffffff61346116565b6001600160a01b038085166000908152603360205260408082209390935590841681522054613405908263ffffffff61313b16565b6001600160a01b0380841660008181526033602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156134f05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156134b557818101518382015260200161349d565b50505050905090810190601f1680156134e25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03821661353d5760405162461bcd60e51b81526004018080602001828103825260218152602001806145326021913960400191505060405180910390fd5b6135808160405180606001604052806022815260200161432f602291396001600160a01b038516600090815260336020526040902054919063ffffffff61346116565b6001600160a01b0383166000908152603360205260409020556035546135ac908263ffffffff61368f16565b6035556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60008261360357506000610999565b8282028284828161361057fe5b04146131955760405162461bcd60e51b81526004018080602001828103825260218152602001806144bb6021913960400191505060405180910390fd5b600061319583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e98565b600061319583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613461565b60008183106136e05781613195565b5090919050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052613739908490613efd565b505050565b8015806137c4575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561379657600080fd5b505afa1580156137aa573d6000803e3d6000fd5b505050506040513d60208110156137c057600080fd5b5051155b6137ff5760405162461bcd60e51b81526004018080602001828103825260368152602001806146426036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052613739908490613efd565b61160e60405180604001604052806008815260200167737472617465677960c01b81525082613def565b600083116138d0576040805162461bcd60e51b815260206004820152601760248201527f5661756c743a2043616e6e6f74206465706f7369742030000000000000000000604482015290519081900360640190fd5b6001600160a01b03811661392b576040805162461bcd60e51b815260206004820152601d60248201527f5661756c743a20486f6c646572206d75737420626520646566696e6564000000604482015290519081900360640190fd5b60006139356129ef565b6001600160a01b0316146139f65761394b6129ef565b6001600160a01b031663c2a2a07b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561398357600080fd5b505afa158015613997573d6000803e3d6000fd5b505050506040513d60208110156139ad57600080fd5b50516139f6576040805162461bcd60e51b81526020600482015260136024820152722b30bab63a1d102a37b79036bab1b41030b93160691b604482015290519081900360640190fd5b6000613a00610de4565b15613a2d57613a28613a10610dea565b610ff2613a1b610de4565b879063ffffffff6135f416565b613a2f565b835b9050613a3b82826140b5565b613a60833086613a49611b61565b6001600160a01b031692919063ffffffff6141a716565b6040805185815290516001600160a01b038416917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a250505050565b61160e6040518060400160405280600a815260200169756e6465726c79696e6760b01b81525082613def565b61160e6040518060400160405280601e81526020017f7661756c744672616374696f6e546f496e766573744e756d657261746f72000081525082613d66565b61160e6040518060400160405280602081526020017f7661756c744672616374696f6e546f496e7665737444656e6f6d696e61746f7281525082613d66565b61160e6040518060400160405280600e81526020016d1d5b99195c9b1e5a5b99d55b9a5d60921b81525082613d66565b61160e604051806040016040528060178152602001766e657874496d706c656d656e746174696f6e44656c617960481b81525082613d66565b61160e6040518060400160405280601081526020016f737472617465677954696d654c6f636b60801b81525082613d66565b6000613bf46129ef565b6001600160a01b03161415613c50576040805162461bcd60e51b815260206004820152601f60248201527f5661756c743a205374726174656779206d75737420626520646566696e656400604482015290519081900360640190fd5b6000613c5a612a63565b9050801561160e57613c76613c6d6129ef565b82611129611b61565b6040805182815290517fa09b7ae452b7bffb9e204c3a016e80caeecf46f554d112644f36fa114dac6ffa9181900360200190a150565b7fa7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dc55565b600054610100900460ff1680613ce95750613ce96132fd565b80613cf7575060005460ff16155b613d325760405162461bcd60e51b815260040180806020018281038252602e815260200180614504602e913960400191505060405180910390fd5b600054610100900460ff16158015613d5d576000805460ff1961ff0019909116610100171660011790555b612d0a82613cac565b80609d6000846040516020018082805190602001908083835b60208310613d9e5780518252601f199092019160209182019101613d7f565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001208152602001908152602001600020819055505050565b80609e6000846040516020018082805190602001908083835b60208310613e275780518252601f199092019160209182019101613e08565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050565b60008183613ee75760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156134b557818101518382015260200161349d565b506000838581613ef357fe5b0495945050505050565b613f0f826001600160a01b0316614201565b613f60576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310613f9e5780518252601f199092019160209182019101613f7f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614000576040519150601f19603f3d011682016040523d82523d6000602084013e614005565b606091505b50915091508161405c576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610dde5780806020019051602081101561407857600080fd5b5051610dde5760405162461bcd60e51b815260040180806020018281038252602a8152602001806145eb602a913960400191505060405180910390fd5b6001600160a01b038216614110576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b603554614123908263ffffffff61313b16565b6035556001600160a01b03821660009081526033602052604090205461414f908263ffffffff61313b16565b6001600160a01b03831660008181526033602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610dde908590613efd565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061423557508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061427e57805160ff19168380011785556142ab565b828001600101855582156142ab579182015b828111156142ab578251825591602001919060010190614290565b506142b79291506142bb565b5090565b61097e91905b808211156142b757600081556001016142c156fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735661756c743a205661756c7420756e6465726c79696e67206d757374206d6174636820537472617465677920756e6465726c79696e6745524332303a206275726e20616d6f756e7420657863656564732062616c616e63655661756c743a205468652073747261746567792065786973747320616e64207377697463682074696d656c6f636b20646964206e6f7420656c617073652079657445524332303a20617070726f766520746f20746865207a65726f20616464726573735661756c743a204e6577205f73747261746567792063616e6e6f7420626520656d70747945524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365476f7665726e61626c653a204e65772073746f726167652073686f756c646e277420626520656d7074795661756c743a2044656e6f6d696e61746f72206d7573742062652067726561746572207468616e2030436f6e74726f6c6c61626c653a205468652063616c6c6572206d75737420626520636f6e74726f6c6c6572206f7220676f7665726e616e63655661756c743a2054686520737472617465677920646f6573206e6f742062656c6f6e6720746f2074686973207661756c74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656445524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573735661756c743a2043616e6e6f7420696e76657374206d6f7265207468616e203130302545524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735661756c743a206e756d6265724f66536861726573206d7573742062652067726561746572207468616e20305361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645661756c743a205468697320736d61727420636f6e7472616374206973206e6f742077686974656c69737465645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e63655661756c743a2044656e6f6d696e61746f72206d7573742062652067726561746572207468616e206f7220657175616c20746f20746865206e756d657261746f7245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582067b3d386547888ae6c9a47182668f62c60d6b24e5c612f4bcc2638962a444e1564736f6c63430005100032