0x608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063cba0e99611610097578063e81ffbef11610071578063e81ffbef1461048a578063f2cc0c18146104ba578063f2fde38b146104d6578063f84354f1146104f257610173565b8063cba0e9961461040c578063d608b3b21461043c578063dd62ed3e1461045a57610173565b806370a0823114610336578063715018a6146103665780638da5cb5b1461037057806395d89b411461038e578063a457c2d7146103ac578063a9059cbb146103dc57610173565b8063313ce56711610130578063313ce5671461026257806339509351146102805780633bd5d173146102b05780633c9f861d146102cc5780634549b039146102ea578063457bdf6c1461031a57610173565b806306fdde0314610178578063095ea7b31461019657806313114a9d146101c657806318160ddd146101e457806323b872dd146102025780632d83811914610232575b600080fd5b61018061050e565b60405161018d9190613c5e565b60405180910390f35b6101b060048036038101906101ab91906138bf565b61054b565b6040516101bd9190613c43565b60405180910390f35b6101ce610569565b6040516101db9190613ea0565b60405180910390f35b6101ec610573565b6040516101f99190613ea0565b60405180910390f35b61021c60048036038101906102179190613870565b61057d565b6040516102299190613c43565b60405180910390f35b61024c600480360381019061024791906138fb565b610656565b6040516102599190613ea0565b60405180910390f35b61026a6106c4565b6040516102779190613ebb565b60405180910390f35b61029a600480360381019061029591906138bf565b6106cd565b6040516102a79190613c43565b60405180910390f35b6102ca60048036038101906102c591906138fb565b610780565b005b6102d46108fc565b6040516102e19190613ea0565b60405180910390f35b61030460048036038101906102ff9190613924565b610906565b6040516103119190613ea0565b60405180910390f35b610334600480360381019061032f919061380b565b61098c565b005b610350600480360381019061034b919061380b565b610bef565b60405161035d9190613ea0565b60405180910390f35b61036e610cda565b005b610378610e2d565b6040516103859190613c28565b60405180910390f35b610396610e56565b6040516103a39190613c5e565b60405180910390f35b6103c660048036038101906103c191906138bf565b610e93565b6040516103d39190613c43565b60405180910390f35b6103f660048036038101906103f191906138bf565b610f60565b6040516104039190613c43565b60405180910390f35b6104266004803603810190610421919061380b565b610f7e565b6040516104339190613c43565b60405180910390f35b610444610fd4565b6040516104519190613ea0565b60405180910390f35b610474600480360381019061046f9190613834565b610fde565b6040516104819190613ea0565b60405180910390f35b6104a4600480360381019061049f919061380b565b611065565b6040516104b19190613c43565b60405180910390f35b6104d460048036038101906104cf919061380b565b6110bb565b005b6104f060048036038101906104eb919061380b565b6113f2565b005b61050c6004803603810190610507919061380b565b6115b4565b005b60606040518060400160405280600b81526020017f5361666553706163652d58000000000000000000000000000000000000000000815250905090565b600061055f61055861199b565b84846119a3565b6001905092915050565b6000600a54905090565b6000600854905090565b600061058a848484611b6e565b61064b8461059661199b565b610646856040518060600160405280602881526020016147b260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105fc61199b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121859092919063ffffffff16565b6119a3565b600190509392505050565b600060095482111561069d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069490613cc0565b60405180910390fd5b60006106a76121e9565b90506106bc818461221490919063ffffffff16565b915050919050565b60006009905090565b60006107766106da61199b565b8461077185600360006106eb61199b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b6119a3565b6001905092915050565b600061078a61199b565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081090613e40565b60405180910390fd5b6000610824836122bc565b505050505050905061087e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506108d68160095461234a90919063ffffffff16565b6009819055506108f183600a5461225e90919063ffffffff16565b600a81905550505050565b6000600b54905090565b600060085483111561094d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094490613d60565b60405180910390fd5b8161096e57600061095d846122bc565b505050505050905080915050610986565b6000610979846122bc565b5050505050915050809150505b92915050565b61099461199b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1890613dc0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b90613e80565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2890613d40565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c8a57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610cd5565b610cd2600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610656565b90505b919050565b610ce261199b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6690613dc0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600a81526020017f5361666553706163657800000000000000000000000000000000000000000000815250905090565b6000610f56610ea061199b565b84610f51856040518060600160405280602581526020016147da6025913960036000610eca61199b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121859092919063ffffffff16565b6119a3565b6001905092915050565b6000610f74610f6d61199b565b8484611b6e565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600c54905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6110c361199b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790613dc0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca90613e20565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125790613d20565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611334576112f0600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610656565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113fa61199b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147e90613dc0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90613ce0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115bc61199b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164090613dc0565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90613d20565b60405180910390fd5b60005b600680549050811015611997578173ffffffffffffffffffffffffffffffffffffffff1660068281548110611736577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561198457600660016006805490506117919190614144565b815481106117c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006828154811061182d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600680548061194a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611997565b808061198f90614200565b9150506116d8565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a90613ca0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a90613e60565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b619190613ea0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd590613c80565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4590613e00565b60405180910390fd5b60008111611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8890613de0565b60405180910390fd5b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d385750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d8c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d9657600090505b80611da457611da3612394565b5b611dac610e2d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e1a5750611dea610e2d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e8257600960ff16600a611e309190613fcc565b6317d78400611e3f91906140ea565b821115611e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7890613d80565b60405180910390fd5b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f255750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f3a57611f358484846123f6565b612171565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fdd5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ff257611fed8484846124eb565b612170565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120965750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120ab576120a68484846125e0565b61216f565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561214d5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121625761215d8484846126d4565b61216e565b61216d8484846125e0565b5b5b5b5b8061217f5761217e6127ca565b5b50505050565b60008383111582906121cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c49190613c5e565b60405180910390fd5b50600083856121dc9190614144565b9050809150509392505050565b60008060006121f66127e7565b9150915061220d818361221490919063ffffffff16565b9250505090565b600061225683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b32565b905092915050565b600080828461226d9190613ef2565b9050838110156122b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a990613d00565b60405180910390fd5b8091505092915050565b6000806000806000806000806000806122dd8b600d54600e54600f54612b95565b92509250925060006122f18c858585612c66565b905060006122fd6121e9565b905060008061230d8f8885612ca9565b9150915060006123208383898988612cea565b9050828183878b8b8b9e509e509e509e509e509e509e505050505050505050919395979092949650565b600061238c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612185565b905092915050565b6000600d541480156123a857506000600e54145b80156123b657506000600f54145b156123c0576123f4565b600d54601081905550600e54601181905550600f546012819055506000600d819055506000600e819055506000600f819055505b565b60006124006121e9565b90506000806000806000806000612416896122bc565b965096509650965096509650965060006124398984612d6390919063ffffffff16565b905060006124508a84612d6390919063ffffffff16565b905061245f8d8d8d8c8c612dde565b612469838e612fa4565b6124778783838888886131c7565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516124d49190613ea0565b60405180910390a350505050505050505050505050565b60006124f56121e9565b9050600080600080600080600061250b896122bc565b9650965096509650965096509650600061252e8984612d6390919063ffffffff16565b905060006125458a84612d6390919063ffffffff16565b90506125548d8d888c8c61327a565b61255e838e612fa4565b61256c8783838888886131c7565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516125c99190613ea0565b60405180910390a350505050505050505050505050565b60006125ea6121e9565b90506000806000806000806000612600896122bc565b965096509650965096509650965060006126238984612d6390919063ffffffff16565b9050600061263a8a84612d6390919063ffffffff16565b90506126488d8d8b8b613440565b612652838e612fa4565b6126608783838888886131c7565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516126bd9190613ea0565b60405180910390a350505050505050505050505050565b60006126de6121e9565b905060008060008060008060006126f4896122bc565b965096509650965096509650965060006127178984612d6390919063ffffffff16565b9050600061272e8a84612d6390919063ffffffff16565b905061273e8d8d8d8c8a8d613570565b612748838e612fa4565b6127568783838888886131c7565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516127b39190613ea0565b60405180910390a350505050505050505050505050565b601054600d81905550601154600e81905550601254600f81905550565b600080600060095490506000600854905060005b600680549050811015612af557826001600060068481548110612847577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061295b57508160026000600684815481106128f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156129725760095460085494509450505050612b2e565b612a2860016000600684815481106129b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461234a90919063ffffffff16565b9250612ae06002600060068481548110612a6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361234a90919063ffffffff16565b91508080612aed90614200565b9150506127fb565b50612b0d60085460095461221490919063ffffffff16565b821015612b2557600954600854935093505050612b2e565b81819350935050505b9091565b60008083118290612b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b709190613c5e565b60405180910390fd5b5060008385612b889190613f48565b9050809150509392505050565b600080600080612bd46064612bc66064612bb88b8d612d6390919063ffffffff16565b61221490919063ffffffff16565b61221490919063ffffffff16565b90506000612c116064612c036064612bf58b8e612d6390919063ffffffff16565b61221490919063ffffffff16565b61221490919063ffffffff16565b90506000612c4e6064612c406064612c328b8f612d6390919063ffffffff16565b61221490919063ffffffff16565b61221490919063ffffffff16565b90508282829550955095505050509450945094915050565b6000612c9f82612c9185612c83888a61234a90919063ffffffff16565b61234a90919063ffffffff16565b61234a90919063ffffffff16565b9050949350505050565b6000806000612cc18487612d6390919063ffffffff16565b90506000612cd88587612d6390919063ffffffff16565b90508181935093505050935093915050565b600080612d008386612d6390919063ffffffff16565b90506000612d178486612d6390919063ffffffff16565b90506000612d5282612d4485612d368c8e61234a90919063ffffffff16565b61234a90919063ffffffff16565b61234a90919063ffffffff16565b905080935050505095945050505050565b600080831415612d765760009050612dd8565b60008284612d8491906140ea565b9050828482612d939190613f48565b14612dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dca90613da0565b60405180910390fd5b809150505b92915050565b612e3083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234a90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ec582600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234a90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f5a81600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b6000612fae6121e9565b90506000612fc58285612d6390919063ffffffff16565b905060006007600081548110613004577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061308382600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061311885600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516131b89190613ea0565b60405180910390a35050505050565b613200846131f2876131e48a60095461234a90919063ffffffff16565b61234a90919063ffffffff16565b61234a90919063ffffffff16565b60098190555061321b83600a5461225e90919063ffffffff16565b600a8190555061323682600b5461225e90919063ffffffff16565b600b8190555061325181600c5461225e90919063ffffffff16565b600c8190555061326c8260085461234a90919063ffffffff16565b600881905550505050505050565b6132cc82600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234a90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061336183600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133f681600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b61349282600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234a90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061352781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b6135c284600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234a90919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061365783600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234a90919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136ec82600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061378181600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000813590506137db8161476c565b92915050565b6000813590506137f081614783565b92915050565b6000813590506138058161479a565b92915050565b60006020828403121561381d57600080fd5b600061382b848285016137cc565b91505092915050565b6000806040838503121561384757600080fd5b6000613855858286016137cc565b9250506020613866858286016137cc565b9150509250929050565b60008060006060848603121561388557600080fd5b6000613893868287016137cc565b93505060206138a4868287016137cc565b92505060406138b5868287016137f6565b9150509250925092565b600080604083850312156138d257600080fd5b60006138e0858286016137cc565b92505060206138f1858286016137f6565b9150509250929050565b60006020828403121561390d57600080fd5b600061391b848285016137f6565b91505092915050565b6000806040838503121561393757600080fd5b6000613945858286016137f6565b9250506020613956858286016137e1565b9150509250929050565b61396981614178565b82525050565b6139788161418a565b82525050565b600061398982613ed6565b6139938185613ee1565b93506139a38185602086016141cd565b6139ac816142a7565b840191505092915050565b60006139c4602583613ee1565b91506139cf826142c5565b604082019050919050565b60006139e7602483613ee1565b91506139f282614314565b604082019050919050565b6000613a0a602a83613ee1565b9150613a1582614363565b604082019050919050565b6000613a2d602683613ee1565b9150613a38826143b2565b604082019050919050565b6000613a50601b83613ee1565b9150613a5b82614401565b602082019050919050565b6000613a73601b83613ee1565b9150613a7e8261442a565b602082019050919050565b6000613a96602283613ee1565b9150613aa182614453565b604082019050919050565b6000613ab9601f83613ee1565b9150613ac4826144a2565b602082019050919050565b6000613adc602883613ee1565b9150613ae7826144cb565b604082019050919050565b6000613aff602183613ee1565b9150613b0a8261451a565b604082019050919050565b6000613b22602083613ee1565b9150613b2d82614569565b602082019050919050565b6000613b45602983613ee1565b9150613b5082614592565b604082019050919050565b6000613b68602383613ee1565b9150613b73826145e1565b604082019050919050565b6000613b8b602283613ee1565b9150613b9682614630565b604082019050919050565b6000613bae602c83613ee1565b9150613bb98261467f565b604082019050919050565b6000613bd1602283613ee1565b9150613bdc826146ce565b604082019050919050565b6000613bf4603283613ee1565b9150613bff8261471d565b604082019050919050565b613c13816141b6565b82525050565b613c22816141c0565b82525050565b6000602082019050613c3d6000830184613960565b92915050565b6000602082019050613c58600083018461396f565b92915050565b60006020820190508181036000830152613c78818461397e565b905092915050565b60006020820190508181036000830152613c99816139b7565b9050919050565b60006020820190508181036000830152613cb9816139da565b9050919050565b60006020820190508181036000830152613cd9816139fd565b9050919050565b60006020820190508181036000830152613cf981613a20565b9050919050565b60006020820190508181036000830152613d1981613a43565b9050919050565b60006020820190508181036000830152613d3981613a66565b9050919050565b60006020820190508181036000830152613d5981613a89565b9050919050565b60006020820190508181036000830152613d7981613aac565b9050919050565b60006020820190508181036000830152613d9981613acf565b9050919050565b60006020820190508181036000830152613db981613af2565b9050919050565b60006020820190508181036000830152613dd981613b15565b9050919050565b60006020820190508181036000830152613df981613b38565b9050919050565b60006020820190508181036000830152613e1981613b5b565b9050919050565b60006020820190508181036000830152613e3981613b7e565b9050919050565b60006020820190508181036000830152613e5981613ba1565b9050919050565b60006020820190508181036000830152613e7981613bc4565b9050919050565b60006020820190508181036000830152613e9981613be7565b9050919050565b6000602082019050613eb56000830184613c0a565b92915050565b6000602082019050613ed06000830184613c19565b92915050565b600081519050919050565b600082825260208201905092915050565b6000613efd826141b6565b9150613f08836141b6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f3d57613f3c614249565b5b828201905092915050565b6000613f53826141b6565b9150613f5e836141b6565b925082613f6e57613f6d614278565b5b828204905092915050565b6000808291508390505b6001851115613fc357808604811115613f9f57613f9e614249565b5b6001851615613fae5780820291505b8081029050613fbc856142b8565b9450613f83565b94509492505050565b6000613fd7826141b6565b9150613fe2836141b6565b925061400f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614017565b905092915050565b60008261402757600190506140e3565b8161403557600090506140e3565b816001811461404b576002811461405557614084565b60019150506140e3565b60ff84111561406757614066614249565b5b8360020a91508482111561407e5761407d614249565b5b506140e3565b5060208310610133831016604e8410600b84101617156140b95782820a9050838111156140b4576140b3614249565b5b6140e3565b6140c68484846001613f79565b925090508184048111156140dd576140dc614249565b5b81810290505b9392505050565b60006140f5826141b6565b9150614100836141b6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561413957614138614249565b5b828202905092915050565b600061414f826141b6565b915061415a836141b6565b92508282101561416d5761416c614249565b5b828203905092915050565b600061418382614196565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156141eb5780820151818401526020810190506141d0565b838111156141fa576000848401525b50505050565b600061420b826141b6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561423e5761423d614249565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c72656164792063686172697479206163636f7560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520556e697377617020726f757465722063616e206e6f7420626520746860008201527f652063686172697479206163636f756e742e0000000000000000000000000000602082015250565b61477581614178565b811461478057600080fd5b50565b61478c8161418a565b811461479757600080fd5b50565b6147a3816141b6565b81146147ae57600080fd5b5056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122099cca3c48bbd11b57c5edef3a0c8dff53400bc00cb0a4f5667215deac5fcd3c364736f6c63430008040033
0x6080604052600960ff16600a62000017919062000294565b6317d78400620000289190620003d1565b6008556008546000196200003d919062000477565b6000196200004c919062000432565b6009556064600d556064600e5561012c600f55600d54601055600e54601155600f546012553480156200007e57600080fd5b506000620000916200020360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060095460016000620001466200020360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001946200020360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051620001f591906200021c565b60405180910390a36200051a565b600033905090565b62000216816200046d565b82525050565b60006020820190506200023360008301846200020b565b92915050565b6000808291508390505b60018511156200028b57808604811115620002635762000262620004af565b5b6001851615620002735780820291505b808102905062000283856200050d565b945062000243565b94509492505050565b6000620002a1826200046d565b9150620002ae836200046d565b9250620002dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620002e5565b905092915050565b600082620002f75760019050620003ca565b81620003075760009050620003ca565b81600181146200032057600281146200032b5762000361565b6001915050620003ca565b60ff84111562000340576200033f620004af565b5b8360020a9150848211156200035a5762000359620004af565b5b50620003ca565b5060208310610133831016604e8410600b84101617156200039b5782820a905083811115620003955762000394620004af565b5b620003ca565b620003aa848484600162000239565b92509050818404811115620003c457620003c3620004af565b5b81810290505b9392505050565b6000620003de826200046d565b9150620003eb836200046d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620004275762000426620004af565b5b828202905092915050565b60006200043f826200046d565b91506200044c836200046d565b925082821015620004625762000461620004af565b5b828203905092915050565b6000819050919050565b600062000484826200046d565b915062000491836200046d565b925082620004a457620004a3620004de565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008160011c9050919050565b614834806200052a6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063cba0e99611610097578063e81ffbef11610071578063e81ffbef1461048a578063f2cc0c18146104ba578063f2fde38b146104d6578063f84354f1146104f257610173565b8063cba0e9961461040c578063d608b3b21461043c578063dd62ed3e1461045a57610173565b806370a0823114610336578063715018a6146103665780638da5cb5b1461037057806395d89b411461038e578063a457c2d7146103ac578063a9059cbb146103dc57610173565b8063313ce56711610130578063313ce5671461026257806339509351146102805780633bd5d173146102b05780633c9f861d146102cc5780634549b039146102ea578063457bdf6c1461031a57610173565b806306fdde0314610178578063095ea7b31461019657806313114a9d146101c657806318160ddd146101e457806323b872dd146102025780632d83811914610232575b600080fd5b61018061050e565b60405161018d9190613c5e565b60405180910390f35b6101b060048036038101906101ab91906138bf565b61054b565b6040516101bd9190613c43565b60405180910390f35b6101ce610569565b6040516101db9190613ea0565b60405180910390f35b6101ec610573565b6040516101f99190613ea0565b60405180910390f35b61021c60048036038101906102179190613870565b61057d565b6040516102299190613c43565b60405180910390f35b61024c600480360381019061024791906138fb565b610656565b6040516102599190613ea0565b60405180910390f35b61026a6106c4565b6040516102779190613ebb565b60405180910390f35b61029a600480360381019061029591906138bf565b6106cd565b6040516102a79190613c43565b60405180910390f35b6102ca60048036038101906102c591906138fb565b610780565b005b6102d46108fc565b6040516102e19190613ea0565b60405180910390f35b61030460048036038101906102ff9190613924565b610906565b6040516103119190613ea0565b60405180910390f35b610334600480360381019061032f919061380b565b61098c565b005b610350600480360381019061034b919061380b565b610bef565b60405161035d9190613ea0565b60405180910390f35b61036e610cda565b005b610378610e2d565b6040516103859190613c28565b60405180910390f35b610396610e56565b6040516103a39190613c5e565b60405180910390f35b6103c660048036038101906103c191906138bf565b610e93565b6040516103d39190613c43565b60405180910390f35b6103f660048036038101906103f191906138bf565b610f60565b6040516104039190613c43565b60405180910390f35b6104266004803603810190610421919061380b565b610f7e565b6040516104339190613c43565b60405180910390f35b610444610fd4565b6040516104519190613ea0565b60405180910390f35b610474600480360381019061046f9190613834565b610fde565b6040516104819190613ea0565b60405180910390f35b6104a4600480360381019061049f919061380b565b611065565b6040516104b19190613c43565b60405180910390f35b6104d460048036038101906104cf919061380b565b6110bb565b005b6104f060048036038101906104eb919061380b565b6113f2565b005b61050c6004803603810190610507919061380b565b6115b4565b005b60606040518060400160405280600b81526020017f5361666553706163652d58000000000000000000000000000000000000000000815250905090565b600061055f61055861199b565b84846119a3565b6001905092915050565b6000600a54905090565b6000600854905090565b600061058a848484611b6e565b61064b8461059661199b565b610646856040518060600160405280602881526020016147b260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105fc61199b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121859092919063ffffffff16565b6119a3565b600190509392505050565b600060095482111561069d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069490613cc0565b60405180910390fd5b60006106a76121e9565b90506106bc818461221490919063ffffffff16565b915050919050565b60006009905090565b60006107766106da61199b565b8461077185600360006106eb61199b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b6119a3565b6001905092915050565b600061078a61199b565b9050600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610819576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081090613e40565b60405180910390fd5b6000610824836122bc565b505050505050905061087e81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506108d68160095461234a90919063ffffffff16565b6009819055506108f183600a5461225e90919063ffffffff16565b600a81905550505050565b6000600b54905090565b600060085483111561094d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094490613d60565b60405180910390fd5b8161096e57600061095d846122bc565b505050505050905080915050610986565b6000610979846122bc565b5050505050915050809150505b92915050565b61099461199b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1890613dc0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b90613e80565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2890613d40565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506007819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c8a57600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610cd5565b610cd2600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610656565b90505b919050565b610ce261199b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6690613dc0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600a81526020017f5361666553706163657800000000000000000000000000000000000000000000815250905090565b6000610f56610ea061199b565b84610f51856040518060600160405280602581526020016147da6025913960036000610eca61199b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121859092919063ffffffff16565b6119a3565b6001905092915050565b6000610f74610f6d61199b565b8484611b6e565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600c54905090565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6110c361199b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790613dc0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ca90613e20565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125790613d20565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611334576112f0600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610656565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6113fa61199b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147e90613dc0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90613ce0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115bc61199b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164090613dc0565b60405180910390fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90613d20565b60405180910390fd5b60005b600680549050811015611997578173ffffffffffffffffffffffffffffffffffffffff1660068281548110611736577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561198457600660016006805490506117919190614144565b815481106117c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006828154811061182d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600680548061194a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611997565b808061198f90614200565b9150506116d8565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a90613ca0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a90613e60565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b619190613ea0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd590613c80565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4590613e00565b60405180910390fd5b60008111611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8890613de0565b60405180910390fd5b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d385750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d8c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d9657600090505b80611da457611da3612394565b5b611dac610e2d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e1a5750611dea610e2d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e8257600960ff16600a611e309190613fcc565b6317d78400611e3f91906140ea565b821115611e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7890613d80565b60405180910390fd5b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f255750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f3a57611f358484846123f6565b612171565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fdd5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ff257611fed8484846124eb565b612170565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120965750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120ab576120a68484846125e0565b61216f565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561214d5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121625761215d8484846126d4565b61216e565b61216d8484846125e0565b5b5b5b5b8061217f5761217e6127ca565b5b50505050565b60008383111582906121cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c49190613c5e565b60405180910390fd5b50600083856121dc9190614144565b9050809150509392505050565b60008060006121f66127e7565b9150915061220d818361221490919063ffffffff16565b9250505090565b600061225683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b32565b905092915050565b600080828461226d9190613ef2565b9050838110156122b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a990613d00565b60405180910390fd5b8091505092915050565b6000806000806000806000806000806122dd8b600d54600e54600f54612b95565b92509250925060006122f18c858585612c66565b905060006122fd6121e9565b905060008061230d8f8885612ca9565b9150915060006123208383898988612cea565b9050828183878b8b8b9e509e509e509e509e509e509e505050505050505050919395979092949650565b600061238c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612185565b905092915050565b6000600d541480156123a857506000600e54145b80156123b657506000600f54145b156123c0576123f4565b600d54601081905550600e54601181905550600f546012819055506000600d819055506000600e819055506000600f819055505b565b60006124006121e9565b90506000806000806000806000612416896122bc565b965096509650965096509650965060006124398984612d6390919063ffffffff16565b905060006124508a84612d6390919063ffffffff16565b905061245f8d8d8d8c8c612dde565b612469838e612fa4565b6124778783838888886131c7565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516124d49190613ea0565b60405180910390a350505050505050505050505050565b60006124f56121e9565b9050600080600080600080600061250b896122bc565b9650965096509650965096509650600061252e8984612d6390919063ffffffff16565b905060006125458a84612d6390919063ffffffff16565b90506125548d8d888c8c61327a565b61255e838e612fa4565b61256c8783838888886131c7565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516125c99190613ea0565b60405180910390a350505050505050505050505050565b60006125ea6121e9565b90506000806000806000806000612600896122bc565b965096509650965096509650965060006126238984612d6390919063ffffffff16565b9050600061263a8a84612d6390919063ffffffff16565b90506126488d8d8b8b613440565b612652838e612fa4565b6126608783838888886131c7565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516126bd9190613ea0565b60405180910390a350505050505050505050505050565b60006126de6121e9565b905060008060008060008060006126f4896122bc565b965096509650965096509650965060006127178984612d6390919063ffffffff16565b9050600061272e8a84612d6390919063ffffffff16565b905061273e8d8d8d8c8a8d613570565b612748838e612fa4565b6127568783838888886131c7565b8b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef886040516127b39190613ea0565b60405180910390a350505050505050505050505050565b601054600d81905550601154600e81905550601254600f81905550565b600080600060095490506000600854905060005b600680549050811015612af557826001600060068481548110612847577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061295b57508160026000600684815481106128f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156129725760095460085494509450505050612b2e565b612a2860016000600684815481106129b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461234a90919063ffffffff16565b9250612ae06002600060068481548110612a6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361234a90919063ffffffff16565b91508080612aed90614200565b9150506127fb565b50612b0d60085460095461221490919063ffffffff16565b821015612b2557600954600854935093505050612b2e565b81819350935050505b9091565b60008083118290612b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b709190613c5e565b60405180910390fd5b5060008385612b889190613f48565b9050809150509392505050565b600080600080612bd46064612bc66064612bb88b8d612d6390919063ffffffff16565b61221490919063ffffffff16565b61221490919063ffffffff16565b90506000612c116064612c036064612bf58b8e612d6390919063ffffffff16565b61221490919063ffffffff16565b61221490919063ffffffff16565b90506000612c4e6064612c406064612c328b8f612d6390919063ffffffff16565b61221490919063ffffffff16565b61221490919063ffffffff16565b90508282829550955095505050509450945094915050565b6000612c9f82612c9185612c83888a61234a90919063ffffffff16565b61234a90919063ffffffff16565b61234a90919063ffffffff16565b9050949350505050565b6000806000612cc18487612d6390919063ffffffff16565b90506000612cd88587612d6390919063ffffffff16565b90508181935093505050935093915050565b600080612d008386612d6390919063ffffffff16565b90506000612d178486612d6390919063ffffffff16565b90506000612d5282612d4485612d368c8e61234a90919063ffffffff16565b61234a90919063ffffffff16565b61234a90919063ffffffff16565b905080935050505095945050505050565b600080831415612d765760009050612dd8565b60008284612d8491906140ea565b9050828482612d939190613f48565b14612dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dca90613da0565b60405180910390fd5b809150505b92915050565b612e3083600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234a90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ec582600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234a90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f5a81600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b6000612fae6121e9565b90506000612fc58285612d6390919063ffffffff16565b905060006007600081548110613004577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061308382600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061311885600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516131b89190613ea0565b60405180910390a35050505050565b613200846131f2876131e48a60095461234a90919063ffffffff16565b61234a90919063ffffffff16565b61234a90919063ffffffff16565b60098190555061321b83600a5461225e90919063ffffffff16565b600a8190555061323682600b5461225e90919063ffffffff16565b600b8190555061325181600c5461225e90919063ffffffff16565b600c8190555061326c8260085461234a90919063ffffffff16565b600881905550505050505050565b6132cc82600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234a90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061336183600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133f681600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b61349282600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234a90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061352781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b6135c284600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234a90919063ffffffff16565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061365783600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234a90919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136ec82600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061378181600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225e90919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000813590506137db8161476c565b92915050565b6000813590506137f081614783565b92915050565b6000813590506138058161479a565b92915050565b60006020828403121561381d57600080fd5b600061382b848285016137cc565b91505092915050565b6000806040838503121561384757600080fd5b6000613855858286016137cc565b9250506020613866858286016137cc565b9150509250929050565b60008060006060848603121561388557600080fd5b6000613893868287016137cc565b93505060206138a4868287016137cc565b92505060406138b5868287016137f6565b9150509250925092565b600080604083850312156138d257600080fd5b60006138e0858286016137cc565b92505060206138f1858286016137f6565b9150509250929050565b60006020828403121561390d57600080fd5b600061391b848285016137f6565b91505092915050565b6000806040838503121561393757600080fd5b6000613945858286016137f6565b9250506020613956858286016137e1565b9150509250929050565b61396981614178565b82525050565b6139788161418a565b82525050565b600061398982613ed6565b6139938185613ee1565b93506139a38185602086016141cd565b6139ac816142a7565b840191505092915050565b60006139c4602583613ee1565b91506139cf826142c5565b604082019050919050565b60006139e7602483613ee1565b91506139f282614314565b604082019050919050565b6000613a0a602a83613ee1565b9150613a1582614363565b604082019050919050565b6000613a2d602683613ee1565b9150613a38826143b2565b604082019050919050565b6000613a50601b83613ee1565b9150613a5b82614401565b602082019050919050565b6000613a73601b83613ee1565b9150613a7e8261442a565b602082019050919050565b6000613a96602283613ee1565b9150613aa182614453565b604082019050919050565b6000613ab9601f83613ee1565b9150613ac4826144a2565b602082019050919050565b6000613adc602883613ee1565b9150613ae7826144cb565b604082019050919050565b6000613aff602183613ee1565b9150613b0a8261451a565b604082019050919050565b6000613b22602083613ee1565b9150613b2d82614569565b602082019050919050565b6000613b45602983613ee1565b9150613b5082614592565b604082019050919050565b6000613b68602383613ee1565b9150613b73826145e1565b604082019050919050565b6000613b8b602283613ee1565b9150613b9682614630565b604082019050919050565b6000613bae602c83613ee1565b9150613bb98261467f565b604082019050919050565b6000613bd1602283613ee1565b9150613bdc826146ce565b604082019050919050565b6000613bf4603283613ee1565b9150613bff8261471d565b604082019050919050565b613c13816141b6565b82525050565b613c22816141c0565b82525050565b6000602082019050613c3d6000830184613960565b92915050565b6000602082019050613c58600083018461396f565b92915050565b60006020820190508181036000830152613c78818461397e565b905092915050565b60006020820190508181036000830152613c99816139b7565b9050919050565b60006020820190508181036000830152613cb9816139da565b9050919050565b60006020820190508181036000830152613cd9816139fd565b9050919050565b60006020820190508181036000830152613cf981613a20565b9050919050565b60006020820190508181036000830152613d1981613a43565b9050919050565b60006020820190508181036000830152613d3981613a66565b9050919050565b60006020820190508181036000830152613d5981613a89565b9050919050565b60006020820190508181036000830152613d7981613aac565b9050919050565b60006020820190508181036000830152613d9981613acf565b9050919050565b60006020820190508181036000830152613db981613af2565b9050919050565b60006020820190508181036000830152613dd981613b15565b9050919050565b60006020820190508181036000830152613df981613b38565b9050919050565b60006020820190508181036000830152613e1981613b5b565b9050919050565b60006020820190508181036000830152613e3981613b7e565b9050919050565b60006020820190508181036000830152613e5981613ba1565b9050919050565b60006020820190508181036000830152613e7981613bc4565b9050919050565b60006020820190508181036000830152613e9981613be7565b9050919050565b6000602082019050613eb56000830184613c0a565b92915050565b6000602082019050613ed06000830184613c19565b92915050565b600081519050919050565b600082825260208201905092915050565b6000613efd826141b6565b9150613f08836141b6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f3d57613f3c614249565b5b828201905092915050565b6000613f53826141b6565b9150613f5e836141b6565b925082613f6e57613f6d614278565b5b828204905092915050565b6000808291508390505b6001851115613fc357808604811115613f9f57613f9e614249565b5b6001851615613fae5780820291505b8081029050613fbc856142b8565b9450613f83565b94509492505050565b6000613fd7826141b6565b9150613fe2836141b6565b925061400f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614017565b905092915050565b60008261402757600190506140e3565b8161403557600090506140e3565b816001811461404b576002811461405557614084565b60019150506140e3565b60ff84111561406757614066614249565b5b8360020a91508482111561407e5761407d614249565b5b506140e3565b5060208310610133831016604e8410600b84101617156140b95782820a9050838111156140b4576140b3614249565b5b6140e3565b6140c68484846001613f79565b925090508184048111156140dd576140dc614249565b5b81810290505b9392505050565b60006140f5826141b6565b9150614100836141b6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561413957614138614249565b5b828202905092915050565b600061414f826141b6565b915061415a836141b6565b92508282101561416d5761416c614249565b5b828203905092915050565b600061418382614196565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156141eb5780820151818401526020810190506141d0565b838111156141fa576000848401525b50505050565b600061420b826141b6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561423e5761423d614249565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f42455032303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f4163636f756e7420697320616c72656164792063686172697479206163636f7560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f42455032303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b7f42455032303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520556e697377617020726f757465722063616e206e6f7420626520746860008201527f652063686172697479206163636f756e742e0000000000000000000000000000602082015250565b61477581614178565b811461478057600080fd5b50565b61478c8161418a565b811461479757600080fd5b50565b6147a3816141b6565b81146147ae57600080fd5b5056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122099cca3c48bbd11b57c5edef3a0c8dff53400bc00cb0a4f5667215deac5fcd3c364736f6c63430008040033