60806040523480156200001157600080fd5b50604051620051e9380380620051e9833981810160405281019062000037919062000cdd565b733cc6cdda760b79bafa08df41ecfa224f810dceb66001604051806020016040528060008152506200006f816200031560201b60201c565b5062000090620000846200033160201b60201c565b6200033960201b60201c565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115620002855780156200014b576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b81526004016200011192919062000d9e565b600060405180830381600087803b1580156200012c57600080fd5b505af115801562000141573d6000803e3d6000fd5b5050505062000284565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000205576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b8152600401620001cb92919062000d9e565b600060405180830381600087803b158015620001e657600080fd5b505af1158015620001fb573d6000803e3d6000fd5b5050505062000283565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b81526004016200024e919062000dcb565b600060405180830381600087803b1580156200026957600080fd5b505af11580156200027e573d6000803e3d6000fd5b505050505b5b5b50506200029c6000801b33620003ff60201b60201c565b8260059080519060200190620002b4929190620009f0565b508160069080519060200190620002cd929190620009f0565b5080600781905550620002e6846200033960201b60201c565b6200030b846000600160405180602001604052806000815250620004f160201b60201c565b50505050620013ab565b80600290805190602001906200032d929190620009f0565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620004118282620006d860201b60201c565b620004ed5760016004600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004926200033160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160362000563576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200055a9062000e6f565b60405180910390fd5b6000620005756200033160201b60201c565b905060006200058a856200074360201b60201c565b905060006200059f856200074360201b60201c565b9050620005b883600089858589620007c460201b60201c565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000619919062000ec0565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6289896040516200069992919062000f2e565b60405180910390a4620006b883600089858589620007cc60201b60201c565b620006cf83600089898989620007d460201b60201c565b50505050505050565b60006004600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606000600167ffffffffffffffff81111562000765576200076462000b34565b5b604051908082528060200260200182016040528015620007945781602001602082028036833780820191505090505b5090508281600081518110620007af57620007ae62000f5b565b5b60200260200101818152505080915050919050565b505050505050565b505050505050565b620008008473ffffffffffffffffffffffffffffffffffffffff16620009cd60201b62000d111760201c565b15620009c5578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016200084995949392919062000fe7565b6020604051808303816000875af19250505080156200088857506040513d601f19601f82011682018060405250810190620008859190620010a8565b60015b620009395762000897620010e7565b806308c379a003620008fa5750620008ae6200110c565b80620008bb5750620008fc565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008f19190620011f3565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000930906200128d565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614620009c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009ba9062001325565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054620009fe9062001376565b90600052602060002090601f01602090048101928262000a22576000855562000a6e565b82601f1062000a3d57805160ff191683800117855562000a6e565b8280016001018555821562000a6e579182015b8281111562000a6d57825182559160200191906001019062000a50565b5b50905062000a7d919062000a81565b5090565b5b8082111562000a9c57600081600090555060010162000a82565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ae18262000ab4565b9050919050565b62000af38162000ad4565b811462000aff57600080fd5b50565b60008151905062000b138162000ae8565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000b6e8262000b23565b810181811067ffffffffffffffff8211171562000b905762000b8f62000b34565b5b80604052505050565b600062000ba562000aa0565b905062000bb3828262000b63565b919050565b600067ffffffffffffffff82111562000bd65762000bd562000b34565b5b62000be18262000b23565b9050602081019050919050565b60005b8381101562000c0e57808201518184015260208101905062000bf1565b8381111562000c1e576000848401525b50505050565b600062000c3b62000c358462000bb8565b62000b99565b90508281526020810184848401111562000c5a5762000c5962000b1e565b5b62000c6784828562000bee565b509392505050565b600082601f83011262000c875762000c8662000b19565b5b815162000c9984826020860162000c24565b91505092915050565b6000819050919050565b62000cb78162000ca2565b811462000cc357600080fd5b50565b60008151905062000cd78162000cac565b92915050565b6000806000806080858703121562000cfa5762000cf962000aaa565b5b600062000d0a8782880162000b02565b945050602085015167ffffffffffffffff81111562000d2e5762000d2d62000aaf565b5b62000d3c8782880162000c6f565b935050604085015167ffffffffffffffff81111562000d605762000d5f62000aaf565b5b62000d6e8782880162000c6f565b925050606062000d818782880162000cc6565b91505092959194509250565b62000d988162000ad4565b82525050565b600060408201905062000db5600083018562000d8d565b62000dc4602083018462000d8d565b9392505050565b600060208201905062000de2600083018462000d8d565b92915050565b600082825260208201905092915050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600062000e5760218362000de8565b915062000e648262000df9565b604082019050919050565b6000602082019050818103600083015262000e8a8162000e48565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ecd8262000ca2565b915062000eda8362000ca2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f125762000f1162000e91565b5b828201905092915050565b62000f288162000ca2565b82525050565b600060408201905062000f45600083018562000f1d565b62000f54602083018462000f1d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b600062000fb38262000f8a565b62000fbf818562000f95565b935062000fd181856020860162000bee565b62000fdc8162000b23565b840191505092915050565b600060a08201905062000ffe600083018862000d8d565b6200100d602083018762000d8d565b6200101c604083018662000f1d565b6200102b606083018562000f1d565b81810360808301526200103f818462000fa6565b90509695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62001082816200104b565b81146200108e57600080fd5b50565b600081519050620010a28162001077565b92915050565b600060208284031215620010c157620010c062000aaa565b5b6000620010d18482850162001091565b91505092915050565b60008160e01c9050919050565b600060033d1115620011095760046000803e62001106600051620010da565b90505b90565b600060443d10620011a4576200112162000aa0565b60043d036004823e80513d602482011167ffffffffffffffff821117156200114b575050620011a4565b808201805167ffffffffffffffff8111156200116b5750505050620011a4565b80602083010160043d0385018111156200118a575050505050620011a4565b6200119b8260200185018662000b63565b82955050505050505b90565b600081519050919050565b6000620011bf82620011a7565b620011cb818562000de8565b9350620011dd81856020860162000bee565b620011e88162000b23565b840191505092915050565b600060208201905081810360008301526200120f8184620011b2565b905092915050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b60006200127560348362000de8565b9150620012828262001217565b604082019050919050565b60006020820190508181036000830152620012a88162001266565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b60006200130d60288362000de8565b91506200131a82620012af565b604082019050919050565b600060208201905081810360008301526200134081620012fe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200138f57607f821691505b602082108103620013a557620013a462001347565b5b50919050565b613e2e80620013bb6000396000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c80634e1273f4116100de578063a217fddf11610097578063d926a5dd11610071578063d926a5dd14610435578063e985e9c514610451578063f242432a14610481578063f2fde38b1461049d57610172565b8063a217fddf146103df578063a22cb465146103fd578063d547741f1461041957610172565b80634e1273f41461031b578063663b45481461034b578063715018a614610369578063774a5000146103735780638da5cb5b1461039157806391d14854146103af57610172565b80632eb2c2d6116101305780632eb2c2d6146102715780632f2ff15d1461028d57806336568abe146102a9578063397a8bab146102c557806340c10f19146102e157806341f43434146102fd57610172565b8062fdd58e1461017757806301ffc9a7146101a7578063098f9cf3146101d75780630e89341c146101f357806317d70f7c14610223578063248a9ca314610241575b600080fd5b610191600480360381019061018c91906125a6565b6104b9565b60405161019e91906125f5565b60405180910390f35b6101c160048036038101906101bc9190612668565b610581565b6040516101ce91906126b0565b60405180910390f35b6101f160048036038101906101ec91906126cb565b610593565b005b61020d600480360381019061020891906126f8565b6105ad565b60405161021a91906127be565b60405180910390f35b61022b6106dc565b60405161023891906125f5565b60405180910390f35b61025b60048036038101906102569190612816565b6106e2565b6040516102689190612852565b60405180910390f35b61028b60048036038101906102869190612a6a565b610702565b005b6102a760048036038101906102a29190612b39565b610755565b005b6102c360048036038101906102be9190612b39565b610776565b005b6102df60048036038101906102da91906126cb565b6107f9565b005b6102fb60048036038101906102f691906125a6565b610817565b005b610305610846565b6040516103129190612bd8565b60405180910390f35b61033560048036038101906103309190612cb6565b610858565b6040516103429190612dec565b60405180910390f35b610353610971565b60405161036091906127be565b60405180910390f35b6103716109ff565b005b61037b610a13565b60405161038891906127be565b60405180910390f35b610399610aa1565b6040516103a69190612e1d565b60405180910390f35b6103c960048036038101906103c49190612b39565b610acb565b6040516103d691906126b0565b60405180910390f35b6103e7610b36565b6040516103f49190612852565b60405180910390f35b61041760048036038101906104129190612e64565b610b3d565b005b610433600480360381019061042e9190612b39565b610b56565b005b61044f600480360381019061044a9190612f45565b610b77565b005b61046b60048036038101906104669190612fa1565b610ba7565b60405161047891906126b0565b60405180910390f35b61049b60048036038101906104969190612fe1565b610c3b565b005b6104b760048036038101906104b291906126cb565b610c8e565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610529576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610520906130ea565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061058c82610d34565b9050919050565b6000801b6105a081610dae565b6105a982610dc2565b5050565b60606000820361064957600680546105c490613139565b80601f01602080910402602001604051908101604052809291908181526020018280546105f090613139565b801561063d5780601f106106125761010080835404028352916020019161063d565b820191906000526020600020905b81548152906001019060200180831161062057829003601f168201915b505050505090506106d7565b6005805461065690613139565b80601f016020809104026020016040519081016040528092919081815260200182805461068290613139565b80156106cf5780601f106106a4576101008083540402835291602001916106cf565b820191906000526020600020905b8154815290600101906020018083116106b257829003601f168201915b505050505090505b919050565b60075481565b600060046000838152602001908152602001600020600101549050919050565b843373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107405761073f33610e88565b5b61074d8686868686610f85565b505050505050565b61075e826106e2565b61076781610dae565b6107718383611026565b505050565b61077e611107565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146107eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e2906131dc565b60405180910390fd5b6107f5828261110f565b5050565b6000801b61080681610dae565b6108136000801b83611026565b5050565b6000801b61082481610dae565b6108418360075484604051806020016040528060008152506111f1565b505050565b6daaeb6d7670e522a718067333cd4e81565b6060815183511461089e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108959061326e565b60405180910390fd5b6000835167ffffffffffffffff8111156108bb576108ba612872565b5b6040519080825280602002602001820160405280156108e95781602001602082028036833780820191505090505b50905060005b84518110156109665761093685828151811061090e5761090d61328e565b5b60200260200101518583815181106109295761092861328e565b5b60200260200101516104b9565b8282815181106109495761094861328e565b5b6020026020010181815250508061095f906132ec565b90506108ef565b508091505092915050565b6006805461097e90613139565b80601f01602080910402602001604051908101604052809291908181526020018280546109aa90613139565b80156109f75780601f106109cc576101008083540402835291602001916109f7565b820191906000526020600020905b8154815290600101906020018083116109da57829003601f168201915b505050505081565b610a076113a1565b610a116000610dc2565b565b60058054610a2090613139565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4c90613139565b8015610a995780601f10610a6e57610100808354040283529160200191610a99565b820191906000526020600020905b815481529060010190602001808311610a7c57829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006004600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b81610b4781610e88565b610b51838361141f565b505050565b610b5f826106e2565b610b6881610dae565b610b72838361110f565b505050565b6000801b610b8481610dae565b826007819055508160059080519060200190610ba192919061245b565b50505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b843373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c7957610c7833610e88565b5b610c868686868686611435565b505050505050565b610c966113a1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfc906133a6565b60405180910390fd5b610d0e81610dc2565b50565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610da75750610da6826114d6565b5b9050919050565b610dbf81610dba611107565b6115b8565b50565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610f82576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b8152600401610eff9291906133c6565b602060405180830381865afa158015610f1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f409190613404565b610f8157806040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610f789190612e1d565b60405180910390fd5b5b50565b610f8d611107565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610fd35750610fd285610fcd611107565b610ba7565b5b611012576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611009906134a3565b60405180910390fd5b61101f8585858585611655565b5050505050565b6110308282610acb565b6111035760016004600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506110a8611107565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600033905090565b6111198282610acb565b156111ed5760006004600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611192611107565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125790613535565b60405180910390fd5b600061126a611107565b9050600061127785611976565b9050600061128485611976565b9050611295836000898585896119f0565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112f49190613555565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6289896040516113729291906135ab565b60405180910390a4611389836000898585896119f8565b61139883600089898989611a00565b50505050505050565b6113a9611107565b73ffffffffffffffffffffffffffffffffffffffff166113c7610aa1565b73ffffffffffffffffffffffffffffffffffffffff161461141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141490613620565b60405180910390fd5b565b61143161142a611107565b8383611bd7565b5050565b61143d611107565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061148357506114828561147d611107565b610ba7565b5b6114c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b9906134a3565b60405180910390fd5b6114cf8585858585611d43565b5050505050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806115a157507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806115b157506115b082611fde565b5b9050919050565b6115c28282610acb565b611651576115e78173ffffffffffffffffffffffffffffffffffffffff166014612048565b6115f58360001c6020612048565b604051602001611606929190613714565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164891906127be565b60405180910390fd5b5050565b8151835114611699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611690906137c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90613852565b60405180910390fd5b6000611712611107565b90506117228187878787876119f0565b60005b84518110156118d35760008582815181106117435761174261328e565b5b6020026020010151905060008583815181106117625761176161328e565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa906138e4565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118b89190613555565b92505081905550505050806118cc906132ec565b9050611725565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161194a929190613904565b60405180910390a46119608187878787876119f8565b61196e818787878787612284565b505050505050565b60606000600167ffffffffffffffff81111561199557611994612872565b5b6040519080825280602002602001820160405280156119c35781602001602082028036833780820191505090505b50905082816000815181106119db576119da61328e565b5b60200260200101818152505080915050919050565b505050505050565b505050505050565b611a1f8473ffffffffffffffffffffffffffffffffffffffff16610d11565b15611bcf578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611a65959493929190613990565b6020604051808303816000875af1925050508015611aa157506040513d601f19601f82011682018060405250810190611a9e91906139ff565b60015b611b4657611aad613a39565b806308c379a003611b095750611ac1613a5b565b80611acc5750611b0b565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0091906127be565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90613b5d565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc490613bef565b60405180910390fd5b505b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3c90613c81565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d3691906126b0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da990613852565b60405180910390fd5b6000611dbc611107565b90506000611dc985611976565b90506000611dd685611976565b9050611de68389898585896119f0565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015611e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e74906138e4565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f329190613555565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051611faf9291906135ab565b60405180910390a4611fc5848a8a86868a6119f8565b611fd3848a8a8a8a8a611a00565b505050505050505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606000600283600261205b9190613ca1565b6120659190613555565b67ffffffffffffffff81111561207e5761207d612872565b5b6040519080825280601f01601f1916602001820160405280156120b05781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106120e8576120e761328e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061214c5761214b61328e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261218c9190613ca1565b6121969190613555565b90505b6001811115612236577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106121d8576121d761328e565b5b1a60f81b8282815181106121ef576121ee61328e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061222f90613cfb565b9050612199565b506000841461227a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227190613d70565b60405180910390fd5b8091505092915050565b6122a38473ffffffffffffffffffffffffffffffffffffffff16610d11565b15612453578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016122e9959493929190613d90565b6020604051808303816000875af192505050801561232557506040513d601f19601f8201168201806040525081019061232291906139ff565b60015b6123ca57612331613a39565b806308c379a00361238d5750612345613a5b565b80612350575061238f565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238491906127be565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c190613b5d565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244890613bef565b60405180910390fd5b505b505050505050565b82805461246790613139565b90600052602060002090601f01602090048101928261248957600085556124d0565b82601f106124a257805160ff19168380011785556124d0565b828001600101855582156124d0579182015b828111156124cf5782518255916020019190600101906124b4565b5b5090506124dd91906124e1565b5090565b5b808211156124fa5760008160009055506001016124e2565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061253d82612512565b9050919050565b61254d81612532565b811461255857600080fd5b50565b60008135905061256a81612544565b92915050565b6000819050919050565b61258381612570565b811461258e57600080fd5b50565b6000813590506125a08161257a565b92915050565b600080604083850312156125bd576125bc612508565b5b60006125cb8582860161255b565b92505060206125dc85828601612591565b9150509250929050565b6125ef81612570565b82525050565b600060208201905061260a60008301846125e6565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61264581612610565b811461265057600080fd5b50565b6000813590506126628161263c565b92915050565b60006020828403121561267e5761267d612508565b5b600061268c84828501612653565b91505092915050565b60008115159050919050565b6126aa81612695565b82525050565b60006020820190506126c560008301846126a1565b92915050565b6000602082840312156126e1576126e0612508565b5b60006126ef8482850161255b565b91505092915050565b60006020828403121561270e5761270d612508565b5b600061271c84828501612591565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561275f578082015181840152602081019050612744565b8381111561276e576000848401525b50505050565b6000601f19601f8301169050919050565b600061279082612725565b61279a8185612730565b93506127aa818560208601612741565b6127b381612774565b840191505092915050565b600060208201905081810360008301526127d88184612785565b905092915050565b6000819050919050565b6127f3816127e0565b81146127fe57600080fd5b50565b600081359050612810816127ea565b92915050565b60006020828403121561282c5761282b612508565b5b600061283a84828501612801565b91505092915050565b61284c816127e0565b82525050565b60006020820190506128676000830184612843565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128aa82612774565b810181811067ffffffffffffffff821117156128c9576128c8612872565b5b80604052505050565b60006128dc6124fe565b90506128e882826128a1565b919050565b600067ffffffffffffffff82111561290857612907612872565b5b602082029050602081019050919050565b600080fd5b600061293161292c846128ed565b6128d2565b9050808382526020820190506020840283018581111561295457612953612919565b5b835b8181101561297d57806129698882612591565b845260208401935050602081019050612956565b5050509392505050565b600082601f83011261299c5761299b61286d565b5b81356129ac84826020860161291e565b91505092915050565b600080fd5b600067ffffffffffffffff8211156129d5576129d4612872565b5b6129de82612774565b9050602081019050919050565b82818337600083830152505050565b6000612a0d612a08846129ba565b6128d2565b905082815260208101848484011115612a2957612a286129b5565b5b612a348482856129eb565b509392505050565b600082601f830112612a5157612a5061286d565b5b8135612a618482602086016129fa565b91505092915050565b600080600080600060a08688031215612a8657612a85612508565b5b6000612a948882890161255b565b9550506020612aa58882890161255b565b945050604086013567ffffffffffffffff811115612ac657612ac561250d565b5b612ad288828901612987565b935050606086013567ffffffffffffffff811115612af357612af261250d565b5b612aff88828901612987565b925050608086013567ffffffffffffffff811115612b2057612b1f61250d565b5b612b2c88828901612a3c565b9150509295509295909350565b60008060408385031215612b5057612b4f612508565b5b6000612b5e85828601612801565b9250506020612b6f8582860161255b565b9150509250929050565b6000819050919050565b6000612b9e612b99612b9484612512565b612b79565b612512565b9050919050565b6000612bb082612b83565b9050919050565b6000612bc282612ba5565b9050919050565b612bd281612bb7565b82525050565b6000602082019050612bed6000830184612bc9565b92915050565b600067ffffffffffffffff821115612c0e57612c0d612872565b5b602082029050602081019050919050565b6000612c32612c2d84612bf3565b6128d2565b90508083825260208201905060208402830185811115612c5557612c54612919565b5b835b81811015612c7e5780612c6a888261255b565b845260208401935050602081019050612c57565b5050509392505050565b600082601f830112612c9d57612c9c61286d565b5b8135612cad848260208601612c1f565b91505092915050565b60008060408385031215612ccd57612ccc612508565b5b600083013567ffffffffffffffff811115612ceb57612cea61250d565b5b612cf785828601612c88565b925050602083013567ffffffffffffffff811115612d1857612d1761250d565b5b612d2485828601612987565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d6381612570565b82525050565b6000612d758383612d5a565b60208301905092915050565b6000602082019050919050565b6000612d9982612d2e565b612da38185612d39565b9350612dae83612d4a565b8060005b83811015612ddf578151612dc68882612d69565b9750612dd183612d81565b925050600181019050612db2565b5085935050505092915050565b60006020820190508181036000830152612e068184612d8e565b905092915050565b612e1781612532565b82525050565b6000602082019050612e326000830184612e0e565b92915050565b612e4181612695565b8114612e4c57600080fd5b50565b600081359050612e5e81612e38565b92915050565b60008060408385031215612e7b57612e7a612508565b5b6000612e898582860161255b565b9250506020612e9a85828601612e4f565b9150509250929050565b600067ffffffffffffffff821115612ebf57612ebe612872565b5b612ec882612774565b9050602081019050919050565b6000612ee8612ee384612ea4565b6128d2565b905082815260208101848484011115612f0457612f036129b5565b5b612f0f8482856129eb565b509392505050565b600082601f830112612f2c57612f2b61286d565b5b8135612f3c848260208601612ed5565b91505092915050565b60008060408385031215612f5c57612f5b612508565b5b6000612f6a85828601612591565b925050602083013567ffffffffffffffff811115612f8b57612f8a61250d565b5b612f9785828601612f17565b9150509250929050565b60008060408385031215612fb857612fb7612508565b5b6000612fc68582860161255b565b9250506020612fd78582860161255b565b9150509250929050565b600080600080600060a08688031215612ffd57612ffc612508565b5b600061300b8882890161255b565b955050602061301c8882890161255b565b945050604061302d88828901612591565b935050606061303e88828901612591565b925050608086013567ffffffffffffffff81111561305f5761305e61250d565b5b61306b88828901612a3c565b9150509295509295909350565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b60006130d4602a83612730565b91506130df82613078565b604082019050919050565b60006020820190508181036000830152613103816130c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061315157607f821691505b6020821081036131645761316361310a565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b60006131c6602f83612730565b91506131d18261316a565b604082019050919050565b600060208201905081810360008301526131f5816131b9565b9050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b6000613258602983612730565b9150613263826131fc565b604082019050919050565b600060208201905081810360008301526132878161324b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132f782612570565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613329576133286132bd565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613390602683612730565b915061339b82613334565b604082019050919050565b600060208201905081810360008301526133bf81613383565b9050919050565b60006040820190506133db6000830185612e0e565b6133e86020830184612e0e565b9392505050565b6000815190506133fe81612e38565b92915050565b60006020828403121561341a57613419612508565b5b6000613428848285016133ef565b91505092915050565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206e6f7220617070726f7665640000000000000000000000000000000000602082015250565b600061348d602f83612730565b915061349882613431565b604082019050919050565b600060208201905081810360008301526134bc81613480565b9050919050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061351f602183612730565b915061352a826134c3565b604082019050919050565b6000602082019050818103600083015261354e81613512565b9050919050565b600061356082612570565b915061356b83612570565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135a05761359f6132bd565b5b828201905092915050565b60006040820190506135c060008301856125e6565b6135cd60208301846125e6565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061360a602083612730565b9150613615826135d4565b602082019050919050565b60006020820190508181036000830152613639816135fd565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613681601783613640565b915061368c8261364b565b601782019050919050565b60006136a282612725565b6136ac8185613640565b93506136bc818560208601612741565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006136fe601183613640565b9150613709826136c8565b601182019050919050565b600061371f82613674565b915061372b8285613697565b9150613736826136f1565b91506137428284613697565b91508190509392505050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b60006137aa602883612730565b91506137b58261374e565b604082019050919050565b600060208201905081810360008301526137d98161379d565b9050919050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061383c602583612730565b9150613847826137e0565b604082019050919050565b6000602082019050818103600083015261386b8161382f565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b60006138ce602a83612730565b91506138d982613872565b604082019050919050565b600060208201905081810360008301526138fd816138c1565b9050919050565b6000604082019050818103600083015261391e8185612d8e565b905081810360208301526139328184612d8e565b90509392505050565b600081519050919050565b600082825260208201905092915050565b60006139628261393b565b61396c8185613946565b935061397c818560208601612741565b61398581612774565b840191505092915050565b600060a0820190506139a56000830188612e0e565b6139b26020830187612e0e565b6139bf60408301866125e6565b6139cc60608301856125e6565b81810360808301526139de8184613957565b90509695505050505050565b6000815190506139f98161263c565b92915050565b600060208284031215613a1557613a14612508565b5b6000613a23848285016139ea565b91505092915050565b60008160e01c9050919050565b600060033d1115613a585760046000803e613a55600051613a2c565b90505b90565b600060443d10613ae857613a6d6124fe565b60043d036004823e80513d602482011167ffffffffffffffff82111715613a95575050613ae8565b808201805167ffffffffffffffff811115613ab35750505050613ae8565b80602083010160043d038501811115613ad0575050505050613ae8565b613adf826020018501866128a1565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b6000613b47603483612730565b9150613b5282613aeb565b604082019050919050565b60006020820190508181036000830152613b7681613b3a565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b6000613bd9602883612730565b9150613be482613b7d565b604082019050919050565b60006020820190508181036000830152613c0881613bcc565b9050919050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b6000613c6b602983612730565b9150613c7682613c0f565b604082019050919050565b60006020820190508181036000830152613c9a81613c5e565b9050919050565b6000613cac82612570565b9150613cb783612570565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613cf057613cef6132bd565b5b828202905092915050565b6000613d0682612570565b915060008203613d1957613d186132bd565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613d5a602083612730565b9150613d6582613d24565b602082019050919050565b60006020820190508181036000830152613d8981613d4d565b9050919050565b600060a082019050613da56000830188612e0e565b613db26020830187612e0e565b8181036040830152613dc48186612d8e565b90508181036060830152613dd88185612d8e565b90508181036080830152613dec8184613957565b9050969550505050505056fea2646970667358221220e7ff08ef5659b5e149bf06c91915468e830d91814f4e701ddfd276fb4aa0479764736f6c634300080d003300000000000000000000000063d2ee7d3b6d8a19954b1a59114830a5aa6ea71b000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001074000000000000000000000000000000000000000000000000000000000000004368747470733a2f2f697066732e696f2f697066732f516d5848386f56557158614d366553445a5432544e555639786d736869514e7478456f68314b444a6134687650480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004368747470733a2f2f697066732e696f2f697066732f516d5a71385561464a677a436d504b42726f4d4257386b70646142486153485571795444753266745345386d4e640000000000000000000000000000000000000000000000000000000000