6080604052610195600c556005600d556000600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff0219169083151502179055503480156200005257600080fd5b5060405162003dcb38038062003dcb8339818101604052810190620000789190620002e4565b806040518060400160405280600c81526020017f4f726973205069726174657300000000000000000000000000000000000000008152506040518060400160405280600c81526020017f4f726973205069726174657300000000000000000000000000000000000000008152508160009081620000f6919062000590565b50806001908162000108919062000590565b5050506000600a60006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200019b5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000192919062000688565b60405180910390fd5b620001ac81620001b460201b60201c565b5050620006a5565b6000600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002ac826200027f565b9050919050565b620002be816200029f565b8114620002ca57600080fd5b50565b600081519050620002de81620002b3565b92915050565b600060208284031215620002fd57620002fc6200027a565b5b60006200030d84828501620002cd565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200039857607f821691505b602082108103620003ae57620003ad62000350565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003d9565b620004248683620003d9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004716200046b62000465846200043c565b62000446565b6200043c565b9050919050565b6000819050919050565b6200048d8362000450565b620004a56200049c8262000478565b848454620003e6565b825550505050565b600090565b620004bc620004ad565b620004c981848462000482565b505050565b5b81811015620004f157620004e5600082620004b2565b600181019050620004cf565b5050565b601f82111562000540576200050a81620003b4565b6200051584620003c9565b8101602085101562000525578190505b6200053d6200053485620003c9565b830182620004ce565b50505b505050565b600082821c905092915050565b6000620005656000198460080262000545565b1980831691505092915050565b600062000580838362000552565b9150826002028217905092915050565b6200059b8262000316565b67ffffffffffffffff811115620005b757620005b662000321565b5b620005c382546200037f565b620005d0828285620004f5565b600060209050601f831160018114620006085760008415620005f3578287015190505b620005ff858262000572565b8655506200066f565b601f1984166200061886620003b4565b60005b8281101562000642578489015182556001820191506020850194506020810190506200061b565b868310156200066257848901516200065e601f89168262000552565b8355505b6001600288020188555050505b505050505050565b62000682816200029f565b82525050565b60006020820190506200069f600083018462000677565b92915050565b61371680620006b56000396000f3fe6080604052600436106101ee5760003560e01c806351cff8d91161010d57806395d89b41116100a0578063c87b56dd1161006f578063c87b56dd14610695578063d5abeb01146106d2578063e985e9c5146106fd578063f2fde38b1461073a578063f516a2e614610763576101ee565b806395d89b41146105ed578063a22cb46514610618578063b88d4fde14610641578063bcc9ca5b1461066a576101ee565b806370a08231116100dc57806370a0823114610557578063715018a6146105945780638456cb59146105ab5780638da5cb5b146105c2576101ee565b806351cff8d91461049d5780635c975abb146104c65780636352211e146104f15780636447c35d1461052e576101ee565b806326092b83116101855780633f4ba83a116101545780633f4ba83a146103f757806340d097c31461040e57806342842e0e146104375780634f6ccce714610460576101ee565b806326092b831461034a5780632848aeaf146103545780632f48de79146103915780632f745c59146103ba576101ee565b8063095ea7b3116101c1578063095ea7b3146102c3578063102a6a73146102ec57806318160ddd146102f657806323b872dd14610321576101ee565b806301ffc9a7146101f357806306fdde0314610230578063081812fc1461025b578063085c9bac14610298575b600080fd5b3480156101ff57600080fd5b5061021a600480360381019061021591906129ee565b61078e565b6040516102279190612a36565b60405180910390f35b34801561023c57600080fd5b506102456107a0565b6040516102529190612ae1565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190612b39565b610832565b60405161028f9190612ba7565b60405180910390f35b3480156102a457600080fd5b506102ad61084e565b6040516102ba9190612a36565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612bee565b610861565b005b6102f4610877565b005b34801561030257600080fd5b5061030b610a23565b6040516103189190612c3d565b60405180910390f35b34801561032d57600080fd5b5061034860048036038101906103439190612c58565b610a30565b005b610352610b32565b005b34801561036057600080fd5b5061037b60048036038101906103769190612cab565b610c52565b6040516103889190612a36565b60405180910390f35b34801561039d57600080fd5b506103b860048036038101906103b39190612d04565b610c72565b005b3480156103c657600080fd5b506103e160048036038101906103dc9190612bee565b610cb2565b6040516103ee9190612c3d565b60405180910390f35b34801561040357600080fd5b5061040c610d5b565b005b34801561041a57600080fd5b5061043560048036038101906104309190612cab565b610d6d565b005b34801561044357600080fd5b5061045e60048036038101906104599190612c58565b610d9e565b005b34801561046c57600080fd5b5061048760048036038101906104829190612b39565b610dbe565b6040516104949190612c3d565b60405180910390f35b3480156104a957600080fd5b506104c460048036038101906104bf9190612d82565b610e34565b005b3480156104d257600080fd5b506104db610e8c565b6040516104e89190612a36565b60405180910390f35b3480156104fd57600080fd5b5061051860048036038101906105139190612b39565b610ea3565b6040516105259190612ba7565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190612e14565b610eb5565b005b34801561056357600080fd5b5061057e60048036038101906105799190612cab565b610f5c565b60405161058b9190612c3d565b60405180910390f35b3480156105a057600080fd5b506105a9611016565b005b3480156105b757600080fd5b506105c061102a565b005b3480156105ce57600080fd5b506105d761103c565b6040516105e49190612ba7565b60405180910390f35b3480156105f957600080fd5b50610602611066565b60405161060f9190612ae1565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190612e61565b6110f8565b005b34801561064d57600080fd5b5061066860048036038101906106639190612fd1565b61110e565b005b34801561067657600080fd5b5061067f61112b565b60405161068c9190612a36565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b79190612b39565b61113e565b6040516106c99190612ae1565b60405180910390f35b3480156106de57600080fd5b506106e76111a7565b6040516106f49190612c3d565b60405180910390f35b34801561070957600080fd5b50610724600480360381019061071f9190613054565b6111ad565b6040516107319190612a36565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c9190612cab565b611241565b005b34801561076f57600080fd5b506107786112c7565b6040516107859190612c3d565b60405180910390f35b6000610799826112cd565b9050919050565b6060600080546107af906130c3565b80601f01602080910402602001604051908101604052809291908181526020018280546107db906130c3565b80156108285780601f106107fd57610100808354040283529160200191610828565b820191906000526020600020905b81548152906001019060200180831161080b57829003601f168201915b5050505050905090565b600061083d82611347565b50610847826113cf565b9050919050565b600f60019054906101000a900460ff1681565b610873828261086e61140c565b611414565b5050565b600f60019054906101000a900460ff166108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90613140565b60405180910390fd5b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610952576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610949906131ac565b60405180910390fd5b60003414610995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098c90613218565b60405180910390fd5b600d54600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f906132aa565b60405180910390fd5b610a2133611426565b565b6000600880549050905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610aa25760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610a999190612ba7565b60405180910390fd5b6000610ab68383610ab161140c565b6114ec565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b2c578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610b23939291906132ca565b60405180910390fd5b50505050565b600f60009054906101000a900460ff16610b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b789061334d565b60405180910390fd5b60003414610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90613218565b60405180910390fd5b600d54600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e906132aa565b60405180910390fd5b610c5033611426565b565b60106020528060005260406000206000915054906101000a900460ff1681565b610c7a611502565b81600f60006101000a81548160ff02191690831515021790555080600f60016101000a81548160ff0219169083151502179055505050565b6000610cbd83610f5c565b8210610d025782826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610cf992919061336d565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610d63611502565b610d6b611589565b565b610d75611502565b6000600b6000815480929190610d8a906133c5565b919050559050610d9a82826115ec565b5050565b610db98383836040518060200160405280600081525061110e565b505050565b6000610dc8610a23565b8210610e0e576000826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610e0592919061336d565b60405180910390fd5b60088281548110610e2257610e2161340d565b5b90600052602060002001549050919050565b610e3c611502565b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610e87573d6000803e3d6000fd5b505050565b6000600a60009054906101000a900460ff16905090565b6000610eae82611347565b9050919050565b610ebd611502565b60005b82829050811015610f5757600160106000858585818110610ee457610ee361340d565b5b9050602002016020810190610ef99190612cab565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610ec0565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fcf5760006040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610fc69190612ba7565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61101e611502565b611028600061160a565b565b611032611502565b61103a6116d0565b565b6000600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054611075906130c3565b80601f01602080910402602001604051908101604052809291908181526020018280546110a1906130c3565b80156110ee5780601f106110c3576101008083540402835291602001916110ee565b820191906000526020600020905b8154815290600101906020018083116110d157829003601f168201915b5050505050905090565b61110a61110361140c565b8383611733565b5050565b611119848484610a30565b611125848484846118a2565b50505050565b600f60009054906101000a900460ff1681565b606061114982611347565b506000611154611a59565b90506000815111611174576040518060200160405280600081525061119f565b8061117e84611a79565b60405160200161118f929190613478565b6040516020818303038152906040525b915050919050565b600c5481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611249611502565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112bb5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016112b29190612ba7565b60405180910390fd5b6112c48161160a565b50565b600d5481565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611340575061133f82611b47565b5b9050919050565b60008061135383611c29565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113c657826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016113bd9190612c3d565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6114218383836001611c66565b505050565b600c54611431610a23565b10611471576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611468906134e8565b60405180910390fd5b600061147d6012611e2b565b90506114896012611e39565b61149382826115ec565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906114e3906133c5565b91905055505050565b60006114f9848484611e4f565b90509392505050565b61150a61140c565b73ffffffffffffffffffffffffffffffffffffffff1661152861103c565b73ffffffffffffffffffffffffffffffffffffffff16146115875761154b61140c565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161157e9190612ba7565b60405180910390fd5b565b611591611e6d565b6000600a60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6115d561140c565b6040516115e29190612ba7565b60405180910390a1565b611606828260405180602001604052806000815250611ead565b5050565b6000600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6116d8611ec9565b6001600a60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861171c61140c565b6040516117299190612ba7565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117a457816040517f5b08ba1800000000000000000000000000000000000000000000000000000000815260040161179b9190612ba7565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118959190612a36565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611a53578273ffffffffffffffffffffffffffffffffffffffff1663150b7a026118e661140c565b8685856040518563ffffffff1660e01b8152600401611908949392919061355d565b6020604051808303816000875af192505050801561194457506040513d601f19601f8201168201806040525081019061194191906135be565b60015b6119c8573d8060008114611974576040519150601f19603f3d011682016040523d82523d6000602084013e611979565b606091505b5060008151036119c057836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016119b79190612ba7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611a5157836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611a489190612ba7565b60405180910390fd5b505b50505050565b60606040518060a001604052806063815260200161367e60639139905090565b606060006001611a8884611f0a565b01905060008167ffffffffffffffff811115611aa757611aa6612ea6565b5b6040519080825280601f01601f191660200182016040528015611ad95781602001600182028036833780820191505090505b509050600082602001820190505b600115611b3c578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611b3057611b2f6135eb565b5b04945060008503611ae7575b819350505050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611c1257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611c225750611c218261205d565b5b9050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080611c9f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611dd3576000611caf84611347565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d1a57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611d2d5750611d2b81846111ad565b155b15611d6f57826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401611d669190612ba7565b60405180910390fd5b8115611dd157838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600081600001549050919050565b6001816000016000828254019250508190555050565b6000611e59611ec9565b611e648484846120c7565b90509392505050565b611e75610e8c565b611eab576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611eb783836121e4565b611ec460008484846118a2565b505050565b611ed1610e8c565b15611f08576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611f68577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611f5e57611f5d6135eb565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611fa5576d04ee2d6d415b85acef81000000008381611f9b57611f9a6135eb565b5b0492506020810190505b662386f26fc100008310611fd457662386f26fc100008381611fca57611fc96135eb565b5b0492506010810190505b6305f5e1008310611ffd576305f5e1008381611ff357611ff26135eb565b5b0492506008810190505b6127108310612022576127108381612018576120176135eb565b5b0492506004810190505b60648310612045576064838161203b5761203a6135eb565b5b0492506002810190505b600a8310612054576001810190505b80915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000806120d58585856122dd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361211957612114846124f7565b612158565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612157576121568185612540565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361219a57612195846126a1565b6121d9565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146121d8576121d78585612772565b5b5b809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122565760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161224d9190612ba7565b60405180910390fd5b6000612264838360006114ec565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146122d85760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016122cf9190612ba7565b60405180910390fd5b505050565b6000806122e984611c29565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461232b5761232a8184866127fd565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146123bc5761236d600085600080611c66565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461243f576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600061254b83610f5c565b9050600060076000848152602001908152602001600020549050818114612630576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506126b5919061361a565b90506000600960008481526020019081526020016000205490506000600883815481106126e5576126e461340d565b5b9060005260206000200154905080600883815481106127075761270661340d565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806127565761275561364e565b5b6001900381819060005260206000200160009055905550505050565b6000600161277f84610f5c565b612789919061361a565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b6128088383836128c1565b6128bc57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361287d57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016128749190612c3d565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016128b392919061336d565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561297957508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061293a575061293984846111ad565b5b8061297857508273ffffffffffffffffffffffffffffffffffffffff16612960836113cf565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6129cb81612996565b81146129d657600080fd5b50565b6000813590506129e8816129c2565b92915050565b600060208284031215612a0457612a0361298c565b5b6000612a12848285016129d9565b91505092915050565b60008115159050919050565b612a3081612a1b565b82525050565b6000602082019050612a4b6000830184612a27565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a8b578082015181840152602081019050612a70565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ab382612a51565b612abd8185612a5c565b9350612acd818560208601612a6d565b612ad681612a97565b840191505092915050565b60006020820190508181036000830152612afb8184612aa8565b905092915050565b6000819050919050565b612b1681612b03565b8114612b2157600080fd5b50565b600081359050612b3381612b0d565b92915050565b600060208284031215612b4f57612b4e61298c565b5b6000612b5d84828501612b24565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b9182612b66565b9050919050565b612ba181612b86565b82525050565b6000602082019050612bbc6000830184612b98565b92915050565b612bcb81612b86565b8114612bd657600080fd5b50565b600081359050612be881612bc2565b92915050565b60008060408385031215612c0557612c0461298c565b5b6000612c1385828601612bd9565b9250506020612c2485828601612b24565b9150509250929050565b612c3781612b03565b82525050565b6000602082019050612c526000830184612c2e565b92915050565b600080600060608486031215612c7157612c7061298c565b5b6000612c7f86828701612bd9565b9350506020612c9086828701612bd9565b9250506040612ca186828701612b24565b9150509250925092565b600060208284031215612cc157612cc061298c565b5b6000612ccf84828501612bd9565b91505092915050565b612ce181612a1b565b8114612cec57600080fd5b50565b600081359050612cfe81612cd8565b92915050565b60008060408385031215612d1b57612d1a61298c565b5b6000612d2985828601612cef565b9250506020612d3a85828601612cef565b9150509250929050565b6000612d4f82612b66565b9050919050565b612d5f81612d44565b8114612d6a57600080fd5b50565b600081359050612d7c81612d56565b92915050565b600060208284031215612d9857612d9761298c565b5b6000612da684828501612d6d565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612dd457612dd3612daf565b5b8235905067ffffffffffffffff811115612df157612df0612db4565b5b602083019150836020820283011115612e0d57612e0c612db9565b5b9250929050565b60008060208385031215612e2b57612e2a61298c565b5b600083013567ffffffffffffffff811115612e4957612e48612991565b5b612e5585828601612dbe565b92509250509250929050565b60008060408385031215612e7857612e7761298c565b5b6000612e8685828601612bd9565b9250506020612e9785828601612cef565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ede82612a97565b810181811067ffffffffffffffff82111715612efd57612efc612ea6565b5b80604052505050565b6000612f10612982565b9050612f1c8282612ed5565b919050565b600067ffffffffffffffff821115612f3c57612f3b612ea6565b5b612f4582612a97565b9050602081019050919050565b82818337600083830152505050565b6000612f74612f6f84612f21565b612f06565b905082815260208101848484011115612f9057612f8f612ea1565b5b612f9b848285612f52565b509392505050565b600082601f830112612fb857612fb7612daf565b5b8135612fc8848260208601612f61565b91505092915050565b60008060008060808587031215612feb57612fea61298c565b5b6000612ff987828801612bd9565b945050602061300a87828801612bd9565b935050604061301b87828801612b24565b925050606085013567ffffffffffffffff81111561303c5761303b612991565b5b61304887828801612fa3565b91505092959194509250565b6000806040838503121561306b5761306a61298c565b5b600061307985828601612bd9565b925050602061308a85828601612bd9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806130db57607f821691505b6020821081036130ee576130ed613094565b5b50919050565b7f416c6c6f776c697374204d696e7420436c6f7365640000000000000000000000600082015250565b600061312a601583612a5c565b9150613135826130f4565b602082019050919050565b600060208201905081810360008301526131598161311d565b9050919050565b7f596f7520617265206e6f74206f6e2074686520616c6c6f77206c697374000000600082015250565b6000613196601d83612a5c565b91506131a182613160565b602082019050919050565b600060208201905081810360008301526131c581613189565b9050919050565b7f4e6f7420456e6f7567682046756e647300000000000000000000000000000000600082015250565b6000613202601083612a5c565b915061320d826131cc565b602082019050919050565b60006020820190508181036000830152613231816131f5565b9050919050565b7f4578636565646564206d6178696d756d206d696e7473207065722077616c6c6560008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613294602183612a5c565b915061329f82613238565b604082019050919050565b600060208201905081810360008301526132c381613287565b9050919050565b60006060820190506132df6000830186612b98565b6132ec6020830185612c2e565b6132f96040830184612b98565b949350505050565b7f5075626c6963204d696e7420436c6f7365640000000000000000000000000000600082015250565b6000613337601283612a5c565b915061334282613301565b602082019050919050565b600060208201905081810360008301526133668161332a565b9050919050565b60006040820190506133826000830185612b98565b61338f6020830184612c2e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133d082612b03565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361340257613401613396565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b600061345282612a51565b61345c818561343c565b935061346c818560208601612a6d565b80840191505092915050565b60006134848285613447565b91506134908284613447565b91508190509392505050565b7f576520536f6c64204f7574210000000000000000000000000000000000000000600082015250565b60006134d2600c83612a5c565b91506134dd8261349c565b602082019050919050565b60006020820190508181036000830152613501816134c5565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061352f82613508565b6135398185613513565b9350613549818560208601612a6d565b61355281612a97565b840191505092915050565b60006080820190506135726000830187612b98565b61357f6020830186612b98565b61358c6040830185612c2e565b818103606083015261359e8184613524565b905095945050505050565b6000815190506135b8816129c2565b92915050565b6000602082840312156135d4576135d361298c565b5b60006135e2848285016135a9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061362582612b03565b915061363083612b03565b925082820390508181111561364857613647613396565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe68747470733a2f2f677265656e2d726563656e742d616c706163612d3636342e6d7970696e6174612e636c6f75642f697066732f516d63776471505450646248417a55786566395a4741734d777669444d72537a6776486d77795a6644796d3676722fa26469706673582212208d6d99f1fe38afde06857b699a3ca16954b19bedf4aa9b264e998324b5dc1ae164736f6c63430008170033000000000000000000000000613f7fcd389a51f2baf02c767a200c47a614b952