6080604052660eebe0b40e80006009556040518060400160405280600a81526020017f4f6b617920426561727300000000000000000000000000000000000000000000815250600a90805190602001906200005c929190620004a1565b50610d05600b556000600c556005600d556032600e556001600f60006101000a81548160ff0219169083151502179055503480156200009a57600080fd5b506040518060400160405280600f81526020017f50617061204f6b617920426561727300000000000000000000000000000000008152506040518060400160405280600381526020017f504f42000000000000000000000000000000000000000000000000000000000081525081600290805190602001906200011f929190620004a1565b50806003908051906020019062000138929190620004a1565b5062000149620002f560201b60201c565b60008190555050506200017162000165620002fe60201b60201c565b6200030660201b60201c565b6200019b6040518060600160405280602181526020016200485960219139620003cc60201b60201c565b7376b3af5f0f9b89ca5a4f9fe6c58421dbe567062d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739548052b0428ebc1cbf52c7e3085c3664da0c764601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507302d4ccfb596ac2a8b1878d3bf8a390730f42bba7601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734becbdf97747413a18c5a2a53321d09198d3a100601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000639565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620003dc620002fe60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620004026200047760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200045b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200045290620005b2565b60405180910390fd5b806010908051906020019062000473929190620004a1565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620004af9062000603565b90600052602060002090601f016020900481019282620004d357600085556200051f565b82601f10620004ee57805160ff19168380011785556200051f565b828001600101855582156200051f579182015b828111156200051e57825182559160200191906001019062000501565b5b5090506200052e919062000532565b5090565b5b808211156200054d57600081600090555060010162000533565b5090565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200059a60208362000551565b9150620005a78262000562565b602082019050919050565b60006020820190508181036000830152620005cd816200058b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200061c57607f821691505b60208210811415620006335762000632620005d4565b5b50919050565b61421080620006496000396000f3fe6080604052600436106101d85760003560e01c80636c0360eb11610102578063aaa6877711610095578063cc0b8d1511610064578063cc0b8d151461068f578063e985e9c5146106b8578063f2fde38b146106f5578063f47c84c51461071e576101d8565b8063aaa68777146105d5578063b88d4fde146105fe578063c342784414610627578063c87b56dd14610652576101d8565b806392642744116100d1578063926427441461053c57806395d89b4114610558578063a22cb46514610583578063a854ffba146105ac576101d8565b80636c0360eb1461049257806370a08231146104bd578063715018a6146104fa5780638da5cb5b14610511576101d8565b80631c8b232d1161017a5780633c5e310b116101495780633c5e310b146103d057806342842e0e1461040357806355f804b31461042c5780636352211e14610455576101d8565b80631c8b232d146103165780631e5c9d261461034157806323b872dd1461037e5780632e1a7d4d146103a7576101d8565b8063095ea7b3116101b6578063095ea7b314610282578063122fede9146102ab57806316b9f099146102d457806318160ddd146102eb576101d8565b806301ffc9a7146101dd57806306fdde031461021a578063081812fc14610245575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff91906130ed565b610749565b6040516102119190613135565b60405180910390f35b34801561022657600080fd5b5061022f61082b565b60405161023c91906131e9565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190613241565b6108bd565b60405161027991906132af565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a491906132f6565b610939565b005b3480156102b757600080fd5b506102d260048036038101906102cd9190613497565b610a44565b005b3480156102e057600080fd5b506102e9610b74565b005b3480156102f757600080fd5b50610300610cdb565b60405161030d9190613564565b60405180910390f35b34801561032257600080fd5b5061032b610cf2565b6040516103389190613135565b60405180910390f35b34801561034d57600080fd5b506103686004803603810190610363919061357f565b610d05565b6040516103759190613564565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a091906135ac565b611052565b005b3480156103b357600080fd5b506103ce60048036038101906103c99190613241565b611062565b005b3480156103dc57600080fd5b506103e561111f565b6040516103fa999897969594939291906135ff565b60405180910390f35b34801561040f57600080fd5b5061042a600480360381019061042591906135ac565b611201565b005b34801561043857600080fd5b50610453600480360381019061044e9190613693565b611221565b005b34801561046157600080fd5b5061047c60048036038101906104779190613241565b6112b7565b60405161048991906132af565b60405180910390f35b34801561049e57600080fd5b506104a76112cd565b6040516104b491906131e9565b60405180910390f35b3480156104c957600080fd5b506104e460048036038101906104df919061357f565b61135b565b6040516104f19190613564565b60405180910390f35b34801561050657600080fd5b5061050f61142b565b005b34801561051d57600080fd5b506105266114b3565b60405161053391906132af565b60405180910390f35b61055660048036038101906105519190613241565b6114dd565b005b34801561056457600080fd5b5061056d6116ce565b60405161057a91906131e9565b60405180910390f35b34801561058f57600080fd5b506105aa60048036038101906105a591906136dc565b611760565b005b3480156105b857600080fd5b506105d360048036038101906105ce919061371c565b6118d8565b005b3480156105e157600080fd5b506105fc60048036038101906105f79190613749565b611971565b005b34801561060a57600080fd5b5061062560048036038101906106209190613851565b611af7565b005b34801561063357600080fd5b5061063c611b73565b6040516106499190613564565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190613241565b611b79565b60405161068691906131e9565b60405180910390f35b34801561069b57600080fd5b506106b660048036038101906106b191906138d4565b611c18565b005b3480156106c457600080fd5b506106df60048036038101906106da9190613914565b611d12565b6040516106ec9190613135565b60405180910390f35b34801561070157600080fd5b5061071c6004803603810190610717919061357f565b611da6565b005b34801561072a57600080fd5b50610733611e9e565b6040516107409190613564565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061081457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610824575061082382611ea4565b5b9050919050565b60606002805461083a90613983565b80601f016020809104026020016040519081016040528092919081815260200182805461086690613983565b80156108b35780601f10610888576101008083540402835291602001916108b3565b820191906000526020600020905b81548152906001019060200180831161089657829003601f168201915b5050505050905090565b60006108c882611f0e565b6108fe576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610944826112b7565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109ac576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109cb611f5c565b73ffffffffffffffffffffffffffffffffffffffff16141580156109fd57506109fb816109f6611f5c565b611d12565b155b15610a34576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a3f838383611f64565b505050565b610a4c611f5c565b73ffffffffffffffffffffffffffffffffffffffff16610a6a6114b3565b73ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790613a01565b60405180910390fd5b610ac8610cdb565b610d05610ad59190613a50565b871115610b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0e90613ad0565b60405180910390fd5b86600b819055508560098190555084600a9080519060200190610b3b929190612f9b565b5083600d8190555082600e8190555081600c8190555080600f60006101000a81548160ff02191690831515021790555050505050505050565b60011515600f60009054906101000a900460ff16151514610bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc190613b3c565b60405180910390fd5b6000610bd533610d05565b905060008111610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1190613ba8565b60405180910390fd5b600b54811115610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690613c14565b60405180910390fd5b80601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610cae9190613c34565b9250508190555080600b6000828254610cc79190613a50565b92505081905550610cd83382612016565b50565b6000610ce5612034565b6001546000540303905090565b600f60009054906101000a900460ff1681565b600080600090506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401610d6991906132af565b602060405180830381865afa158015610d86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610daa9190613c9f565b90506000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401610e0991906132af565b602060405180830381865afa158015610e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a9190613c9f565b90506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b8152600401610ea991906132af565b602060405180830381865afa158015610ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eea9190613c9f565b90506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401610f4991906132af565b602060405180830381865afa158015610f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8a9190613c9f565b90506000841115610fa557600185610fa29190613c34565b94505b6000831115610fc957600183610fbb9190613ccc565b85610fc69190613c34565b94505b6000821115610fe257600185610fdf9190613c34565b94505b6000811115610ffb57600185610ff89190613c34565b94505b601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054856110469190613a50565b95505050505050919050565b61105d83838361203d565b505050565b61106a611f5c565b73ffffffffffffffffffffffffffffffffffffffff166110886114b3565b73ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590613a01565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505061111c57600080fd5b50565b6060600080600080600080600080600a600b54600c54600954600d54600e54611146610cdb565b600f60009054906101000a900460ff16600088805461116490613983565b80601f016020809104026020016040519081016040528092919081815260200182805461119090613983565b80156111dd5780601f106111b2576101008083540402835291602001916111dd565b820191906000526020600020905b8154815290600101906020018083116111c057829003601f168201915b50505050509850985098509850985098509850985098509850909192939495969798565b61121c83838360405180602001604052806000815250611af7565b505050565b611229611f5c565b73ffffffffffffffffffffffffffffffffffffffff166112476114b3565b73ffffffffffffffffffffffffffffffffffffffff161461129d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129490613a01565b60405180910390fd5b80601090805190602001906112b3929190612f9b565b5050565b60006112c2826124f3565b600001519050919050565b601080546112da90613983565b80601f016020809104026020016040519081016040528092919081815260200182805461130690613983565b80156113535780601f1061132857610100808354040283529160200191611353565b820191906000526020600020905b81548152906001019060200180831161133657829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113c3576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611433611f5c565b73ffffffffffffffffffffffffffffffffffffffff166114516114b3565b73ffffffffffffffffffffffffffffffffffffffff16146114a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149e90613a01565b60405180910390fd5b6114b16000612782565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b806009546114eb9190613ccc565b34101561152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490613d72565b60405180910390fd5b60011515600f60009054906101000a900460ff16151514611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157a90613b3c565b60405180910390fd5b600081116115c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bd90613dde565b60405180910390fd5b600d5481111561160b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160290613e70565b60405180910390fd5b600b54811115611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164790613c14565b60405180910390fd5b600e5461165c3361135b565b826116679190613c34565b11156116a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169f90613edc565b60405180910390fd5b80600b60008282546116ba9190613a50565b925050819055506116cb3382612016565b50565b6060600380546116dd90613983565b80601f016020809104026020016040519081016040528092919081815260200182805461170990613983565b80156117565780601f1061172b57610100808354040283529160200191611756565b820191906000526020600020905b81548152906001019060200180831161173957829003601f168201915b5050505050905090565b611768611f5c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117cd576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006117da611f5c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611887611f5c565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118cc9190613135565b60405180910390a35050565b6118e0611f5c565b73ffffffffffffffffffffffffffffffffffffffff166118fe6114b3565b73ffffffffffffffffffffffffffffffffffffffff1614611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b90613a01565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b611979611f5c565b73ffffffffffffffffffffffffffffffffffffffff166119976114b3565b73ffffffffffffffffffffffffffffffffffffffff16146119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613a01565b60405180910390fd5b83601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b611b0284848461203d565b611b218373ffffffffffffffffffffffffffffffffffffffff16612848565b8015611b365750611b348484848461286b565b155b15611b6d576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60095481565b6060611b8482611f0e565b611bba576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611bc46129bc565b9050600081511415611be55760405180602001604052806000815250611c10565b80611bef84612a4e565b604051602001611c00929190613f38565b6040516020818303038152906040525b915050919050565b611c20611f5c565b73ffffffffffffffffffffffffffffffffffffffff16611c3e6114b3565b73ffffffffffffffffffffffffffffffffffffffff1614611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90613a01565b60405180910390fd5b610d0582611ca0610cdb565b611caa9190613c34565b1115611ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce290613ad0565b60405180910390fd5b81600b6000828254611cfd9190613a50565b92505081905550611d0e8183612016565b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611dae611f5c565b73ffffffffffffffffffffffffffffffffffffffff16611dcc6114b3565b73ffffffffffffffffffffffffffffffffffffffff1614611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1990613a01565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8990613fce565b60405180910390fd5b611e9b81612782565b50565b610d0581565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611f19612034565b11158015611f28575060005482105b8015611f55575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b612030828260405180602001604052806000815250612baf565b5050565b60006001905090565b6000612048826124f3565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146120b3576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff166120d4611f5c565b73ffffffffffffffffffffffffffffffffffffffff1614806121035750612102856120fd611f5c565b611d12565b5b806121485750612111611f5c565b73ffffffffffffffffffffffffffffffffffffffff16612130846108bd565b73ffffffffffffffffffffffffffffffffffffffff16145b905080612181576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156121e8576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121f58585856001612bc1565b61220160008487611f64565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561248157600054821461248057878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46124ec8585856001612bc7565b5050505050565b6124fb613021565b600082905080612509612034565b11158015612518575060005481105b1561274b576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161274957600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461262d57809250505061277d565b5b60011561274857818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461274357809250505061277d565b61262e565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612891611f5c565b8786866040518563ffffffff1660e01b81526004016128b39493929190614043565b6020604051808303816000875af19250505080156128ef57506040513d601f19601f820116820180604052508101906128ec91906140a4565b60015b612969573d806000811461291f576040519150601f19603f3d011682016040523d82523d6000602084013e612924565b606091505b50600081511415612961576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060601080546129cb90613983565b80601f01602080910402602001604051908101604052809291908181526020018280546129f790613983565b8015612a445780601f10612a1957610100808354040283529160200191612a44565b820191906000526020600020905b815481529060010190602001808311612a2757829003601f168201915b5050505050905090565b60606000821415612a96576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612baa565b600082905060005b60008214612ac8578080612ab1906140d1565b915050600a82612ac19190614149565b9150612a9e565b60008167ffffffffffffffff811115612ae457612ae3613340565b5b6040519080825280601f01601f191660200182016040528015612b165781602001600182028036833780820191505090505b5090505b60008514612ba357600182612b2f9190613a50565b9150600a85612b3e919061417a565b6030612b4a9190613c34565b60f81b818381518110612b6057612b5f6141ab565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612b9c9190614149565b9450612b1a565b8093505050505b919050565b612bbc8383836001612bcd565b505050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612c3a576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000841415612c75576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612c826000868387612bc1565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015612e4c5750612e4b8773ffffffffffffffffffffffffffffffffffffffff16612848565b5b15612f12575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612ec1600088848060010195508861286b565b612ef7576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415612e52578260005414612f0d57600080fd5b612f7e565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415612f13575b816000819055505050612f946000868387612bc7565b5050505050565b828054612fa790613983565b90600052602060002090601f016020900481019282612fc95760008555613010565b82601f10612fe257805160ff1916838001178555613010565b82800160010185558215613010579182015b8281111561300f578251825591602001919060010190612ff4565b5b50905061301d9190613064565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b8082111561307d576000816000905550600101613065565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6130ca81613095565b81146130d557600080fd5b50565b6000813590506130e7816130c1565b92915050565b6000602082840312156131035761310261308b565b5b6000613111848285016130d8565b91505092915050565b60008115159050919050565b61312f8161311a565b82525050565b600060208201905061314a6000830184613126565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561318a57808201518184015260208101905061316f565b83811115613199576000848401525b50505050565b6000601f19601f8301169050919050565b60006131bb82613150565b6131c5818561315b565b93506131d581856020860161316c565b6131de8161319f565b840191505092915050565b6000602082019050818103600083015261320381846131b0565b905092915050565b6000819050919050565b61321e8161320b565b811461322957600080fd5b50565b60008135905061323b81613215565b92915050565b6000602082840312156132575761325661308b565b5b60006132658482850161322c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132998261326e565b9050919050565b6132a98161328e565b82525050565b60006020820190506132c460008301846132a0565b92915050565b6132d38161328e565b81146132de57600080fd5b50565b6000813590506132f0816132ca565b92915050565b6000806040838503121561330d5761330c61308b565b5b600061331b858286016132e1565b925050602061332c8582860161322c565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133788261319f565b810181811067ffffffffffffffff8211171561339757613396613340565b5b80604052505050565b60006133aa613081565b90506133b6828261336f565b919050565b600067ffffffffffffffff8211156133d6576133d5613340565b5b6133df8261319f565b9050602081019050919050565b82818337600083830152505050565b600061340e613409846133bb565b6133a0565b90508281526020810184848401111561342a5761342961333b565b5b6134358482856133ec565b509392505050565b600082601f83011261345257613451613336565b5b81356134628482602086016133fb565b91505092915050565b6134748161311a565b811461347f57600080fd5b50565b6000813590506134918161346b565b92915050565b600080600080600080600060e0888a0312156134b6576134b561308b565b5b60006134c48a828b0161322c565b97505060206134d58a828b0161322c565b965050604088013567ffffffffffffffff8111156134f6576134f5613090565b5b6135028a828b0161343d565b95505060606135138a828b0161322c565b94505060806135248a828b0161322c565b93505060a06135358a828b0161322c565b92505060c06135468a828b01613482565b91505092959891949750929550565b61355e8161320b565b82525050565b60006020820190506135796000830184613555565b92915050565b6000602082840312156135955761359461308b565b5b60006135a3848285016132e1565b91505092915050565b6000806000606084860312156135c5576135c461308b565b5b60006135d3868287016132e1565b93505060206135e4868287016132e1565b92505060406135f58682870161322c565b9150509250925092565b600061012082019050818103600083015261361a818c6131b0565b9050613629602083018b613555565b613636604083018a613555565b6136436060830189613555565b6136506080830188613555565b61365d60a0830187613555565b61366a60c0830186613555565b61367760e0830185613126565b613685610100830184613126565b9a9950505050505050505050565b6000602082840312156136a9576136a861308b565b5b600082013567ffffffffffffffff8111156136c7576136c6613090565b5b6136d38482850161343d565b91505092915050565b600080604083850312156136f3576136f261308b565b5b6000613701858286016132e1565b925050602061371285828601613482565b9150509250929050565b6000602082840312156137325761373161308b565b5b600061374084828501613482565b91505092915050565b600080600080608085870312156137635761376261308b565b5b6000613771878288016132e1565b9450506020613782878288016132e1565b9350506040613793878288016132e1565b92505060606137a4878288016132e1565b91505092959194509250565b600067ffffffffffffffff8211156137cb576137ca613340565b5b6137d48261319f565b9050602081019050919050565b60006137f46137ef846137b0565b6133a0565b9050828152602081018484840111156138105761380f61333b565b5b61381b8482856133ec565b509392505050565b600082601f83011261383857613837613336565b5b81356138488482602086016137e1565b91505092915050565b6000806000806080858703121561386b5761386a61308b565b5b6000613879878288016132e1565b945050602061388a878288016132e1565b935050604061389b8782880161322c565b925050606085013567ffffffffffffffff8111156138bc576138bb613090565b5b6138c887828801613823565b91505092959194509250565b600080604083850312156138eb576138ea61308b565b5b60006138f98582860161322c565b925050602061390a858286016132e1565b9150509250929050565b6000806040838503121561392b5761392a61308b565b5b6000613939858286016132e1565b925050602061394a858286016132e1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061399b57607f821691505b602082108114156139af576139ae613954565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139eb60208361315b565b91506139f6826139b5565b602082019050919050565b60006020820190508181036000830152613a1a816139de565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a5b8261320b565b9150613a668361320b565b925082821015613a7957613a78613a21565b5b828203905092915050565b7f457863656564656420737570706c790000000000000000000000000000000000600082015250565b6000613aba600f8361315b565b9150613ac582613a84565b602082019050919050565b60006020820190508181036000830152613ae981613aad565b9050919050565b7f53616c65206861736e2774207374617274656400000000000000000000000000600082015250565b6000613b2660138361315b565b9150613b3182613af0565b602082019050919050565b60006020820190508181036000830152613b5581613b19565b9050919050565b7f4e6f20636c61696d61626c6520746f6b656e7320617661696c61626c65000000600082015250565b6000613b92601d8361315b565b9150613b9d82613b5c565b602082019050919050565b60006020820190508181036000830152613bc181613b85565b9050919050565b7f5765277265206174206d617820737570706c7921000000000000000000000000600082015250565b6000613bfe60148361315b565b9150613c0982613bc8565b602082019050919050565b60006020820190508181036000830152613c2d81613bf1565b9050919050565b6000613c3f8261320b565b9150613c4a8361320b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c7f57613c7e613a21565b5b828201905092915050565b600081519050613c9981613215565b92915050565b600060208284031215613cb557613cb461308b565b5b6000613cc384828501613c8a565b91505092915050565b6000613cd78261320b565b9150613ce28361320b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d1b57613d1a613a21565b5b828202905092915050565b7f496e73756666696369656e742066756e64730000000000000000000000000000600082015250565b6000613d5c60128361315b565b9150613d6782613d26565b602082019050919050565b60006020820190508181036000830152613d8b81613d4f565b9050919050565b7f4e65656420746f206d696e74206174206c656173742031204e46540000000000600082015250565b6000613dc8601b8361315b565b9150613dd382613d92565b602082019050919050565b60006020820190508181036000830152613df781613dbb565b9050919050565b7f4d6178206d696e7420616d6f756e7420706572207472616e73616374696f6e2060008201527f6578636565646564000000000000000000000000000000000000000000000000602082015250565b6000613e5a60288361315b565b9150613e6582613dfe565b604082019050919050565b60006020820190508181036000830152613e8981613e4d565b9050919050565b7f4d6178204e465420706572206164647265737320657863656564656400000000600082015250565b6000613ec6601c8361315b565b9150613ed182613e90565b602082019050919050565b60006020820190508181036000830152613ef581613eb9565b9050919050565b600081905092915050565b6000613f1282613150565b613f1c8185613efc565b9350613f2c81856020860161316c565b80840191505092915050565b6000613f448285613f07565b9150613f508284613f07565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613fb860268361315b565b9150613fc382613f5c565b604082019050919050565b60006020820190508181036000830152613fe781613fab565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061401582613fee565b61401f8185613ff9565b935061402f81856020860161316c565b6140388161319f565b840191505092915050565b600060808201905061405860008301876132a0565b61406560208301866132a0565b6140726040830185613555565b8181036060830152614084818461400a565b905095945050505050565b60008151905061409e816130c1565b92915050565b6000602082840312156140ba576140b961308b565b5b60006140c88482850161408f565b91505092915050565b60006140dc8261320b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561410f5761410e613a21565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141548261320b565b915061415f8361320b565b92508261416f5761416e61411a565b5b828204905092915050565b60006141858261320b565b91506141908361320b565b9250826141a05761419f61411a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220e3b1d975c1571f892e32eab0651603003964e8b20086f317de817e94bd669a1164736f6c634300080c0033687474703a2f2f6170692e6d616d616f6b617962656172732e636f6d2f706f622f