60a06040523060601b60805234801561001757600080fd5b5060805160601c613a1c61005260003960008181610dc001528181610e7001528181610ff5015281816110a501526111ea0152613a1c6000f3fe6080604052600436106101ac5760003560e01c806355f804b3116100ec57806395d89b411161008a578063c0c53b8b11610064578063c0c53b8b146104d3578063c87b56dd146104f3578063e985e9c514610513578063f2fde38b1461056957600080fd5b806395d89b411461047e578063a22cb46514610493578063b88d4fde146104b357600080fd5b806370a08231116100c657806370a08231146103da578063715018a6146103fa5780638662d3ae1461040f5780638da5cb5b1461045357600080fd5b806355f804b3146103855780636352211e146103a55780636c0360eb146103c557600080fd5b806323b872dd1161015957806342842e0e1161013357806342842e0e1461030f57806342966c681461032f5780634f1ef2861461034f57806352d1902d1461036257600080fd5b806323b872dd146102af5780633659cfe6146102cf5780633bb3a24d146102ef57600080fd5b8063095ea7b31161018a578063095ea7b31461024d578063162094c41461026f57806321bae9e41461028f57600080fd5b806301ffc9a7146101b157806306fdde03146101e6578063081812fc14610208575b600080fd5b3480156101bd57600080fd5b506101d16101cc3660046135c7565b610589565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b506101fb61066e565b6040516101dd9190613798565b34801561021457600080fd5b50610228610223366004613632565b610700565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dd565b34801561025957600080fd5b5061026d610268366004613586565b610734565b005b34801561027b57600080fd5b5061026d61028a36600461364a565b6108c6565b34801561029b57600080fd5b5061026d6102aa3660046133d1565b6108dc565b3480156102bb57600080fd5b5061026d6102ca36600461345f565b610d93565b3480156102db57600080fd5b5061026d6102ea3660046133d1565b610da8565b3480156102fb57600080fd5b506101fb61030a366004613632565b610fae565b34801561031b57600080fd5b5061026d61032a36600461345f565b610fb9565b34801561033b57600080fd5b5061026d61034a366004613632565b610fcc565b61026d61035d36600461353a565b610fdd565b34801561036e57600080fd5b506103776111d0565b6040519081526020016101dd565b34801561039157600080fd5b5061026d6103a03660046135ff565b6112bc565b3480156103b157600080fd5b506102286103c0366004613632565b6112d8565b3480156103d157600080fd5b506101fb611364565b3480156103e657600080fd5b506103776103f53660046133d1565b6113f3565b34801561040657600080fd5b5061026d6114c1565b34801561041b57600080fd5b5061022861042a3660046133d1565b6101646020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561045f57600080fd5b5060c95473ffffffffffffffffffffffffffffffffffffffff16610228565b34801561048a57600080fd5b506101fb6114d5565b34801561049f57600080fd5b5061026d6104ae366004613500565b6114e4565b3480156104bf57600080fd5b5061026d6104ce36600461349a565b6114ef565b3480156104df57600080fd5b5061026d6104ee36600461341d565b61150b565b3480156104ff57600080fd5b506101fb61050e366004613632565b6117b7565b34801561051f57600080fd5b506101d161052e3660046133eb565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561057557600080fd5b5061026d6105843660046133d1565b611843565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061061c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061066857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606065805461067d9061381a565b80601f01602080910402602001604051908101604052809291908181526020018280546106a99061381a565b80156106f65780601f106106cb576101008083540402835291602001916106f6565b820191906000526020600020905b8154815290600101906020018083116106d957829003601f168201915b5050505050905090565b600061070b826118f7565b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061073f826112d8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610802576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff8216148061082b575061082b813361052e565b6108b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016107f9565b6108c18383611982565b505050565b6108ce611a22565b6108d88282611aa3565b5050565b610160546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a082319060240160206040518083038186803b15801561094657600080fd5b505afa15801561095a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e91906135af565b6001146109e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e617574686f72697a656420746f206d696e7400000000000000000000000060448201526064016107f9565b610161546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152909116906370a082319060240160206040518083038186803b158015610a5357600080fd5b505afa158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b91906135af565b600114610af4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6e6f74204e55547320757365720000000000000000000000000000000000000060448201526064016107f9565b610160546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152909116906370a082319060240160206040518083038186803b158015610b6057600080fd5b505afa158015610b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9891906135af565b158015610c465750610162546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152909116906370a082319060240160206040518083038186803b158015610c0c57600080fd5b505afa158015610c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4491906135af565b155b610cac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e617574686f72697a656420746f207265636569766500000000000000000060448201526064016107f9565b610cb5816113f3565b15610d1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207265636c61696d61626c65000000000000000000000000000000000060448201526064016107f9565b6000610d2861015f5490565b9050610d3961015f80546001019055565b610d438282611b73565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526101646020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055565b610d9d8383611b8d565b6108c1838383611bfe565b3073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610e6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016107f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610ee37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f7879000000000000000000000000000000000000000060648201526084016107f9565b610f8f81611c9f565b60408051600080825260208201909252610fab91839190611ca7565b50565b6060610668826117b7565b610fc1611a22565b6108c1838383611eb5565b610fd4611a22565b610fab81611ed0565b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016107f9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166111187f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146111bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f7879000000000000000000000000000000000000000060648201526084016107f9565b6111c482611c9f565b6108d882826001611ca7565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107f9565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b6112c4611a22565b80516108d890610163906020840190613234565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016107f9565b61016380546113729061381a565b80601f016020809104026020016040519081016040528092919081815260200182805461139e9061381a565b80156113eb5780601f106113c0576101008083540402835291602001916113eb565b820191906000526020600020905b8154815290600101906020018083116113ce57829003601f168201915b505050505081565b600073ffffffffffffffffffffffffffffffffffffffff8216611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016107f9565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b6114c9611a22565b6114d36000611ed9565b565b60606066805461067d9061381a565b6108d8338383611f50565b6114f98484611b8d565b6115058484848461207e565b50505050565b600054610100900460ff161580801561152b5750600054600160ff909116105b806115455750303b158015611545575060005460ff166001145b6115d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107f9565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561162f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6116a36040518060400160405280600881526020017f535542544f4b454e0000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f5355420000000000000000000000000000000000000000000000000000000000815250612120565b6116ab6121c1565b6116b3612258565b6116bb6121c1565b6040518060800160405280604981526020016139776049913980516116e99161016391602090910190613234565b50610160805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556101618054868416908316179055610162805492851692909116919091179055801561150557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b60606117c2826118f7565b60006117cc6122f7565b905060006117d984612307565b6040516020016117e9919061370e565b60405160208183030381529060405290506000825111611818576040518060200160405280600081525061183b565b818160405160200161182b9291906136df565b6040516020818303038152906040525b949350505050565b61184b611a22565b73ffffffffffffffffffffffffffffffffffffffff81166118ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107f9565b610fab81611ed9565b60008181526067602052604090205473ffffffffffffffffffffffffffffffffffffffff16610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016107f9565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906119dc826112d8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60c95473ffffffffffffffffffffffffffffffffffffffff1633146114d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f9565b60008281526067602052604090205473ffffffffffffffffffffffffffffffffffffffff16611b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201527f6578697374656e7420746f6b656e00000000000000000000000000000000000060648201526084016107f9565b600082815260976020908152604090912082516108c192840190613234565b6108d8828260405180602001604052806000815250612487565b73ffffffffffffffffffffffffffffffffffffffff821615801590611bc7575073ffffffffffffffffffffffffffffffffffffffff811615155b156108d8576040517fb1642c9e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c08338261252a565b611c94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016107f9565b6108c18383836125e9565b610fab611a22565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611cda576108c183612850565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d2057600080fd5b505afa925050508015611d6e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611d6b918101906135af565b60015b611dfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016107f9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016107f9565b506108c183838361295a565b6108c1838383604051806020016040528060008152506114ef565b610fab8161297f565b60c9805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fe6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107f9565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612088338361252a565b612114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016107f9565b611505848484846129bf565b600054610100900460ff166121b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f9565b6108d88282612a62565b600054610100900460ff166114d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f9565b600054610100900460ff166122ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f9565b6114d3612b20565b6060610163805461067d9061381a565b60608161234757505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115612371578061235b8161386e565b915061236a9050600a836137c3565b915061234b565b60008167ffffffffffffffff8111156123b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156123dd576020820181803683370190505b5090505b841561183b576123f26001836137d7565b91506123ff600a866138a7565b61240a9060306137ab565b60f81b818381518110612446577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612480600a866137c3565b94506123e1565b6124918383612bc0565b61249e6000848484612d82565b6108c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f9565b600080612536836112d8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806125a4575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b8061183b57508373ffffffffffffffffffffffffffffffffffffffff166125ca84610700565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16612609826112d8565b73ffffffffffffffffffffffffffffffffffffffff16146126ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016107f9565b73ffffffffffffffffffffffffffffffffffffffff821661274e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107f9565b612759600082611982565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260686020526040812080546001929061278f9084906137d7565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526068602052604081208054600192906127ca9084906137ab565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b73ffffffffffffffffffffffffffffffffffffffff81163b6128f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016107f9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61296383612f81565b6000825111806129705750805b156108c1576115058383612fce565b6129888161310d565b600081815260976020526040902080546129a19061381a565b159050610fab576000818152609760205260408120610fab916132b8565b6129ca8484846125e9565b6129d684848484612d82565b611505576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f9565b600054610100900460ff16612af9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f9565b8151612b0c906065906020850190613234565b5080516108c1906066906020840190613234565b600054610100900460ff16612bb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107f9565b6114d333611ed9565b73ffffffffffffffffffffffffffffffffffffffff8216612c3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107f9565b60008181526067602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612cc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107f9565b73ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290612cff9084906137ab565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600073ffffffffffffffffffffffffffffffffffffffff84163b15612f76576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290612df990339089908890889060040161374f565b602060405180830381600087803b158015612e1357600080fd5b505af1925050508015612e61575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e5e918101906135e3565b60015b612f2b573d808015612e8f576040519150601f19603f3d011682016040523d82523d6000602084013e612e94565b606091505b508051612f23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016107f9565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905061183b565b506001949350505050565b612f8a81612850565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606073ffffffffffffffffffffffffffffffffffffffff83163b613074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016107f9565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405161309c91906136c3565b600060405180830381855af49150503d80600081146130d7576040519150601f19603f3d011682016040523d82523d6000602084013e6130dc565b606091505b509150915061310482826040518060600160405280602781526020016139c0602791396131da565b95945050505050565b6000613118826112d8565b9050613125600083611982565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260686020526040812080546001929061315b9084906137d7565b909155505060008281526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555183919073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b606083156131e957508161322d565b8251156131f95782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f99190613798565b9392505050565b8280546132409061381a565b90600052602060002090601f01602090048101928261326257600085556132a8565b82601f1061327b57805160ff19168380011785556132a8565b828001600101855582156132a8579182015b828111156132a857825182559160200191906001019061328d565b506132b49291506132ee565b5090565b5080546132c49061381a565b6000825580601f106132d4575050565b601f016020900490600052602060002090810190610fab91905b5b808211156132b457600081556001016132ef565b803573ffffffffffffffffffffffffffffffffffffffff8116811461332757600080fd5b919050565b600082601f83011261333c578081fd5b813567ffffffffffffffff8082111561335757613357613919565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561339d5761339d613919565b816040528381528660208588010111156133b5578485fd5b8360208701602083013792830160200193909352509392505050565b6000602082840312156133e2578081fd5b61322d82613303565b600080604083850312156133fd578081fd5b61340683613303565b915061341460208401613303565b90509250929050565b600080600060608486031215613431578081fd5b61343a84613303565b925061344860208501613303565b915061345660408501613303565b90509250925092565b600080600060608486031215613473578283fd5b61347c84613303565b925061348a60208501613303565b9150604084013590509250925092565b600080600080608085870312156134af578081fd5b6134b885613303565b93506134c660208601613303565b925060408501359150606085013567ffffffffffffffff8111156134e8578182fd5b6134f48782880161332c565b91505092959194509250565b60008060408385031215613512578182fd5b61351b83613303565b91506020830135801515811461352f578182fd5b809150509250929050565b6000806040838503121561354c578182fd5b61355583613303565b9150602083013567ffffffffffffffff811115613570578182fd5b61357c8582860161332c565b9150509250929050565b60008060408385031215613598578182fd5b6135a183613303565b946020939093013593505050565b6000602082840312156135c0578081fd5b5051919050565b6000602082840312156135d8578081fd5b813561322d81613948565b6000602082840312156135f4578081fd5b815161322d81613948565b600060208284031215613610578081fd5b813567ffffffffffffffff811115613626578182fd5b61183b8482850161332c565b600060208284031215613643578081fd5b5035919050565b6000806040838503121561365c578182fd5b82359150602083013567ffffffffffffffff811115613570578182fd5b600081518084526136918160208601602086016137ee565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516136d58184602087016137ee565b9190910192915050565b600083516136f18184602088016137ee565b8351908301906137058183602088016137ee565b01949350505050565b600082516137208184602087016137ee565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000920191825250600501919050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261378e6080830184613679565b9695505050505050565b60208152600061322d6020830184613679565b600082198211156137be576137be6138bb565b500190565b6000826137d2576137d26138ea565b500490565b6000828210156137e9576137e96138bb565b500390565b60005b838110156138095781810151838201526020016137f1565b838111156115055750506000910152565b600181811c9082168061382e57607f821691505b60208210811415613868577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138a0576138a06138bb565b5060010190565b6000826138b6576138b66138ea565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610fab57600080fdfe68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f4e75746944414f444556312f6d657461646174615f746573742f6d61696e2f5355422f5355425f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122054985ae6628e3dc6e73f6dc01f529ae9cc07dc0479d34e73b767152ff33ddf9c64736f6c63430008040033