60806040526008805460ff191690553480156200001b57600080fd5b50604080516020808201808452600080845284519283019094529281528151919290916200004c9160039162000078565b5080516200006290600490602084019062000078565b50506005805460ff19166012179055506200011d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000bb57805160ff1916838001178555620000eb565b82800160010185558215620000eb579182015b82811115620000eb578251825591602001919060010190620000ce565b50620000f9929150620000fd565b5090565b6200011a91905b80821115620000f9576000815560010162000104565b90565b6125be806200012d6000396000f3fe6080604052600436106101ee5760003560e01c8063395093511161010d578063a217fddf116100a0578063ca15c8731161006f578063ca15c873146107cc578063cf2c52cb146107f6578063d547741f14610881578063dd62ed3e146108ba578063de7ea79d146108f5576101ee565b8063a217fddf14610730578063a3b0b5a314610745578063a457c2d71461075a578063a9059cbb14610793576101ee565b80638acfcaf7116100dc5780638acfcaf7146106815780639010d07c1461069657806391d14854146106e257806395d89b411461071b576101ee565b806339509351146105855780635353a2d8146105be578063626381a01461063957806370a082311461064e576101ee565b806323b872dd116101855780632f2ff15d116101545780632f2ff15d146104d3578063313ce5671461050c5780633408e4701461053757806336568abe1461054c576101ee565b806323b872dd14610407578063248a9ca31461044a5780632d0335ab146104745780632e1a7d4d146104a7576101ee565b80630dd7531a116101c15780630dd7531a146103a15780630f7e5970146103b657806318160ddd146103cb57806320379ee5146103f2576101ee565b806306fdde03146101f3578063095ea7b31461027d5780630b54817c146102ca5780630c53c51c146102df575b600080fd5b3480156101ff57600080fd5b506102086109d2565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024257818101518382015260200161022a565b50505050905090810190601f16801561026f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028957600080fd5b506102b6600480360360408110156102a057600080fd5b506001600160a01b038135169060200135610a69565b604080519115158252519081900360200190f35b3480156102d657600080fd5b50610208610a87565b610208600480360360a08110156102f557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561031f57600080fd5b82018360208201111561033157600080fd5b803590602001918460018302840111600160201b8311171561035257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550508235935050506020810135906040013560ff16610aa4565b3480156103ad57600080fd5b50610208610da7565b3480156103c257600080fd5b50610208610dc4565b3480156103d757600080fd5b506103e0610de1565b60408051918252519081900360200190f35b3480156103fe57600080fd5b506103e0610de7565b34801561041357600080fd5b506102b66004803603606081101561042a57600080fd5b506001600160a01b03813581169160208101359091169060400135610ded565b34801561045657600080fd5b506103e06004803603602081101561046d57600080fd5b5035610e7a565b34801561048057600080fd5b506103e06004803603602081101561049757600080fd5b50356001600160a01b0316610e8f565b3480156104b357600080fd5b506104d1600480360360208110156104ca57600080fd5b5035610eaa565b005b3480156104df57600080fd5b506104d1600480360360408110156104f657600080fd5b50803590602001356001600160a01b0316610ebe565b34801561051857600080fd5b50610521610f2a565b6040805160ff9092168252519081900360200190f35b34801561054357600080fd5b506103e0610f33565b34801561055857600080fd5b506104d16004803603604081101561056f57600080fd5b50803590602001356001600160a01b0316610f37565b34801561059157600080fd5b506102b6600480360360408110156105a857600080fd5b506001600160a01b038135169060200135610f98565b3480156105ca57600080fd5b506104d1600480360360208110156105e157600080fd5b810190602081018135600160201b8111156105fb57600080fd5b82018360208201111561060d57600080fd5b803590602001918460018302840111600160201b8311171561062e57600080fd5b509092509050610fec565b34801561064557600080fd5b506103e0611137565b34801561065a57600080fd5b506103e06004803603602081101561067157600080fd5b50356001600160a01b031661113c565b34801561068d57600080fd5b506103e0611157565b3480156106a257600080fd5b506106c6600480360360408110156106b957600080fd5b508035906020013561115c565b604080516001600160a01b039092168252519081900360200190f35b3480156106ee57600080fd5b506102b66004803603604081101561070557600080fd5b50803590602001356001600160a01b0316611181565b34801561072757600080fd5b5061020861119f565b34801561073c57600080fd5b506103e0611200565b34801561075157600080fd5b506103e0611205565b34801561076657600080fd5b506102b66004803603604081101561077d57600080fd5b506001600160a01b03813516906020013561122b565b34801561079f57600080fd5b506102b6600480360360408110156107b657600080fd5b506001600160a01b038135169060200135611299565b3480156107d857600080fd5b506103e0600480360360208110156107ef57600080fd5b50356112ad565b34801561080257600080fd5b506104d16004803603604081101561081957600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561084357600080fd5b82018360208201111561085557600080fd5b803590602001918460018302840111600160201b8311171561087657600080fd5b5090925090506112c4565b34801561088d57600080fd5b506104d1600480360360408110156108a457600080fd5b50803590602001356001600160a01b0316611381565b3480156108c657600080fd5b506103e0600480360360408110156108dd57600080fd5b506001600160a01b03813581169160200135166113da565b34801561090157600080fd5b506104d16004803603608081101561091857600080fd5b810190602081018135600160201b81111561093257600080fd5b82018360208201111561094457600080fd5b803590602001918460018302840111600160201b8311171561096557600080fd5b919390929091602081019035600160201b81111561098257600080fd5b82018360208201111561099457600080fd5b803590602001918460018302840111600160201b831117156109b557600080fd5b9193509150803560ff1690602001356001600160a01b0316611405565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a5e5780601f10610a3357610100808354040283529160200191610a5e565b820191906000526020600020905b815481529060010190602001808311610a4157829003601f168201915b505050505090505b90565b6000610a7d610a766115c2565b84846115d1565b5060015b92915050565b604051806040016040528060018152602001608960f81b81525081565b6060610aae6121fa565b50604080516060810182526001600160a01b0388166000818152600a602090815290849020548352820152908101869052610aec87828787876116bd565b610b275760405162461bcd60e51b81526004018080602001828103825260218152602001806124aa6021913960400191505060405180910390fd5b6001600160a01b0387166000908152600a6020526040902054610b5190600163ffffffff61179a16565b6001600160a01b0388166000818152600a602090815260408083209490945583519283523383820181905260609484018581528b51958501959095528a517f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b958d9592948d94919260808501928601918190849084905b83811015610be0578181015183820152602001610bc8565b50505050905090810190601f168015610c0d5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a160006060306001600160a01b0316888a6040516020018083805190602001908083835b60208310610c5e5780518252601f199092019160209182019101610c3f565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b03166001600160a01b031660601b8152601401925050506040516020818303038152906040526040518082805190602001908083835b60208310610cdd5780518252601f199092019160209182019101610cbe565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610d3f576040519150601f19603f3d011682016040523d82523d6000602084013e610d44565b606091505b509150915081610d9b576040805162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c00000000604482015290519081900360640190fd5b98975050505050505050565b604051806040016040528060018152602001600160f81b81525081565b604051806040016040528060018152602001603160f81b81525081565b60025490565b60095490565b6000610dfa8484846117f4565b610e7084610e066115c2565b610e6b85604051806060016040528060288152602001612482602891396001600160a01b038a16600090815260016020526040812090610e446115c2565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61195b16565b6115d1565b5060019392505050565b60009081526006602052604090206002015490565b6001600160a01b03166000908152600a602052604090205490565b610ebb610eb56115c2565b826119f2565b50565b600082815260066020526040902060020154610ee190610edc6115c2565b611181565b610f1c5760405162461bcd60e51b815260040180806020018281038252602f815260200180612302602f913960400191505060405180910390fd5b610f268282611afa565b5050565b60055460ff1690565b4690565b610f3f6115c2565b6001600160a01b0316816001600160a01b031614610f8e5760405162461bcd60e51b815260040180806020018281038252602f81526020018061255a602f913960400191505060405180910390fd5b610f268282611b69565b6000610a7d610fa56115c2565b84610e6b8560016000610fb66115c2565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61179a16565b6000610ffa81610edc6115c2565b60079061109a5760405162461bcd60e51b815260206004820190815282546002600019610100600184161502019091160460248301819052909182916044909101908490801561108b5780601f106110605761010080835404028352916020019161108b565b820191906000526020600020905b81548152906001019060200180831161106e57829003601f168201915b50509250505060405180910390fd5b506110da83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611bd892505050565b61113283838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b60208201529150611beb9050565b505050565b608981565b6001600160a01b031660009081526020819052604090205490565b600181565b600082815260066020526040812061117a908363ffffffff611c7616565b9392505050565b600082815260066020526040812061117a908363ffffffff611c8216565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a5e5780601f10610a3357610100808354040283529160200191610a5e565b600081565b604080516d4445504f5349544f525f524f4c4560901b8152905190819003600e01902081565b6000610a7d6112386115c2565b84610e6b8560405180606001604052806025815260200161253560259139600160006112626115c2565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61195b16565b6000610a7d6112a66115c2565b84846117f4565b6000818152600660205260408120610a8190611c97565b604080516d4445504f5349544f525f524f4c4560901b8152905190819003600e0190206112f381610edc6115c2565b6007906113595760405162461bcd60e51b815260206004820190815282546002600019610100600184161502019091160460248301819052909182916044909101908490801561108b5780601f106110605761010080835404028352916020019161108b565b5060008383602081101561136c57600080fd5b5035905061137a8582611ca2565b5050505050565b60008281526006602052604090206002015461139f90610edc6115c2565b610f8e5760405162461bcd60e51b815260040180806020018281038252603081526020018061242d6030913960400191505060405180910390fd5b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60085460ff161561144e576040805162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481a5b9a5d195960921b604482015290519081900360640190fd5b61148d86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611bd892505050565b6114cc84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9e92505050565b6114d582611db1565b611516848460405160200180806410da1a5b1960da1b8152506005018383808284378083019250505092505050604051602081830303815290604052611dc7565b61152860006115236115c2565b610f1c565b604080516d4445504f5349544f525f524f4c4560901b8152905190819003600e0190206115559082610f1c565b6115ad86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b60208201529150611e659050565b50506008805460ff1916600117905550505050565b60006115cc611ec9565b905090565b6001600160a01b0383166116165760405162461bcd60e51b81526004018080602001828103825260248152602001806125116024913960400191505060405180910390fd5b6001600160a01b03821661165b5760405162461bcd60e51b81526004018080602001828103825260228152602001806123966022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60006001600160a01b0386166117045760405162461bcd60e51b815260040180806020018281038252602581526020018061245d6025913960400191505060405180910390fd5b600161171761171287611f26565b611fb2565b83868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611771573d6000803e3d6000fd5b505050602060405103516001600160a01b0316866001600160a01b031614905095945050505050565b60008282018381101561117a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0383166118395760405162461bcd60e51b81526004018080602001828103825260258152602001806124ec6025913960400191505060405180910390fd5b6001600160a01b03821661187e5760405162461bcd60e51b81526004018080602001828103825260238152602001806122df6023913960400191505060405180910390fd5b611889838383611132565b6118cc81604051806060016040528060268152602001612407602691396001600160a01b038616600090815260208190526040902054919063ffffffff61195b16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611901908263ffffffff61179a16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156119ea5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156119af578181015183820152602001611997565b50505050905090810190601f1680156119dc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038216611a375760405162461bcd60e51b81526004018080602001828103825260218152602001806124cb6021913960400191505060405180910390fd5b611a4382600083611132565b611a8681604051806060016040528060228152602001612331602291396001600160a01b038516600090815260208190526040902054919063ffffffff61195b16565b6001600160a01b038316600090815260208190526040902055600254611ab2908263ffffffff611ffe16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000828152600660205260409020611b18908263ffffffff61204016565b15610f2657611b256115c2565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152600660205260409020611b87908263ffffffff61205516565b15610f2657611b946115c2565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b8051610f26906003906020840190612224565b6040518060800160405280604f81526020016123b8604f9139805190602001208280519060200120828051906020012030611c24610f33565b604080516020808201979097528082019590955260608501939093526001600160a01b03909116608084015260a0808401919091528151808403909101815260c0909201905280519101206009555050565b600061117a838361206a565b600061117a836001600160a01b0384166120ce565b6000610a81826120e6565b6001600160a01b038216611cfd576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611d0960008383611132565b600254611d1c908263ffffffff61179a16565b6002556001600160a01b038216600090815260208190526040902054611d48908263ffffffff61179a16565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b8051610f26906004906020840190612224565b6005805460ff191660ff92909216919091179055565b806040516020018082805190602001908083835b60208310611dfa5780518252601f199092019160209182019101611ddb565b51815160209384036101000a60001901801990921691161790527f3a20494e53554646494349454e545f5045524d495353494f4e530000000000009190930190815260408051808303600519018152601a90920190528051610f269550600794509201919050612224565b60085460ff1615611eae576040805162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481a5b9a5d195960921b604482015290519081900360640190fd5b611eb88282611beb565b50506008805460ff19166001179055565b600033301415611f215760606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b03169150610a669050565b503390565b600060405180608001604052806043815260200161235360439139805190602001208260000151836020015184604001518051906020012060405160200180858152602001848152602001836001600160a01b03166001600160a01b03168152602001828152602001945050505050604051602081830303815290604052805190602001209050919050565b6000611fbc610de7565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061117a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061195b565b600061117a836001600160a01b0384166120ea565b600061117a836001600160a01b038416612134565b815460009082106120ac5760405162461bcd60e51b81526004018080602001828103825260228152602001806122bd6022913960400191505060405180910390fd5b8260000182815481106120bb57fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b60006120f683836120ce565b61212c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a81565b506000610a81565b600081815260018301602052604081205480156121f0578354600019808301919081019060009087908390811061216757fe5b906000526020600020015490508087600001848154811061218457fe5b6000918252602080832090910192909255828152600189810190925260409020908401905586548790806121b457fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610a81565b6000915050610a81565b60405180606001604052806000815260200160006001600160a01b03168152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061226557805160ff1916838001178555612292565b82800160010185558215612292579182015b82811115612292578251825591602001919060010190612277565b5061229e9291506122a2565b5090565b610a6691905b8082111561229e57600081556001016122a856fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647345524332303a207472616e7366657220746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e63654d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e61747572652945524332303a20617070726f766520746f20746865207a65726f2061646472657373454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e74726163742c627974657333322073616c742945524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b654e61746976654d6574615472616e73616374696f6e3a20494e56414c49445f5349474e455245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655369676e657220616e64207369676e617475726520646f206e6f74206d6174636845524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a2646970667358221220014cb2164e1b494ca889e3e6ab5951ef2aad2f027d22f6e4b32daa5ef342bac964736f6c63430006060033