60806040526000600160146101000a81548160ff0219169083151502179055506040805190810160405280600881526020017f617374657269736b000000000000000000000000000000000000000000000000815250600290805190602001906200006c929190620001df565b506040805190810160405280600581526020017f415354455200000000000000000000000000000000000000000000000000000081525060039080519060200190620000ba929190620001df565b506009600460006101000a81548160ff021916908360ff160217905550678ac7230489e800006005556001600a556000600c60006101000a81548160ff0219169083151502179055503480156200011057600080fd5b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200028e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022257805160ff191683800117855562000253565b8280016001018555821562000253579182015b828111156200025257825182559160200191906001019062000235565b5b50905062000262919062000266565b5090565b6200028b91905b80821115620002875760008160009055506001016200026d565b5090565b90565b615e45806200029e6000396000f3006080604052600436106101ee576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101f0578063095ea7b3146102805780630cf8bcab146102e55780631046d07814610336578063170e2070146103af57806318160ddd1461042d57806323b872dd1461045857806324223a3c146104dd578063313ce567146105565780634028db79146105875780634229c35e146105e2578063457c600c146106315780634f538ae1146106b2578063599dc6be1461073a5780635c975abb14610781578063690d23be146107b05780636ab9eb451461081157806370a082311461089257806389f27d55146108e95780638da5cb5b146109585780639301eb36146109af57806395d89b4114610a3a5780639979c00914610aca5780639dc29fac14610b19578063a9059cbb14610b7e578063aad1202914610be3578063b414d4b614610c61578063be45fd6214610cbc578063bfb231d214610d67578063c38bb53714610ede578063c3aa0fe614610f25578063ca6158cb14610f74578063dd62ed3e14610f9f578063ebb05f9c14611016578063ed92df9014611067578063f0dc4171146110ef578063f22c618e146111b0578063f2fde38b146111df578063f6368f8a1461123a578063fa695dd71461132b575b005b3480156101fc57600080fd5b50610205611424565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024557808201518184015260208101905061022a565b50505050905090810190601f1680156102725780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028c57600080fd5b506102cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114c6565b604051808215151515815260200191505060405180910390f35b3480156102f157600080fd5b5061031c600480360381019080803590602001909291908035151590602001909291905050506115d4565b604051808215151515815260200191505060405180910390f35b34801561034257600080fd5b5061039560048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611714565b604051808215151515815260200191505060405180910390f35b3480156103bb57600080fd5b5061041360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611ec3565b604051808215151515815260200191505060405180910390f35b34801561043957600080fd5b506104426120da565b6040518082815260200191505060405180910390f35b34801561046457600080fd5b506104c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506120e4565b604051808215151515815260200191505060405180910390f35b3480156104e957600080fd5b5061053c600480360381019080803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061257e565b604051808215151515815260200191505060405180910390f35b34801561056257600080fd5b5061056b6127c5565b604051808260ff1660ff16815260200191505060405180910390f35b34801561059357600080fd5b506105c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127dc565b604051808215151515815260200191505060405180910390f35b3480156105ee57600080fd5b506106176004803603810190808035906020019092919080359060200190929190505050612839565b604051808215151515815260200191505060405180910390f35b34801561063d57600080fd5b5061069c60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612973565b6040518082815260200191505060405180910390f35b3480156106be57600080fd5b506107206004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190505050612a47565b604051808215151515815260200191505060405180910390f35b34801561074657600080fd5b50610767600480360381019080803515159060200190929190505050612de2565b604051808215151515815260200191505060405180910390f35b34801561078d57600080fd5b50610796612e7f565b604051808215151515815260200191505060405180910390f35b3480156107bc57600080fd5b506107fb60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e92565b6040518082815260200191505060405180910390f35b34801561081d57600080fd5b5061087c60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f28565b6040518082815260200191505060405180910390f35b34801561089e57600080fd5b506108d3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ffc565b6040518082815260200191505060405180910390f35b3480156108f557600080fd5b5061093e60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613045565b604051808215151515815260200191505060405180910390f35b34801561096457600080fd5b5061096d613421565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109bb57600080fd5b50610a2060048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050613447565b604051808215151515815260200191505060405180910390f35b348015610a4657600080fd5b50610a4f613584565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a8f578082015181840152602081019050610a74565b50505050905090810190601f168015610abc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610ad657600080fd5b50610aff6004803603810190808035906020019092919080359060200190929190505050613626565b604051808215151515815260200191505060405180910390f35b348015610b2557600080fd5b50610b64600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613c1f565b604051808215151515815260200191505060405180910390f35b348015610b8a57600080fd5b50610bc9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613dfb565b604051808215151515815260200191505060405180910390f35b348015610bef57600080fd5b50610c4760048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050613f1a565b604051808215151515815260200191505060405180910390f35b348015610c6d57600080fd5b50610ca2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614131565b604051808215151515815260200191505060405180910390f35b348015610cc857600080fd5b50610d4d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050614151565b604051808215151515815260200191505060405180910390f35b348015610d7357600080fd5b50610d926004803603810190808035906020019092919050505061426d565b604051808a81526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200188815260200187815260200186151515158152602001851515151581526020018060200184815260200183810383528a818151815260200191508051906020019080838360005b83811015610e34578082015181840152602081019050610e19565b50505050905090810190601f168015610e615780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b83811015610e9a578082015181840152602081019050610e7f565b50505050905090810190601f168015610ec75780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b348015610eea57600080fd5b50610f0b600480360381019080803515159060200190929190505050614425565b604051808215151515815260200191505060405180910390f35b348015610f3157600080fd5b50610f5a60048036038101908080359060200190929190803590602001909291905050506144a6565b604051808215151515815260200191505060405180910390f35b348015610f8057600080fd5b50610f896145df565b6040518082815260200191505060405180910390f35b348015610fab57600080fd5b50611000600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506145e5565b6040518082815260200191505060405180910390f35b34801561102257600080fd5b5061104d6004803603810190808035906020019092919080351515906020019092919050505061466c565b604051808215151515815260200191505060405180910390f35b34801561107357600080fd5b506110d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506147ac565b604051808381526020018281526020019250505060405180910390f35b3480156110fb57600080fd5b5061119660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506147ea565b604051808215151515815260200191505060405180910390f35b3480156111bc57600080fd5b506111c5614bd9565b604051808215151515815260200191505060405180910390f35b3480156111eb57600080fd5b50611220600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614bec565b604051808215151515815260200191505060405180910390f35b34801561124657600080fd5b50611311600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050614d4c565b604051808215151515815260200191505060405180910390f35b34801561133757600080fd5b5061140e600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192908035906020019092919080359060200190929190803515159060200190929190803515159060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050615282565b6040518082815260200191505060405180910390f35b606060028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114bc5780601f10611491576101008083540402835291602001916114bc565b820191906000526020600020905b81548152906001019060200180831161149f57829003601f168201915b5050505050905090565b6000600160149054906101000a900460ff161515156114e457600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000801515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561163457600080fd5b600c60009054906101000a900460ff1615151561165057600080fd5b600160149054906101000a900460ff1615151561166c57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166009600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116dc57600080fd5b816009600085815260200190815260200160002060060160006101000a81548160ff0219169083151502179055506001905092915050565b6000806000801515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561177757600080fd5b600c60009054906101000a900460ff1615151561179357600080fd5b600160149054906101000a900460ff161515156117af57600080fd5b6000851180156117c0575060008410155b801561181c575060001515600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b151561182757600080fd5b61183a848661552e90919063ffffffff16565b915084600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000898152602001908152602001600020600001541015801561196c575083600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206001015410155b80156119b7575081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b8015611a165750846009600089815260200190815260200160002060020160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b8015611a4257506009600088815260200190815260200160002060060160009054906101000a900460ff165b1515611a4d57600080fd5b611ab385600960008a815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461556690919063ffffffff16565b905080600960008981526020019081526020016000206008015410151515611ada57600080fd5b611b2c82600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461558290919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c1285600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a81526020019081526020016000206000015461558290919063ffffffff16565b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060000181905550611d0c85600960008a815260200190815260200160002060020160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461558290919063ffffffff16565b6009600089815260200190815260200160002060020160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dc985600960008a815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461556690919063ffffffff16565b6009600089815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e7282600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461556690919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600192505050949350505050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f2257600080fd5b600160149054906101000a900460ff16151515611f3e57600080fd5b60008351111515611f4e57600080fd5b600090505b82518110156120d05760008382815181101515611f6c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611f9957600080fd5b6000600860008584815181101515611fad57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110151561201657fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f60066000868581518110151561206957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a28080600101915050611f53565b6001915050919050565b6000600554905090565b6000600160149054906101000a900460ff1615151561210257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561213f5750600082115b801561218a575081600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b8015612212575081600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561226e575060001515600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b80156122ca575060001515600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15156122d557600080fd5b61232782600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461558290919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123bc82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461556690919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061248e82600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461558290919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000612588615c73565b60001515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415156125e757600080fd5b600c60009054906101000a900460ff1615151561260357600080fd5b600160149054906101000a900460ff1615151561261f57600080fd5b600085118015612630575060008410155b80156126695750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156126c85750846009600088815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156126f457506009600087815260200190815260200160002060060160009054906101000a900460ff165b15156126ff57600080fd5b838160200181815250508481600001818152505080600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060008201518160000155602082015181600101559050506001915050949350505050565b6000600460009054906101000a900460ff16905090565b600060011515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515149050919050565b6000801515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561289957600080fd5b600c60009054906101000a900460ff161515156128b557600080fd5b600160149054906101000a900460ff161515156128d157600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166009600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612943575060008210155b151561294e57600080fd5b8160096000858152602001908152602001600020600401819055506001905092915050565b6000600c60009054906101000a900460ff1615151561299157600080fd5b600160149054906101000a900460ff161515156129ad57600080fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000015490509392505050565b6000806000801515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515612aaa57600080fd5b600160149054906101000a900460ff16151515612ac657600080fd5b600084118015612ad7575060008551115b1515612ae257600080fd5b612af685518561552e90919063ffffffff16565b915081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515612b4657600080fd5b612b9882600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461558290919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600090505b8451811015612d8857600073ffffffffffffffffffffffffffffffffffffffff168582815181101515612c0f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515612c3c57600080fd5b612ca584600660008885815181101515612c5257fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461556690919063ffffffff16565b600660008784815181101515612cb757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508481815181101515612d0d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a38080600101915050612be0565b3373ffffffffffffffffffffffffffffffffffffffff167fb45345ab7bd05accbf85ceae28de4abb6b29a27e3e56ba477bd8946e5da6ee1a836040518082815260200191505060405180910390a260019250505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612e4057600080fd5b600160149054906101000a900460ff16151515612e5c57600080fd5b81600c60006101000a81548160ff02191690831515021790555060019050919050565b600160149054906101000a900460ff1681565b6000600c60009054906101000a900460ff16151515612eb057600080fd5b600160149054906101000a900460ff16151515612ecc57600080fd5b6009600084815260200190815260200160002060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600c60009054906101000a900460ff16151515612f4657600080fd5b600160149054906101000a900460ff16151515612f6257600080fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206001015490509392505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060001515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415156130a757600080fd5b600c60009054906101000a900460ff161515156130c357600080fd5b600160149054906101000a900460ff161515156130df57600080fd5b60001515600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561316c5750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156131785750600083115b80156131d75750826009600087815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561320357506009600086815260200190815260200160002060060160009054906101000a900460ff165b151561320e57600080fd5b613274836009600088815260200190815260200160002060020160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461556690919063ffffffff16565b90508060096000878152602001908152602001600020600801541015151561329b57600080fd5b613301836009600088815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461558290919063ffffffff16565b6009600087815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133be836009600088815260200190815260200160002060020160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461556690919063ffffffff16565b6009600087815260200190815260200160002060020160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019150509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000801515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415156134a757600080fd5b600c60009054906101000a900460ff161515156134c357600080fd5b600160149054906101000a900460ff161515156134df57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166009600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561354f57600080fd5b81600960008581526020019081526020016000206007019080519060200190613579929190615c8d565b506001905092915050565b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561361c5780601f106135f15761010080835404028352916020019161361c565b820191906000526020600020905b8154815290600101906020018083116135ff57829003601f168201915b5050505050905090565b6000806000801515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561368957600080fd5b600c60009054906101000a900460ff161515156136a557600080fd5b600160149054906101000a900460ff161515156136c157600080fd5b6009600086815260200190815260200160002060060160019054906101000a900460ff1680156136f15750600084115b80156137865750836009600087815260200190815260200160002060020160006009600089815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b151561379157600080fd5b6137f7846009600088815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461556690919063ffffffff16565b91508160096000878152602001908152602001600020600801541015151561381e57600080fd5b61384784600960008881526020019081526020016000206004015461552e90919063ffffffff16565b905080600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561389757600080fd5b6138e981600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461558290919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139c884600960008881526020019081526020016000206002016000600960008a815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461558290919063ffffffff16565b6009600087815260200190815260200160002060020160006009600089815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613abb846009600088815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461556690919063ffffffff16565b6009600087815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b9a8160066000600960008a815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461556690919063ffffffff16565b600660006009600089815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019250505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613c7d57600080fd5b600160149054906101000a900460ff16151515613c9957600080fd5b600082118015613ce8575081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1515613cf357600080fd5b613d4582600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461558290919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d9d8260055461558290919063ffffffff16565b6005819055508273ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a26001905092915050565b6000606060001515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515613e5e57600080fd5b600160149054906101000a900460ff16151515613e7a57600080fd5b600083118015613eda575060001515600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515613ee557600080fd5b613eee8461559b565b15613f0557613efe8484836155ae565b9150613f13565b613f1084848361598d565b91505b5092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613f7957600080fd5b600160149054906101000a900460ff16151515613f9557600080fd5b60008351111515613fa557600080fd5b600090505b82518110156141275760008382815181101515613fc357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515613ff057600080fd5b600160086000858481518110151561400457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828181518110151561406d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e06006600086858151811015156140c057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a28080600101915050613faa565b6001915050919050565b60086020528060005260406000206000915054906101000a900460ff1681565b6000801515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415156141b157600080fd5b600160149054906101000a900460ff161515156141cd57600080fd5b60008311801561422d575060001515600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b151561423857600080fd5b6142418461559b565b15614258576142518484846155ae565b9050614266565b61426384848461598d565b90505b9392505050565b60096020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156143455780601f1061431a57610100808354040283529160200191614345565b820191906000526020600020905b81548152906001019060200180831161432857829003601f168201915b5050505050908060040154908060050154908060060160009054906101000a900460ff16908060060160019054906101000a900460ff1690806007018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156144155780601f106143ea57610100808354040283529160200191614415565b820191906000526020600020905b8154815290600101906020018083116143f857829003601f168201915b5050505050908060080154905089565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561448357600080fd5b81600160146101000a81548160ff02191690831515021790555060019050919050565b6000801515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561450657600080fd5b600c60009054906101000a900460ff1615151561452257600080fd5b600160149054906101000a900460ff1615151561453e57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166009600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156145af5750600082115b15156145ba57600080fd5b8160096000858152602001908152602001600020600801819055506001905092915050565b600a5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000801515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415156146cc57600080fd5b600c60009054906101000a900460ff161515156146e857600080fd5b600160149054906101000a900460ff1615151561470457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166009600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561477457600080fd5b816009600085815260200190815260200160002060060160016101000a81548160ff0219169083151502179055506001905092915050565b600b60205282600052604060002060205281600052604060002060205280600052604060002060009250925050508060000154908060010154905082565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561484b57600080fd5b600160149054906101000a900460ff1615151561486757600080fd5b60008551118015614879575060008451115b8015614886575083518551145b151561489157600080fd5b60009150600090505b8451811015614b3857600084828151811015156148b357fe5b9060200190602002015111801561490e5750600073ffffffffffffffffffffffffffffffffffffffff1685828151811015156148eb57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b80156149875750838181518110151561492357fe5b9060200190602002015160066000878481518110151561493f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b151561499257600080fd5b614a1284828151811015156149a357fe5b906020019060200201516006600088858151811015156149bf57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461558290919063ffffffff16565b600660008784815181101515614a2457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a968482815181101515614a7d57fe5b906020019060200201518361556690919063ffffffff16565b91503373ffffffffffffffffffffffffffffffffffffffff168582815181101515614abd57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8684815181101515614b0c57fe5b906020019060200201516040518082815260200191505060405180910390a3808060010191505061489a565b614b8a82600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461556690919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019250505092915050565b600c60009054906101000a900460ff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614c4a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515614c8657600080fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360019050919050565b6000801515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515614dac57600080fd5b600160149054906101000a900460ff16151515614dc857600080fd5b600084118015614e28575060001515600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515614e3357600080fd5b614e3c8561559b565b1561526c5783600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515614e8f57600080fd5b614ee184600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461558290919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614f7684600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461556690919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff166000836040518082805190602001908083835b6020831015156150085780518252602082019150602081019050602083039250614fe3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390207c01000000000000000000000000000000000000000000000000000000009004903387876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828051906020019080838360005b838110156150e95780820151818401526020810190506150ce565b50505050905090810190601f1680156151165780820380516001836020036101000a031916815260200191505b50935050505060006040518083038185885af19350505050151561513657fe5b826040518082805190602001908083835b60208310151561516c5780518252602082019150602081019050602083039250615147565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16876040518082815260200191505060405180910390a48473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36001905061527a565b61527785858561598d565b90505b949350505050565b60008061528d615d0d565b60001515600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415156152ec57600080fd5b600c60009054906101000a900460ff1615151561530857600080fd5b600160149054906101000a900460ff1615151561532457600080fd5b61532c615c3f565b91508181600001818152505033816020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508981604001819052508781606001818152505088816080018181525050868160a0019015159081151581525050858160c0019015159081151581525050848160e00181905250838161010001818152505080600960008481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816003019080519060200190615442929190615d74565b50606082015181600401556080820151816005015560a08201518160060160006101000a81548160ff02191690831515021790555060c08201518160060160016101000a81548160ff02191690831515021790555060e08201518160070190805190602001906154b3929190615d74565b506101008201518160080155905050886009600084815260200190815260200160002060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806000015192505050979650505050505050565b6000808314156155415760009050615560565b818302905081838281151561555257fe5b0414151561555c57fe5b8090505b92915050565b6000818301905082811015151561557957fe5b80905092915050565b600082821115151561559057fe5b818303905092915050565b600080823b905060008111915050919050565b60008083600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156155ff57600080fd5b61565184600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461558290919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506156e684600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461556690919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508490508073ffffffffffffffffffffffffffffffffffffffff1663c0ee0b8a3386866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156157ee5780820151818401526020810190506157d3565b50505050905090810190601f16801561581b5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561583c57600080fd5b505af1158015615850573d6000803e3d6000fd5b50505050826040518082805190602001908083835b60208310151561588a5780518252602082019150602081019050602083039250615865565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16876040518082815260200191505060405180910390a48473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a360019150509392505050565b600082600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156159dd57600080fd5b615a2f83600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461558290919063ffffffff16565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615ac483600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461556690919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816040518082805190602001908083835b602083101515615b3d5780518252602082019150602081019050602083039250615b18565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390208473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16866040518082815260200191505060405180910390a48373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600190509392505050565b6000600160149054906101000a900460ff16151515615c5d57600080fd5b600a600081548092919060010191905055905090565b604080519081016040528060008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615cce57805160ff1916838001178555615cfc565b82800160010185558215615cfc579182015b82811115615cfb578251825591602001919060010190615ce0565b5b509050615d099190615df4565b5090565b6101206040519081016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600081526020016000815260200160001515815260200160001515815260200160608152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615db557805160ff1916838001178555615de3565b82800160010185558215615de3579182015b82811115615de2578251825591602001919060010190615dc7565b5b509050615df09190615df4565b5090565b615e1691905b80821115615e12576000816000905550600101615dfa565b5090565b905600a165627a7a72305820d8508acd25250cdc191cbdbde021003132554fef59b33c6c28c05263de44fa470029