0x60806040526004361061010e5760003560e01c80639e6303f0116100a5578063ced72f8711610074578063df981ae311610059578063df981ae3146102e7578063f3fef3a3146102fa578063f520669e1461031a57600080fd5b8063ced72f87146102b2578063db9f60ff146102c757600080fd5b80639e6303f01461023d578063b349b9731461025d578063c6b3abc414610272578063c7e381b11461029257600080fd5b806344004cc1116100e157806344004cc1146101a85780634f1ef286146101c85780635c975abb146101db57806369fe0e2d1461021d57600080fd5b806303e18b2d146101135780631945ee3614610146578063270d154d146101685780633659cfe614610188575b600080fd5b34801561011f57600080fd5b5061013361012e366004613550565b610366565b6040519081526020015b60405180910390f35b34801561015257600080fd5b506101666101613660046135d8565b610de6565b005b34801561017457600080fd5b50610166610183366004613611565b610ebd565b34801561019457600080fd5b506101666101a3366004613648565b610faf565b3480156101b457600080fd5b506101666101c3366004613665565b6111b5565b6101666101d63660046136a6565b6113ac565b3480156101e757600080fd5b5060655461020d9074010000000000000000000000000000000000000000900460ff1681565b604051901515815260200161013d565b34801561022957600080fd5b506101666102383660046136f6565b6115a3565b34801561024957600080fd5b5061020d61025836600461370f565b611638565b34801561026957600080fd5b50610166611695565b34801561027e57600080fd5b5061016661028d36600461373d565b61197b565b34801561029e57600080fd5b506101666102ad3660046135d8565b611ac0565b3480156102be57600080fd5b50606a54610133565b3480156102d357600080fd5b506101666102e2366004613778565b611b97565b6101666102f5366004613795565b611c62565b34801561030657600080fd5b506101666103153660046137f0565b612821565b34801561032657600080fd5b5061033a61033536600461381c565b6129db565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520161013d565b6000806103766020860186613648565b73ffffffffffffffffffffffffffffffffffffffff1614156103f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6d616b657220697320307830000000000000000000000000000000000000000060448201526064015b60405180910390fd5b428460e0013511610466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6f6666657220657870697265640000000000000000000000000000000000000060448201526064016103f0565b6071600061047a6040870160208801613648565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff161561050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f746f6b656e2064697361626c656400000000000000000000000000000000000060448201526064016103f0565b6102d16040850135141561058c576001608085013514610587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f746f6b656e2076616c7565203e2031000000000000000000000000000000000060448201526064016103f0565b610667565b61048360408501351415610605576080840135610587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f746f6b656e2076616c7565203c3d20300000000000000000000000000000000060448201526064016103f0565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f62616420746f6b656e207374616e64617264000000000000000000000000000060448201526064016103f0565b6071600061067b60c0870160a08801613648565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff161561070c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f746f6b656e2064697361626c656400000000000000000000000000000000000060448201526064016103f0565b60c0840135610777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f746f6b656e2076616c7565203c3d20300000000000000000000000000000000060448201526064016103f0565b600061078285612bed565b60008181526070602052604090205490915060ff16156107fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6f666665722069732063616e63656c6c6564000000000000000000000000000060448201526064016103f0565b600061080a8286612dcb565b90506108196020870187613648565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f626164207369676e00000000000000000000000000000000000000000000000060448201526064016103f0565b8315610ddb576102d160408701351415610b3b576108ce6020870187613648565b73ffffffffffffffffffffffffffffffffffffffff166108f46040880160208901613648565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526060890135600482015273ffffffffffffffffffffffffffffffffffffffff9190911690636352211e90602401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610988919061384d565b73ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f6d616b6572206973206e6f7420616e206f776e6572206f66204552433732310060448201526064016103f0565b610a156040870160208801613648565b73ffffffffffffffffffffffffffffffffffffffff1663e985e9c5610a3d6020890189613648565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152306024820152604401602060405180830381865afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad0919061386a565b610b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6d616b6572206e6f7420617070726f766564204552433732310000000000000060448201526064016103f0565b610ddb565b61048360408701351415610ddb576080860135610b5e6040880160208901613648565b73ffffffffffffffffffffffffffffffffffffffff1662fdd58e610b8560208a018a613648565b60405160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff909116600482015260608a01356024820152604401602060405180830381865afa158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c9190613887565b1015610caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f6e6f7420656e6f75676820455243313135352062616c616e6365206f66206d6160448201527f6b6572000000000000000000000000000000000000000000000000000000000060648201526084016103f0565b610cba6040870160208801613648565b73ffffffffffffffffffffffffffffffffffffffff1663e985e9c5610ce26020890189613648565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152306024820152604401602060405180830381865afa158015610d51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d75919061386a565b610ddb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6d616b6572206e6f7420617070726f766564204552433131353500000000000060448201526064016103f0565b5090505b9392505050565b60655473ffffffffffffffffffffffffffffffffffffffff163314610e67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f7420616e206f776e6572000000000000000000000000000000000000000060448201526064016103f0565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152606c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60655473ffffffffffffffffffffffffffffffffffffffff163314610f3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f7420616e206f776e6572000000000000000000000000000000000000000060448201526064016103f0565b6103e8821115610f4d57600080fd5b73ffffffffffffffffffffffffffffffffffffffff9283166000908152606d6020908152604080832094909455606e90529190912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000a04fe5ee89c1519dcd4037fadff9b6743ca40767161415611075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016103f0565b7f000000000000000000000000a04fe5ee89c1519dcd4037fadff9b6743ca4076773ffffffffffffffffffffffffffffffffffffffff166110ea7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f7879000000000000000000000000000000000000000060648201526084016103f0565b61119681612eb2565b604080516000808252602082019092526111b291839190612f33565b50565b60655473ffffffffffffffffffffffffffffffffffffffff163314611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f7420616e206f776e6572000000000000000000000000000000000000000060448201526064016103f0565b600081116112a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f616d6f756e74206973207a65726f00000000000000000000000000000000000060448201526064016103f0565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390526000919085169063a9059cbb906044016020604051808303816000875af1158015611319573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133d919061386a565b9050806113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f7472616e73666572206661696c6564000000000000000000000000000000000060448201526064016103f0565b50505050565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000a04fe5ee89c1519dcd4037fadff9b6743ca40767161415611472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c000000000000000000000000000000000000000060648201526084016103f0565b7f000000000000000000000000a04fe5ee89c1519dcd4037fadff9b6743ca4076773ffffffffffffffffffffffffffffffffffffffff166114e77f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461158a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f7879000000000000000000000000000000000000000060648201526084016103f0565b61159382612eb2565b61159f82826001612f33565b5050565b60655473ffffffffffffffffffffffffffffffffffffffff163314611624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f7420616e206f776e6572000000000000000000000000000000000000000060448201526064016103f0565b6103e881111561163357600080fd5b606a55565b73ffffffffffffffffffffffffffffffffffffffff82166000908152606b602052604081205460ff1680610ddf57505073ffffffffffffffffffffffffffffffffffffffff166000908152606c602052604090205460ff16919050565b600054610100900460ff166116b05760005460ff16156116b4565b303b155b611740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103f0565b600054610100900460ff1615801561177f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b606580547fffffffffffffffffffffff00000000000000000000000000000000000000000016337fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16179055604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f69853d3eb64023498e1e6cb00af60dd326d36c6e0b650651282801dc73892940918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206066557f95362fe516e161a233980393cd06a64dbb12fae42538e1e9062ad86f5305e98a6067557fb5ffb3b6eff7fcfb3ce38121686f18c195d96349b1a179cbf4e78c8f734b81646068557f07d817cb373aa72ddda2371a0bc38e83f8feebd505c0d738a8290dee13a149316069556064606a5560655473ffffffffffffffffffffffffffffffffffffffff166000908152606b909252902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156111b257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b6119886020830183613648565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806119d8575060655473ffffffffffffffffffffffffffffffffffffffff1633145b611a3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f6f6e6c79206d616b65722063616e2063616e63656c000000000000000000000060448201526064016103f0565b6000611a4c83836000610366565b6000818152606f60209081526040808320839055607090915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555191925082917f3f9cb69d022b6ec319f86f2df848bcce01f2fc51c9f86396779a8081cf6ca2ea9190a2505050565b60655473ffffffffffffffffffffffffffffffffffffffff163314611b41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f7420616e206f776e6572000000000000000000000000000000000000000060448201526064016103f0565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152606b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60655473ffffffffffffffffffffffffffffffffffffffff163314611c18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f7420616e206f776e6572000000000000000000000000000000000000000060448201526064016103f0565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60655474010000000000000000000000000000000000000000900460ff161580611ca3575060655473ffffffffffffffffffffffffffffffffffffffff1633145b611d09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f706175736564000000000000000000000000000000000000000000000000000060448201526064016103f0565b33611d176020850185613648565b73ffffffffffffffffffffffffffffffffffffffff161415611d95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f616363657074696e67206f776e206f666665720000000000000000000000000060448201526064016103f0565b6001811015611e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f76616c7565203c2031000000000000000000000000000000000000000000000060448201526064016103f0565b6000611e0e84846000610366565b90506104836040850135148015611e29575060016080850135115b15611f3c576000818152606f6020526040812054611e489084906138cf565b90506080850135811015611e7f576000828152606f602052604081208054859290611e749084906138cf565b90915550611f369050565b6080850135811415611ed4576000828152606f602090815260408083208390556070909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611f36565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f6e6f7420656e6f7567682076616c7565206c656674000000000000000000000060448201526064016103f0565b50611f74565b600081815260706020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b6000611f848360c08701356138e7565b90506000611fa8611f986020880188613648565b6102586040890160208a01613648565b611fca57612710606a5483611fbd91906138e7565b611fc79190613924565b90505b6000611fd6828461395f565b9050600080611fe889602001866129db565b9092509050611ff7818461395f565b9250600061200b60c08b0160a08c01613648565b73ffffffffffffffffffffffffffffffffffffffff1614156122635784341015612091576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f6e6f7420656e6f756768206e617469766520746f6b656e2062616c616e63650060448201526064016103f0565b60006120a060208b018b613648565b73ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d80600081146120f7576040519150601f19603f3d011682016040523d82523d6000602084013e6120fc565b606091505b5050905080612167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6e617469766520746f6b656e207472616e73666572206661696c65640000000060448201526064016103f0565b73ffffffffffffffffffffffffffffffffffffffff83161580159061218c5750600082115b1561225d5760008373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d80600081146121eb576040519150601f19603f3d011682016040523d82523d6000602084013e6121f0565b606091505b505090508061225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6e617469766520726f79616c7479207472616e73666572206661696c6564000060448201526064016103f0565b505b506125e7565b61227360c08a0160a08b01613648565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810187905273ffffffffffffffffffffffffffffffffffffffff91909116906323b872dd906064016020604051808303816000875af11580156122ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612312919061386a565b612378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433230207472616e73666572206661696c6564000000000000000000000060448201526064016103f0565b61238860c08a0160a08b01613648565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6123b060208c018c613648565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018690526044016020604051808303816000875af1158015612422573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612446919061386a565b6124ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4552433230207472616e73666572206661696c6564000000000000000000000060448201526064016103f0565b73ffffffffffffffffffffffffffffffffffffffff8216158015906124d15750600081115b156125e7576124e660c08a0160a08b01613648565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063a9059cbb906044016020604051808303816000875af115801561255d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612581919061386a565b6125e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f455243323020726f79616c7479207472616e73666572206661696c656400000060448201526064016103f0565b6102d160408a013514156126c15761260560408a0160208b01613648565b73ffffffffffffffffffffffffffffffffffffffff166342842e0e61262d60208c018c613648565b60405160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff909116600482015233602482015260608c013560448201526064015b600060405180830381600087803b1580156126a457600080fd5b505af11580156126b8573d6000803e3d6000fd5b505050506127df565b61048360408a0135141561277d576126df60408a0160208b01613648565b73ffffffffffffffffffffffffffffffffffffffff1663f242432a61270760208c018c613648565b60405160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff909116600482015233602482015260608c01356044820152606481018a905260a06084820152600060a482015260c40161268a565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f626164206d616b657220746f6b656e000000000000000000000000000000000060448201526064016103f0565b604051878152339087907f7947ab5451d15b3e5f5cb9d87332b123805e40d2e0e2f689ed5d387a89c56da59060200160405180910390a3505050505050505050565b60655473ffffffffffffffffffffffffffffffffffffffff1633146128a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f7420616e206f776e6572000000000000000000000000000000000000000060448201526064016103f0565b6000811161290c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f616d6f756e74206973207a65726f00000000000000000000000000000000000060448201526064016103f0565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612966576040519150601f19603f3d011682016040523d82523d6000602084013e61296b565b606091505b50509050806129d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f7472616e73666572206661696c6564000000000000000000000000000000000060448201526064016103f0565b505050565b60008080606d816129ef6020880188613648565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612ad457606e6000612a416020870187613648565b73ffffffffffffffffffffffffffffffffffffffff90811682526020808301939093526040909101600090812054909116935061271091606d9190612a8890880188613648565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002054612ab990856138e7565b612ac39190613924565b612acd90826138cf565b9050612be6565b612ae16020850185613648565b604080517f2a55205a0000000000000000000000000000000000000000000000000000000081529086013560048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9190911690632a55205a906044016040805180830381865afa925050508015612b91575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612b8e91810190613976565b60015b612bcb573d808015612bbf576040519150601f19603f3d011682016040523d82523d6000602084013e612bc4565b606091505b5050612be6565b612bd6600a86613924565b8111612be3578193508092505b50505b9250929050565b60665460675460009190612c046020850185613648565b606854612c176040870160208801613648565b60408051602081019390935273ffffffffffffffffffffffffffffffffffffffff9091168282015286013560608083019190915286013560808083019190915286013560a082015260c001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120606954612cab60c0880160a08901613648565b60408051602081019390935273ffffffffffffffffffffffffffffffffffffffff9091169082015260c08701356060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019590955273ffffffffffffffffffffffffffffffffffffffff909316928101929092526060820152608081019190915260e084013560a082015260c00160405160208183030381529060405280519060200120604051602001612dae9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050919050565b6020810151604082015160608301516000929190831a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115612e0e57600080fd5b8060ff16601b1480612e2357508060ff16601c145b612e2c57600080fd5b60408051600081526020810180835288905260ff831691810191909152606081018490526080810183905260019060a0016020604051602081039080840390855afa158015612e7f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00151979650505050505050565b60655473ffffffffffffffffffffffffffffffffffffffff1633146111b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f7420616e206f776e6572000000000000000000000000000000000000000060448201526064016103f0565b6000612f737f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b9050612f7e84613192565b600083511180612f8b5750815b15612f9c57612f9a8484613286565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff1661318b5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117815560405173ffffffffffffffffffffffffffffffffffffffff83166024820152613092908690604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3659cfe600000000000000000000000000000000000000000000000000000000179052613286565b5080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff838116911614613182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201527f757274686572207570677261646573000000000000000000000000000000000060648201526084016103f0565b61318b856133af565b5050505050565b803b613220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103f0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6060823b613316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103f0565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405161333e91906139d0565b600060405180830381855af49150503d8060008114613379576040519150601f19603f3d011682016040523d82523d6000602084013e61337e565b606091505b50915091506133a68282604051806060016040528060278152602001613a3e602791396133fc565b95945050505050565b6133b881613192565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060831561340b575081610ddf565b82511561341b5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f091906139ec565b6000610100828403121561346257600080fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126134a857600080fd5b813567ffffffffffffffff808211156134c3576134c3613468565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561350957613509613468565b8160405283815286602085880101111561352257600080fd5b836020870160208301376000602085830101528094505050505092915050565b80151581146111b257600080fd5b6000806000610140848603121561356657600080fd5b613570858561344f565b925061010084013567ffffffffffffffff81111561358d57600080fd5b61359986828701613497565b9250506101208401356135ab81613542565b809150509250925092565b73ffffffffffffffffffffffffffffffffffffffff811681146111b257600080fd5b600080604083850312156135eb57600080fd5b82356135f6816135b6565b9150602083013561360681613542565b809150509250929050565b60008060006060848603121561362657600080fd5b8335613631816135b6565b92506020840135915060408401356135ab816135b6565b60006020828403121561365a57600080fd5b8135610ddf816135b6565b60008060006060848603121561367a57600080fd5b8335613685816135b6565b92506020840135613695816135b6565b929592945050506040919091013590565b600080604083850312156136b957600080fd5b82356136c4816135b6565b9150602083013567ffffffffffffffff8111156136e057600080fd5b6136ec85828601613497565b9150509250929050565b60006020828403121561370857600080fd5b5035919050565b6000806040838503121561372257600080fd5b823561372d816135b6565b91506020830135613606816135b6565b600080610120838503121561375157600080fd5b61375b848461344f565b915061010083013567ffffffffffffffff8111156136e057600080fd5b60006020828403121561378a57600080fd5b8135610ddf81613542565b600080600061014084860312156137ab57600080fd5b6137b5858561344f565b925061010084013567ffffffffffffffff8111156137d257600080fd5b6137de86828701613497565b92505061012084013590509250925092565b6000806040838503121561380357600080fd5b823561380e816135b6565b946020939093013593505050565b60008082840360a081121561383057600080fd5b608081121561383e57600080fd5b50919360808501359350915050565b60006020828403121561385f57600080fd5b8151610ddf816135b6565b60006020828403121561387c57600080fd5b8151610ddf81613542565b60006020828403121561389957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156138e2576138e26138a0565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561391f5761391f6138a0565b500290565b60008261395a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015613971576139716138a0565b500390565b6000806040838503121561398957600080fd5b8251613994816135b6565b6020939093015192949293505050565b60005b838110156139bf5781810151838201526020016139a7565b838111156113a65750506000910152565b600082516139e28184602087016139a4565b9190910192915050565b6020815260008251806020840152613a0b8160408501602087016139a4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220528fe03bacca5ece124065673855163901f5e500dca03f398e5983d449d4a24964736f6c634300080b0033