60806040526040518060600160405280602281526020016200459160229139600b90805190602001906200003592919062000269565b503480156200004357600080fd5b506040518060400160405280600881526020017f736372616d626c650000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f53580000000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000c892919062000269565b508060019080519060200190620000e192919062000269565b50505062000104620000f86200019b60201b60201c565b620001a360201b60201c565b6000600a6000600960008154809291906200011f9062000359565b919050558152602001908152602001600020905060008160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008160070160006101000a81548160ff0219169083151502179055505062000405565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002779062000323565b90600052602060002090601f0160209004810192826200029b5760008555620002e7565b82601f10620002b657805160ff1916838001178555620002e7565b82800160010185558215620002e7579182015b82811115620002e6578251825591602001919060010190620002c9565b5b509050620002f69190620002fa565b5090565b5b8082111562000315576000816000905550600101620002fb565b5090565b6000819050919050565b600060028204905060018216806200033c57607f821691505b60208210811415620003535762000352620003d6565b5b50919050565b6000620003668262000319565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156200039c576200039b620003a7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61417c80620004156000396000f3fe60806040526004361061012a5760003560e01c806370a08231116100ab578063a22cb4651161006f578063a22cb465146103fb578063a9ed125d14610424578063b88d4fde1461044d578063c87b56dd14610476578063e985e9c5146104b3578063f2fde38b146104f05761012a565b806370a0823114610314578063715018a6146103515780638da5cb5b14610368578063935e08b11461039357806395d89b41146103d05761012a565b806340697298116100f2578063406972981461022657806342842e0e1461024f5780635a1f3c28146102785780636352211e146102bb578063655a2b1a146102f85761012a565b806301ffc9a71461012f57806306fdde031461016c578063081812fc14610197578063095ea7b3146101d457806323b872dd146101fd575b600080fd5b34801561013b57600080fd5b5061015660048036038101906101519190612a21565b610519565b60405161016391906132c3565b60405180910390f35b34801561017857600080fd5b506101816105fb565b60405161018e9190613354565b60405180910390f35b3480156101a357600080fd5b506101be60048036038101906101b99190612b02565b61068d565b6040516101cb919061323a565b60405180910390f35b3480156101e057600080fd5b506101fb60048036038101906101f6919061296a565b610712565b005b34801561020957600080fd5b50610224600480360381019061021f9190612864565b61082a565b005b34801561023257600080fd5b5061024d60048036038101906102489190612a73565b61088a565b005b34801561025b57600080fd5b5061027660048036038101906102719190612864565b6109d9565b005b34801561028457600080fd5b5061029f600480360381019061029a9190612b02565b6109f9565b6040516102b297969594939291906132de565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd9190612b02565b610b76565b6040516102ef919061323a565b60405180910390f35b610312600480360381019061030d91906129a6565b610c28565b005b34801561032057600080fd5b5061033b600480360381019061033691906127ff565b610fc8565b6040516103489190613636565b60405180910390f35b34801561035d57600080fd5b50610366611080565b005b34801561037457600080fd5b5061037d611108565b60405161038a919061323a565b60405180910390f35b34801561039f57600080fd5b506103ba60048036038101906103b59190612b02565b611132565b6040516103c791906132a1565b60405180910390f35b3480156103dc57600080fd5b506103e5611268565b6040516103f29190613354565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d919061292e565b6112fa565b005b34801561043057600080fd5b5061044b60048036038101906104469190612b2b565b61147b565b005b34801561045957600080fd5b50610474600480360381019061046f91906128b3565b611633565b005b34801561048257600080fd5b5061049d60048036038101906104989190612b02565b611695565b6040516104aa9190613354565b60405180910390f35b3480156104bf57600080fd5b506104da60048036038101906104d59190612828565b6117e6565b6040516104e791906132c3565b60405180910390f35b3480156104fc57600080fd5b50610517600480360381019061051291906127ff565b61187a565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105e457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806105f457506105f382611972565b5b9050919050565b60606000805461060a90613954565b80601f016020809104026020016040519081016040528092919081815260200182805461063690613954565b80156106835780601f1061065857610100808354040283529160200191610683565b820191906000526020600020905b81548152906001019060200180831161066657829003601f168201915b5050505050905090565b6000610698826119dc565b6106d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce90613556565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061071d82610b76565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561078e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610785906135f6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107ad611a48565b73ffffffffffffffffffffffffffffffffffffffff1614806107dc57506107db816107d6611a48565b6117e6565b5b61081b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610812906134d6565b60405180910390fd5b6108258383611a50565b505050565b61083b610835611a48565b82611b09565b61087a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087190613616565b60405180910390fd5b610885838383611be7565b505050565b610892611a48565b73ffffffffffffffffffffffffffffffffffffffff166108b0611108565b73ffffffffffffffffffffffffffffffffffffffff1614610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd90613576565b60405180910390fd5b6000600a60006009600081548092919061091f906139b7565b91905055815260200190815260200160002090508581600001908051906020019061094b92919061259d565b50848160040181905550838160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082816002018190555081816003018190555060008160070160006101000a81548160ff02191690831515021790555060008160050181905550505050505050565b6109f483838360405180602001604052806000815250611633565b505050565b6060600080600080600080600a6000898152602001908152602001600020600001600a60008a815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008b815260200190815260200160002060020154600a60008c815260200190815260200160002060030154600a60008d815260200190815260200160002060040154600a60008e815260200190815260200160002060050154600a60008f815260200190815260200160002060070160009054906101000a900460ff16868054610add90613954565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0990613954565b8015610b565780601f10610b2b57610100808354040283529160200191610b56565b820191906000526020600020905b815481529060010190602001808311610b3957829003601f168201915b505050505096509650965096509650965096509650919395979092949650565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1690613516565b60405180910390fd5b80915050919050565b600a600084815260200190815260200160002060070160009054906101000a900460ff16610c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8290613456565b60405180910390fd5b600a600084815260200190815260200160002060040154600a6000858152602001908152602001600020600501541115610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf1906134b6565b60405180910390fd5b610d048383611e43565b15610d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3b90613496565b60405180910390fd5b34600a6000858152602001908152602001600020600301541115610d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9490613436565b60405180910390fd5b6000600a600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610de2611108565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc600a600088815260200190815260200160002060020154606434610e2291906137df565b610e2c9190613810565b9081150290604051600060405180830381858888f19350505050158015610e57573d6000803e3d6000fd5b508073ffffffffffffffffffffffffffffffffffffffff166108fc600a6000888152602001908152602001600020600201546064610e95919061386a565b606434610ea291906137df565b610eac9190613810565b9081150290604051600060405180830381858888f19350505050158015610ed7573d6000803e3d6000fd5b506000610ee48686611e78565b905083600860008381526020019081526020016000209080519060200190610f0d929190612623565b50610f188782611ea0565b84600a60008881526020019081526020016000206006016000600a60008a8152602001908152602001600020600501548152602001908152602001600020819055506001600a60008881526020019081526020016000206005016000828254610f819190613789565b925050819055507fb8c7997ddf4bbbf0c6f634ec98f43e1e43551d3cdbf37cbf6b11a5b3d6d4708481604051610fb79190613636565b60405180910390a150505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611039576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611030906134f6565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611088611a48565b73ffffffffffffffffffffffffffffffffffffffff166110a6611108565b73ffffffffffffffffffffffffffffffffffffffff16146110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f390613576565b60405180910390fd5b6111066000611ebe565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606000600a60008481526020019081526020016000206005015467ffffffffffffffff81111561118c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156111ba5781602001602082028036833780820191505090505b50905060005b600a60008581526020019081526020016000206005015481101561125e57600a600085815260200190815260200160002060060160008281526020019081526020016000205482828151811061123f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508080611256906139b7565b9150506111c0565b5080915050919050565b60606001805461127790613954565b80601f01602080910402602001604051908101604052809291908181526020018280546112a390613954565b80156112f05780601f106112c5576101008083540402835291602001916112f0565b820191906000526020600020905b8154815290600101906020018083116112d357829003601f168201915b5050505050905090565b611302611a48565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611370576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136790613416565b60405180910390fd5b806005600061137d611a48565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661142a611a48565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161146f91906132c3565b60405180910390a35050565b611483611a48565b73ffffffffffffffffffffffffffffffffffffffff166114a1611108565b73ffffffffffffffffffffffffffffffffffffffff16146114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee90613576565b60405180910390fd5b6000871161153a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153190613376565b60405180910390fd5b60095487111561157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157690613596565b60405180910390fd5b6000600a60008981526020019081526020016000209050868160000190805190602001906115ae92919061259d565b50858160040181905550848160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160020181905550828160030181905550818160070160006101000a81548160ff0219169083151502179055505050505050505050565b61164461163e611a48565b83611b09565b611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a90613616565b60405180910390fd5b61168f84848484611f84565b50505050565b60606116a0826119dc565b6116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d6906135d6565b60405180910390fd5b60006116ea83611fe0565b905060006116f784611ffc565b90506000604051806020016040528060008152509050600060086000878152602001908152602001600020805461172d90613954565b9050111561177157600b6008600087815260200190815260200160002060405160200161175b92919061320b565b60405160208183030381529060405290506117db565b6000600a600085815260200190815260200160002060000160405160200161179991906131ad565b6040516020818303038152906040529050600b816117b685612018565b6040516020016117c8939291906131c4565b6040516020818303038152906040529150505b809350505050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611882611a48565b73ffffffffffffffffffffffffffffffffffffffff166118a0611108565b73ffffffffffffffffffffffffffffffffffffffff16146118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed90613576565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d906133b6565b60405180910390fd5b61196f81611ebe565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611ac383610b76565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611b14826119dc565b611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a90613476565b60405180910390fd5b6000611b5e83610b76565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611bcd57508373ffffffffffffffffffffffffffffffffffffffff16611bb58461068d565b73ffffffffffffffffffffffffffffffffffffffff16145b80611bde5750611bdd81856117e6565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611c0782610b76565b73ffffffffffffffffffffffffffffffffffffffff1614611c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c54906135b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc4906133f6565b60405180910390fd5b611cd88383836121c5565b611ce3600082611a50565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d33919061386a565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d8a9190613789565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600080600a60008581526020019081526020016000206006016000848152602001908152602001600020541415905092915050565b6000808284612710611e8a9190613810565b611e949190613789565b90508091505092915050565b611eba8282604051806020016040528060008152506121ca565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611f8f848484611be7565b611f9b84848484612225565b611fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd190613396565b60405180910390fd5b50505050565b60008061271083611ff191906137df565b905080915050919050565b6000806127108361200d9190613a00565b905080915050919050565b60606000821415612060576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506121c0565b600082905060005b6000821461209257808061207b906139b7565b915050600a8261208b91906137df565b9150612068565b60008167ffffffffffffffff8111156120d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156121065781602001600182028036833780820191505090505b5090505b600085146121b95760018261211f919061386a565b9150600a8561212e9190613a00565b603061213a9190613789565b60f81b818381518110612176577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856121b291906137df565b945061210a565b8093505050505b919050565b505050565b6121d483836123bc565b6121e16000848484612225565b612220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221790613396565b60405180910390fd5b505050565b60006122468473ffffffffffffffffffffffffffffffffffffffff1661258a565b156123af578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261226f611a48565b8786866040518563ffffffff1660e01b81526004016122919493929190613255565b602060405180830381600087803b1580156122ab57600080fd5b505af19250505080156122dc57506040513d601f19601f820116820180604052508101906122d99190612a4a565b60015b61235f573d806000811461230c576040519150601f19603f3d011682016040523d82523d6000602084013e612311565b606091505b50600081511415612357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234e90613396565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506123b4565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561242c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242390613536565b60405180910390fd5b612435816119dc565b15612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246c906133d6565b60405180910390fd5b612481600083836121c5565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124d19190613789565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8280546125a990613954565b90600052602060002090601f0160209004810192826125cb5760008555612612565b82601f106125e457805160ff1916838001178555612612565b82800160010185558215612612579182015b828111156126115782518255916020019190600101906125f6565b5b50905061261f91906126a9565b5090565b82805461262f90613954565b90600052602060002090601f0160209004810192826126515760008555612698565b82601f1061266a57805160ff1916838001178555612698565b82800160010185558215612698579182015b8281111561269757825182559160200191906001019061267c565b5b5090506126a591906126a9565b5090565b5b808211156126c25760008160009055506001016126aa565b5090565b60006126d96126d484613676565b613651565b9050828152602081018484840111156126f157600080fd5b6126fc848285613912565b509392505050565b6000612717612712846136a7565b613651565b90508281526020810184848401111561272f57600080fd5b61273a848285613912565b509392505050565b600081359050612751816140ea565b92915050565b60008135905061276681614101565b92915050565b60008135905061277b81614118565b92915050565b60008151905061279081614118565b92915050565b600082601f8301126127a757600080fd5b81356127b78482602086016126c6565b91505092915050565b600082601f8301126127d157600080fd5b81356127e1848260208601612704565b91505092915050565b6000813590506127f98161412f565b92915050565b60006020828403121561281157600080fd5b600061281f84828501612742565b91505092915050565b6000806040838503121561283b57600080fd5b600061284985828601612742565b925050602061285a85828601612742565b9150509250929050565b60008060006060848603121561287957600080fd5b600061288786828701612742565b935050602061289886828701612742565b92505060406128a9868287016127ea565b9150509250925092565b600080600080608085870312156128c957600080fd5b60006128d787828801612742565b94505060206128e887828801612742565b93505060406128f9878288016127ea565b925050606085013567ffffffffffffffff81111561291657600080fd5b61292287828801612796565b91505092959194509250565b6000806040838503121561294157600080fd5b600061294f85828601612742565b925050602061296085828601612757565b9150509250929050565b6000806040838503121561297d57600080fd5b600061298b85828601612742565b925050602061299c858286016127ea565b9150509250929050565b600080600080608085870312156129bc57600080fd5b60006129ca87828801612742565b94505060206129db878288016127ea565b93505060406129ec878288016127ea565b925050606085013567ffffffffffffffff811115612a0957600080fd5b612a15878288016127c0565b91505092959194509250565b600060208284031215612a3357600080fd5b6000612a418482850161276c565b91505092915050565b600060208284031215612a5c57600080fd5b6000612a6a84828501612781565b91505092915050565b600080600080600060a08688031215612a8b57600080fd5b600086013567ffffffffffffffff811115612aa557600080fd5b612ab188828901612796565b9550506020612ac2888289016127ea565b9450506040612ad388828901612742565b9350506060612ae4888289016127ea565b9250506080612af5888289016127ea565b9150509295509295909350565b600060208284031215612b1457600080fd5b6000612b22848285016127ea565b91505092915050565b600080600080600080600060e0888a031215612b4657600080fd5b6000612b548a828b016127ea565b975050602088013567ffffffffffffffff811115612b7157600080fd5b612b7d8a828b01612796565b9650506040612b8e8a828b016127ea565b9550506060612b9f8a828b01612742565b9450506080612bb08a828b016127ea565b93505060a0612bc18a828b016127ea565b92505060c0612bd28a828b01612757565b91505092959891949750929550565b6000612bed838361318f565b60208301905092915050565b612c028161389e565b82525050565b6000612c1382613712565b612c1d8185613740565b9350612c28836136d8565b8060005b83811015612c59578151612c408882612be1565b9750612c4b83613733565b925050600181019050612c2c565b5085935050505092915050565b612c6f816138b0565b82525050565b6000612c808261371d565b612c8a8185613751565b9350612c9a818560208601613921565b612ca381613aed565b840191505092915050565b6000612cb98261371d565b612cc38185613762565b9350612cd3818560208601613921565b80840191505092915050565b60008154612cec81613954565b612cf68186613762565b94506001821660008114612d115760018114612d2257612d55565b60ff19831686528186019350612d55565b612d2b856136e8565b60005b83811015612d4d57815481890152600182019150602081019050612d2e565b838801955050505b50505092915050565b6000612d6982613728565b612d73818561376d565b9350612d83818560208601613921565b612d8c81613aed565b840191505092915050565b6000612da282613728565b612dac818561377e565b9350612dbc818560208601613921565b80840191505092915050565b60008154612dd581613954565b612ddf818661377e565b94506001821660008114612dfa5760018114612e0b57612e3e565b60ff19831686528186019350612e3e565b612e14856136fd565b60005b83811015612e3657815481890152600182019150602081019050612e17565b838801955050505b50505092915050565b6000612e5460278361376d565b9150612e5f82613afe565b604082019050919050565b6000612e7760328361376d565b9150612e8282613b4d565b604082019050919050565b6000612e9a60268361376d565b9150612ea582613b9c565b604082019050919050565b6000612ebd601c8361376d565b9150612ec882613beb565b602082019050919050565b6000612ee060248361376d565b9150612eeb82613c14565b604082019050919050565b6000612f0360198361376d565b9150612f0e82613c63565b602082019050919050565b6000612f26601f8361376d565b9150612f3182613c8c565b602082019050919050565b6000612f49601b8361376d565b9150612f5482613cb5565b602082019050919050565b6000612f6c602c8361376d565b9150612f7782613cde565b604082019050919050565b6000612f8f60338361376d565b9150612f9a82613d2d565b604082019050919050565b6000612fb260208361376d565b9150612fbd82613d7c565b602082019050919050565b6000612fd560388361376d565b9150612fe082613da5565b604082019050919050565b6000612ff8602a8361376d565b915061300382613df4565b604082019050919050565b600061301b60298361376d565b915061302682613e43565b604082019050919050565b600061303e60208361376d565b915061304982613e92565b602082019050919050565b6000613061602c8361376d565b915061306c82613ebb565b604082019050919050565b600061308460058361377e565b915061308f82613f0a565b600582019050919050565b60006130a760208361376d565b91506130b282613f33565b602082019050919050565b60006130ca60198361376d565b91506130d582613f5c565b602082019050919050565b60006130ed60298361376d565b91506130f882613f85565b604082019050919050565b6000613110602f8361376d565b915061311b82613fd4565b604082019050919050565b600061313360218361376d565b915061313e82614023565b604082019050919050565b600061315660318361376d565b915061316182614072565b604082019050919050565b600061317960018361377e565b9150613184826140c1565b600182019050919050565b61319881613908565b82525050565b6131a781613908565b82525050565b60006131b98284612cdf565b915081905092915050565b60006131d08286612dc8565b91506131dc8285612cae565b91506131e78261316c565b91506131f38284612d97565b91506131fe82613077565b9150819050949350505050565b60006132178285612dc8565b91506132228261316c565b915061322e8284612dc8565b91508190509392505050565b600060208201905061324f6000830184612bf9565b92915050565b600060808201905061326a6000830187612bf9565b6132776020830186612bf9565b613284604083018561319e565b81810360608301526132968184612c75565b905095945050505050565b600060208201905081810360008301526132bb8184612c08565b905092915050565b60006020820190506132d86000830184612c66565b92915050565b600060e08201905081810360008301526132f8818a612c75565b90506133076020830189612bf9565b613314604083018861319e565b613321606083018761319e565b61332e608083018661319e565b61333b60a083018561319e565b61334860c0830184612c66565b98975050505050505050565b6000602082019050818103600083015261336e8184612d5e565b905092915050565b6000602082019050818103600083015261338f81612e47565b9050919050565b600060208201905081810360008301526133af81612e6a565b9050919050565b600060208201905081810360008301526133cf81612e8d565b9050919050565b600060208201905081810360008301526133ef81612eb0565b9050919050565b6000602082019050818103600083015261340f81612ed3565b9050919050565b6000602082019050818103600083015261342f81612ef6565b9050919050565b6000602082019050818103600083015261344f81612f19565b9050919050565b6000602082019050818103600083015261346f81612f3c565b9050919050565b6000602082019050818103600083015261348f81612f5f565b9050919050565b600060208201905081810360008301526134af81612f82565b9050919050565b600060208201905081810360008301526134cf81612fa5565b9050919050565b600060208201905081810360008301526134ef81612fc8565b9050919050565b6000602082019050818103600083015261350f81612feb565b9050919050565b6000602082019050818103600083015261352f8161300e565b9050919050565b6000602082019050818103600083015261354f81613031565b9050919050565b6000602082019050818103600083015261356f81613054565b9050919050565b6000602082019050818103600083015261358f8161309a565b9050919050565b600060208201905081810360008301526135af816130bd565b9050919050565b600060208201905081810360008301526135cf816130e0565b9050919050565b600060208201905081810360008301526135ef81613103565b9050919050565b6000602082019050818103600083015261360f81613126565b9050919050565b6000602082019050818103600083015261362f81613149565b9050919050565b600060208201905061364b600083018461319e565b92915050565b600061365b61366c565b90506136678282613986565b919050565b6000604051905090565b600067ffffffffffffffff82111561369157613690613abe565b5b61369a82613aed565b9050602081019050919050565b600067ffffffffffffffff8211156136c2576136c1613abe565b5b6136cb82613aed565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061379482613908565b915061379f83613908565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156137d4576137d3613a31565b5b828201905092915050565b60006137ea82613908565b91506137f583613908565b92508261380557613804613a60565b5b828204905092915050565b600061381b82613908565b915061382683613908565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561385f5761385e613a31565b5b828202905092915050565b600061387582613908565b915061388083613908565b92508282101561389357613892613a31565b5b828203905092915050565b60006138a9826138e8565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561393f578082015181840152602081019050613924565b8381111561394e576000848401525b50505050565b6000600282049050600182168061396c57607f821691505b602082108114156139805761397f613a8f565b5b50919050565b61398f82613aed565b810181811067ffffffffffffffff821117156139ae576139ad613abe565b5b80604052505050565b60006139c282613908565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156139f5576139f4613a31565b5b600182019050919050565b6000613a0b82613908565b9150613a1683613908565b925082613a2657613a25613a60565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f636f6c6c656374696f6e20696e646578206d757374206265206772656174657260008201527f207468616e203000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f45746865722076616c75652073656e74206973206e6f7420636f727265637400600082015250565b7f53616c65206d7573742062652061637469766520746f206d696e740000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f547279696e6720746f206d696e74206120746f6b656e2074686174206861732060008201527f616c7265616479206265656e206d696e74656400000000000000000000000000602082015250565b7f4d617820746f6b656e20636f756e7420686173206265656e2072656163686564600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f636f6c6c656374696f6e20646f6573206e6f7420657869737400000000000000600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f2f00000000000000000000000000000000000000000000000000000000000000600082015250565b6140f38161389e565b81146140fe57600080fd5b50565b61410a816138b0565b811461411557600080fd5b50565b614121816138bc565b811461412c57600080fd5b50565b61413881613908565b811461414357600080fd5b5056fea26469706673582212204400d923e68c607e0841e2335a3d706116537714a3fd272cdd586ad8c8d002f064736f6c6343000804003368747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f