0x608060405234801562000010575f80fd5b50604051620012193803806200121983398101604081905262000033916200014b565b600280546001600160a01b0319166001600160a01b0384161790556200007a7f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef18262000083565b50505062000181565b5f828152602081815260408083206001600160a01b038516845290915281205460ff1662000126575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620000dd3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000129565b505f5b92915050565b80516001600160a01b038116811462000146575f80fd5b919050565b5f80604083850312156200015d575f80fd5b62000168836200012f565b915062000178602084016200012f565b90509250929050565b61108a806200018f5f395ff3fe608060405234801561000f575f80fd5b5060043610610106575f3560e01c806343c2935a1161009e57806391d148541161006e57806391d1485414610261578063a217fddf14610274578063aff518f31461027b578063d547741f1461028e578063e73a041e146102a1575f80fd5b806343c2935a146101fb5780636b01d8261461020e578063742f03ce146102215780638d35248d14610234575f80fd5b806331930de9116100d957806331930de91461018b57806336568abe1461019e57806337e935ee146101b157806342a9d131146101d0575f80fd5b806301ffc9a71461010a57806307e2cea514610132578063248a9ca3146101545780632f2ff15d14610176575b5f80fd5b61011d610118366004610ce0565b6102b4565b60405190151581526020015b60405180910390f35b6101465f8051602061103583398151915281565b604051908152602001610129565b610146610162366004610d07565b5f9081526020819052604090206001015490565b610189610184366004610d34565b6102ea565b005b610189610199366004610d5e565b610314565b6101896101ac366004610d34565b610347565b6101466101bf366004610d86565b60046020525f908152604090205481565b6002546101e3906001600160a01b031681565b6040516001600160a01b039091168152602001610129565b610189610209366004610dac565b61037f565b61014661021c366004610d86565b61056e565b6001546101e3906001600160a01b031681565b61011d610242366004610d5e565b600360209081525f928352604080842090915290825290205460ff1681565b61011d61026f366004610d34565b6105a1565b6101465f81565b610189610289366004610d86565b6105c9565b61018961029c366004610d34565b610611565b6101466102af366004610de9565b610635565b5f6001600160e01b03198216637965db0b60e01b14806102e457506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f82815260208190526040902060010154610304816106f7565b61030e8383610704565b50505050565b5f8051602061103583398151915261032b816106f7565b506001600160a01b039091165f90815260046020526040902055565b6001600160a01b03811633146103705760405163334bd91960e11b815260040160405180910390fd5b61037a8282610793565b505050565b5f80516020611035833981519152610396816106f7565b5f6103a0856107fc565b90505f816001600160a01b0316637f2fdf48876001600160a01b031663cc5b6e4a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104129190610e11565b6040518263ffffffff1660e01b815260040161043091815260200190565b5f60405180830381865afa15801561044a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526104719190810190610ea6565b5090505f61047f828761094d565b905060018251116104e95760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420696e76616c696461746520746865206f6e6c792061756374696044820152681bdb881c995cdd5b1d60ba1b60648201526084015b60405180910390fd5b806105365760405162461bcd60e51b815260206004820181905260248201527f41756374696f6e204944206e6f7420666f756e6420696e206d6574616461746160448201526064016104e0565b505050506001600160a01b03929092165f90815260036020908152604080832093835292905220805460ff1916911515919091179055565b5f6001600160a01b03821661058457505f919050565b5f61058e836107fc565b905061059a81846109a0565b9392505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f805160206110358339815191526105e0816106f7565b5060028054600180546001600160a01b038084166001600160a01b0319928316179092559091169216919091179055565b5f8281526020819052604090206001015461062b816106f7565b61030e8383610793565b5f6001600160a01b03821661064b57505f6102e4565b6001545f906001600160a01b039081169085160361067557506001546001600160a01b03166106e5565b6002546001600160a01b039081169085160361069d57506002546001600160a01b03166106e5565b60405162461bcd60e51b815260206004820152601760248201527f496e76616c6964207465726d20636f6e74726f6c6c657200000000000000000060448201526064016104e0565b6106ef81846109a0565b949350505050565b6107018133610ca3565b50565b5f61070f83836105a1565b61078c575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556107443390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016102e4565b505f6102e4565b5f61079e83836105a1565b1561078c575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016102e4565b60025460405163e7e4b8db60e01b81526001600160a01b0383811660048301525f92169063e7e4b8db90602401602060405180830381865afa158015610844573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108689190610f85565b1561087e5750506002546001600160a01b031690565b60015460405163e7e4b8db60e01b81526001600160a01b0384811660048301529091169063e7e4b8db90602401602060405180830381865afa1580156108c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ea9190610f85565b156109005750506001546001600160a01b031690565b60405162461bcd60e51b815260206004820152601960248201527f5465726d20636f6e74726f6c6c6572206e6f7420666f756e640000000000000060448201526064016104e0565b919050565b5f805f5b8451811015610998578385828151811061096d5761096d610fa0565b60200260200101515f0151036109865760019150610998565b8061099081610fc8565b915050610951565b505092915050565b5f80836001600160a01b0316637f2fdf48846001600160a01b031663cc5b6e4a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a119190610e11565b6040518263ffffffff1660e01b8152600401610a2f91815260200190565b5f60405180830381865afa158015610a49573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a709190810190610ea6565b50805190915080610ab75760405162461bcd60e51b8152602060048201526011602482015270139bc8185d58dd1a5bdb9cc8199bdd5b99607a1b60448201526064016104e0565b6001811115610c7b575f82610acd600184610fe0565b81518110610add57610add610fa0565b60200260200101516040015190506107088142610afa9190610fe0565b1015610ba7575f610b0c600284610ff3565b90505b5f8112610ba1576001600160a01b0386165f9081526003602052604081208551909190869084908110610b4457610b44610fa0565b6020908102919091018101515182528101919091526040015f205460ff16610b8f57838181518110610b7857610b78610fa0565b6020026020010151602001519450505050506102e4565b80610b9981611019565b915050610b0f565b50610c33565b5f610bb3600184610ff3565b90505b5f8112610c31576001600160a01b0386165f9081526003602052604081208551909190869084908110610beb57610beb610fa0565b6020908102919091018101515182528101919091526040015f205460ff16610c1f57838181518110610b7857610b78610fa0565b80610c2981611019565b915050610bb6565b505b60405162461bcd60e51b815260206004820152601b60248201527f4e6f2076616c69642061756374696f6e207261746520666f756e64000000000060448201526064016104e0565b815f81518110610c8d57610c8d610fa0565b6020026020010151602001519250505092915050565b610cad82826105a1565b610cdc5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016104e0565b5050565b5f60208284031215610cf0575f80fd5b81356001600160e01b03198116811461059a575f80fd5b5f60208284031215610d17575f80fd5b5035919050565b80356001600160a01b0381168114610948575f80fd5b5f8060408385031215610d45575f80fd5b82359150610d5560208401610d1e565b90509250929050565b5f8060408385031215610d6f575f80fd5b610d7883610d1e565b946020939093013593505050565b5f60208284031215610d96575f80fd5b61059a82610d1e565b8015158114610701575f80fd5b5f805f60608486031215610dbe575f80fd5b610dc784610d1e565b9250602084013591506040840135610dde81610d9f565b809150509250925092565b5f8060408385031215610dfa575f80fd5b610e0383610d1e565b9150610d5560208401610d1e565b5f60208284031215610e21575f80fd5b5051919050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610e5f57610e5f610e28565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e8e57610e8e610e28565b604052919050565b805160ff81168114610948575f80fd5b5f806040808486031215610eb8575f80fd5b835167ffffffffffffffff80821115610ecf575f80fd5b818601915086601f830112610ee2575f80fd5b8151602082821115610ef657610ef6610e28565b610f04818360051b01610e65565b8281528181019350606092830285018201928a841115610f22575f80fd5b948201945b83861015610f695780868c031215610f3e575f8081fd5b610f46610e3c565b865181528387015184820152878701518882015285529485019493820193610f27565b509650610f77888201610e96565b955050505050509250929050565b5f60208284031215610f95575f80fd5b815161059a81610d9f565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201610fd957610fd9610fb4565b5060010190565b818103818111156102e4576102e4610fb4565b8181035f83128015838313168383128216171561101257611012610fb4565b5092915050565b5f600160ff1b820161102d5761102d610fb4565b505f19019056fe68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef1a26469706673582212204ef588d4865e90b4ab3be8a59b0b7bbb98a1f84c53690d9f2796e23378a11cf164736f6c6343000815003300000000000000000000000021fc7b250ccaeecdb2abb38e04617d1f24d987720000000000000000000000006d3df8d321a47ec2b4463ab0ca75986367c86315