6080604052611e61600955610fa0600a5560405180606001604052806036815260200162003fff60369139600b90816200003a919062000641565b506001600c60006101000a81548160ff0219169083151502179055503480156200006357600080fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb66001336040518060400160405280600e81526020017f53696c6c794865646765686f67730000000000000000000000000000000000008152506040518060400160405280600381526020017f53484700000000000000000000000000000000000000000000000000000000008152508160029081620000f9919062000641565b5080600390816200010b919062000641565b506200011c620003be60201b60201c565b600081905550505080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7660405160405180910390a35060006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115620003b65780156200027c576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b8152600401620002429291906200076d565b600060405180830381600087803b1580156200025d57600080fd5b505af115801562000272573d6000803e3d6000fd5b50505050620003b5565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161462000336576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b8152600401620002fc9291906200076d565b600060405180830381600087803b1580156200031757600080fd5b505af11580156200032c573d6000803e3d6000fd5b50505050620003b4565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b81526004016200037f91906200079a565b600060405180830381600087803b1580156200039a57600080fd5b505af1158015620003af573d6000803e3d6000fd5b505050505b5b5b5050620007b7565b60006001905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200044957607f821691505b6020821081036200045f576200045e62000401565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004c97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200048a565b620004d586836200048a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005226200051c6200051684620004ed565b620004f7565b620004ed565b9050919050565b6000819050919050565b6200053e8362000501565b620005566200054d8262000529565b84845462000497565b825550505050565b600090565b6200056d6200055e565b6200057a81848462000533565b505050565b5b81811015620005a2576200059660008262000563565b60018101905062000580565b5050565b601f821115620005f157620005bb8162000465565b620005c6846200047a565b81016020851015620005d6578190505b620005ee620005e5856200047a565b8301826200057f565b50505b505050565b600082821c905092915050565b60006200061660001984600802620005f6565b1980831691505092915050565b600062000631838362000603565b9150826002028217905092915050565b6200064c82620003c7565b67ffffffffffffffff811115620006685762000667620003d2565b5b62000674825462000430565b62000681828285620005a6565b600060209050601f831160018114620006b95760008415620006a4578287015190505b620006b0858262000623565b86555062000720565b601f198416620006c98662000465565b60005b82811015620006f357848901518255600182019150602085019450602081019050620006cc565b868310156200071357848901516200070f601f89168262000603565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007558262000728565b9050919050565b620007678162000748565b82525050565b60006040820190506200078460008301856200075c565b6200079360208301846200075c565b9392505050565b6000602082019050620007b160008301846200075c565b92915050565b61383880620007c76000396000f3fe6080604052600436106101c25760003560e01c806370a08231116100f7578063a0712d6811610095578063c26f7a5211610064578063c26f7a5214610611578063c87b56dd1461063c578063e5d089ff14610679578063e985e9c5146106a2576101c2565b8063a0712d6814610573578063a22cb4651461058f578063b88d4fde146105b8578063c23dc68f146105d4576101c2565b80638da5cb5b116100d15780638da5cb5b146104b5578063902d55a5146104e057806395d89b411461050b57806399a2557a14610536576101c2565b806370a08231146104245780637ba5e621146104615780638462151c14610478576101c2565b80633ccfd60b1161016457806355f804b31161013e57806355f804b3146103565780635bbb21771461037f5780635c975abb146103bc5780636352211e146103e7576101c2565b80633ccfd60b146102f857806341f434341461030f57806342842e0e1461033a576101c2565b8063095ea7b3116101a0578063095ea7b31461026c57806313af40351461028857806318160ddd146102b157806323b872dd146102dc576101c2565b806301ffc9a7146101c757806306fdde0314610204578063081812fc1461022f575b600080fd5b3480156101d357600080fd5b506101ee60048036038101906101e991906125b1565b6106df565b6040516101fb91906125f9565b60405180910390f35b34801561021057600080fd5b50610219610771565b60405161022691906126a4565b60405180910390f35b34801561023b57600080fd5b50610256600480360381019061025191906126fc565b610803565b604051610263919061276a565b60405180910390f35b610286600480360381019061028191906127b1565b610882565b005b34801561029457600080fd5b506102af60048036038101906102aa91906127f1565b6109c6565b005b3480156102bd57600080fd5b506102c6610af4565b6040516102d3919061282d565b60405180910390f35b6102f660048036038101906102f19190612848565b610b0b565b005b34801561030457600080fd5b5061030d610b5a565b005b34801561031b57600080fd5b50610324610c82565b60405161033191906128fa565b60405180910390f35b610354600480360381019061034f9190612848565b610c94565b005b34801561036257600080fd5b5061037d6004803603810190610378919061297a565b610ce3565b005b34801561038b57600080fd5b506103a660048036038101906103a19190612a1d565b610d89565b6040516103b39190612bcd565b60405180910390f35b3480156103c857600080fd5b506103d1610e4c565b6040516103de91906125f9565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906126fc565b610e5f565b60405161041b919061276a565b60405180910390f35b34801561043057600080fd5b5061044b600480360381019061044691906127f1565b610e71565b604051610458919061282d565b60405180910390f35b34801561046d57600080fd5b50610476610f29565b005b34801561048457600080fd5b5061049f600480360381019061049a91906127f1565b610fe5565b6040516104ac9190612cad565b60405180910390f35b3480156104c157600080fd5b506104ca611128565b6040516104d7919061276a565b60405180910390f35b3480156104ec57600080fd5b506104f561114e565b604051610502919061282d565b60405180910390f35b34801561051757600080fd5b50610520611154565b60405161052d91906126a4565b60405180910390f35b34801561054257600080fd5b5061055d60048036038101906105589190612ccf565b6111e6565b60405161056a9190612cad565b60405180910390f35b61058d600480360381019061058891906126fc565b6113f2565b005b34801561059b57600080fd5b506105b660048036038101906105b19190612d4e565b611536565b005b6105d260048036038101906105cd9190612ebe565b611641565b005b3480156105e057600080fd5b506105fb60048036038101906105f691906126fc565b611692565b6040516106089190612f96565b60405180910390f35b34801561061d57600080fd5b506106266116fc565b604051610633919061282d565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e91906126fc565b611702565b60405161067091906126a4565b60405180910390f35b34801561068557600080fd5b506106a0600480360381019061069b91906126fc565b6117a0565b005b3480156106ae57600080fd5b506106c960048036038101906106c49190612fb1565b61189a565b6040516106d691906125f9565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061073a57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061076a5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606002805461078090613020565b80601f01602080910402602001604051908101604052809291908181526020018280546107ac90613020565b80156107f95780601f106107ce576101008083540402835291602001916107f9565b820191906000526020600020905b8154815290600101906020018083116107dc57829003601f168201915b5050505050905090565b600061080e8261192e565b610844576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061088d82610e5f565b90508073ffffffffffffffffffffffffffffffffffffffff166108ae61198d565b73ffffffffffffffffffffffffffffffffffffffff1614610911576108da816108d561198d565b61189a565b610910576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d9061309d565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7660405160405180910390a350565b6000610afe611995565b6001546000540303905090565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b4957610b483361199e565b5b610b54848484611a9b565b50505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be19061309d565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050610c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7790613109565b60405180910390fd5b565b6daaeb6d7670e522a718067333cd4e81565b823373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610cd257610cd13361199e565b5b610cdd848484611dbd565b50505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a9061309d565b60405180910390fd5b8181600b9182610d849291906132d6565b505050565b6060600083839050905060008167ffffffffffffffff811115610daf57610dae612d93565b5b604051908082528060200260200182016040528015610de857816020015b610dd56124f6565b815260200190600190039081610dcd5790505b50905060005b828114610e4057610e17868683818110610e0b57610e0a6133a6565b5b90506020020135611692565b828281518110610e2a57610e296133a6565b5b6020026020010181905250806001019050610dee565b50809250505092915050565b600c60009054906101000a900460ff1681565b6000610e6a82611ddd565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ed8576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb09061309d565b60405180910390fd5b600c60009054906101000a900460ff1615600c60006101000a81548160ff021916908315150217905550565b60606000806000610ff585610e71565b905060008167ffffffffffffffff81111561101357611012612d93565b5b6040519080825280602002602001820160405280156110415781602001602082028036833780820191505090505b50905061104c6124f6565b6000611056611995565b90505b83861461111a5761106981611ea9565b9150816040015161110f57600073ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146110b457816000015194505b8773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361110e5780838780600101985081518110611101576111006133a6565b5b6020026020010181815250505b5b806001019050611059565b508195505050505050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60606003805461116390613020565b80601f016020809104026020016040519081016040528092919081815260200182805461118f90613020565b80156111dc5780601f106111b1576101008083540402835291602001916111dc565b820191906000526020600020905b8154815290600101906020018083116111bf57829003601f168201915b5050505050905090565b6060818310611221576040517f32c1995a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061122c611ed4565b9050611236611995565b85101561124857611245611995565b94505b80841115611254578093505b600061125f87610e71565b90508486101561128257600086860390508181101561127c578091505b50611287565b600090505b60008167ffffffffffffffff8111156112a3576112a2612d93565b5b6040519080825280602002602001820160405280156112d15781602001602082028036833780820191505090505b509050600082036112e857809450505050506113eb565b60006112f388611692565b90506000816040015161130857816000015190505b60008990505b88811415801561131e5750848714155b156113dd5761132c81611ea9565b925082604001516113d257600073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff161461137757826000015191505b8a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113d157808488806001019950815181106113c4576113c36133a6565b5b6020026020010181815250505b5b80600101905061130e565b508583528296505050505050505b9392505050565b600c60009054906101000a900460ff1615611442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143990613421565b60405180910390fd5b600061144c610af4565b9050610ec282820110611494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148b9061348d565b60405180910390fd5b600b82106114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ce906134f9565b60405180910390fd5b6000829050664380663abb800081023414611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e90613565565b60405180910390fd5b6115313384611edd565b505050565b806007600061154361198d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166115f061198d565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161163591906125f9565b60405180910390a35050565b833373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461167f5761167e3361199e565b5b61168b85858585612098565b5050505050565b61169a6124f6565b6116a26124f6565b6116aa611995565b8310806116be57506116ba611ed4565b8310155b156116cc57809150506116f7565b6116d583611ea9565b90508060400151156116ea57809150506116f7565b6116f38361210b565b9150505b919050565b600a5481565b606061170d8261192e565b611743576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061174d61212b565b9050600081510361176d5760405180602001604052806000815250611798565b80611777846121bd565b6040516020016117889291906135c1565b6040516020818303038152906040525b915050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118279061309d565b60405180910390fd5b600061183a610af4565b9050600a54828261184b9190613614565b1061188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290613694565b60405180910390fd5b6118963360c8611edd565b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600081611939611995565b11158015611948575060005482105b8015611986575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b60006001905090565b60006daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115611a98576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430836040518363ffffffff1660e01b8152600401611a159291906136b4565b602060405180830381865afa158015611a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5691906136f2565b611a9757806040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401611a8e919061276a565b60405180910390fd5b5b50565b6000611aa682611ddd565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611b0d576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611b198461220d565b91509150611b2f8187611b2a61198d565b612234565b611b7b57611b4486611b3f61198d565b61189a565b611b7a576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611be1576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bee8686866001612278565b8015611bf957600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550611cc785611ca388888761227e565b7c0200000000000000000000000000000000000000000000000000000000176122a6565b600460008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603611d4d5760006001850190506000600460008381526020019081526020016000205403611d4b576000548114611d4a578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611db586868660016122d1565b505050505050565b611dd883838360405180602001604052806000815250611641565b505050565b60008082905080611dec611995565b11611e7257600054811015611e715760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603611e6f575b60008103611e65576004600083600190039350838152602001908152602001600020549050611e3b565b8092505050611ea4565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b611eb16124f6565b611ecd60046000848152602001908152602001600020546122d7565b9050919050565b60008054905090565b60008054905060008203611f1d576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f2a6000848385612278565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611fa183611f92600086600061227e565b611f9b8561238d565b176122a6565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b81811461204257808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612007565b506000820361207d576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600081905550505061209360008483856122d1565b505050565b6120a3848484610b0b565b60008373ffffffffffffffffffffffffffffffffffffffff163b14612105576120ce8484848461239d565b612104576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b6121136124f6565b61212461211f83611ddd565b6122d7565b9050919050565b6060600b805461213a90613020565b80601f016020809104026020016040519081016040528092919081815260200182805461216690613020565b80156121b35780601f10612188576101008083540402835291602001916121b3565b820191906000526020600020905b81548152906001019060200180831161219657829003601f168201915b5050505050905090565b606060a060405101806040526020810391506000825281835b6001156121f857600184039350600a81066030018453600a81049050806121d6575b50828103602084039350808452505050919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e86122958686846124ed565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b6122df6124f6565b81816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060a082901c816020019067ffffffffffffffff16908167ffffffffffffffff168152505060007c01000000000000000000000000000000000000000000000000000000008316141581604001901515908115158152505060e882901c816060019062ffffff16908162ffffff1681525050919050565b60006001821460e11b9050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026123c361198d565b8786866040518563ffffffff1660e01b81526004016123e59493929190613774565b6020604051808303816000875af192505050801561242157506040513d601f19601f8201168201806040525081019061241e91906137d5565b60015b61249a573d8060008114612451576040519150601f19603f3d011682016040523d82523d6000602084013e612456565b606091505b506000815103612492576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60009392505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600015158152602001600062ffffff1681525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61258e81612559565b811461259957600080fd5b50565b6000813590506125ab81612585565b92915050565b6000602082840312156125c7576125c661254f565b5b60006125d58482850161259c565b91505092915050565b60008115159050919050565b6125f3816125de565b82525050565b600060208201905061260e60008301846125ea565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561264e578082015181840152602081019050612633565b60008484015250505050565b6000601f19601f8301169050919050565b600061267682612614565b612680818561261f565b9350612690818560208601612630565b6126998161265a565b840191505092915050565b600060208201905081810360008301526126be818461266b565b905092915050565b6000819050919050565b6126d9816126c6565b81146126e457600080fd5b50565b6000813590506126f6816126d0565b92915050565b6000602082840312156127125761271161254f565b5b6000612720848285016126e7565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061275482612729565b9050919050565b61276481612749565b82525050565b600060208201905061277f600083018461275b565b92915050565b61278e81612749565b811461279957600080fd5b50565b6000813590506127ab81612785565b92915050565b600080604083850312156127c8576127c761254f565b5b60006127d68582860161279c565b92505060206127e7858286016126e7565b9150509250929050565b6000602082840312156128075761280661254f565b5b60006128158482850161279c565b91505092915050565b612827816126c6565b82525050565b6000602082019050612842600083018461281e565b92915050565b6000806000606084860312156128615761286061254f565b5b600061286f8682870161279c565b93505060206128808682870161279c565b9250506040612891868287016126e7565b9150509250925092565b6000819050919050565b60006128c06128bb6128b684612729565b61289b565b612729565b9050919050565b60006128d2826128a5565b9050919050565b60006128e4826128c7565b9050919050565b6128f4816128d9565b82525050565b600060208201905061290f60008301846128eb565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261293a57612939612915565b5b8235905067ffffffffffffffff8111156129575761295661291a565b5b6020830191508360018202830111156129735761297261291f565b5b9250929050565b600080602083850312156129915761299061254f565b5b600083013567ffffffffffffffff8111156129af576129ae612554565b5b6129bb85828601612924565b92509250509250929050565b60008083601f8401126129dd576129dc612915565b5b8235905067ffffffffffffffff8111156129fa576129f961291a565b5b602083019150836020820283011115612a1657612a1561291f565b5b9250929050565b60008060208385031215612a3457612a3361254f565b5b600083013567ffffffffffffffff811115612a5257612a51612554565b5b612a5e858286016129c7565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612a9f81612749565b82525050565b600067ffffffffffffffff82169050919050565b612ac281612aa5565b82525050565b612ad1816125de565b82525050565b600062ffffff82169050919050565b612aef81612ad7565b82525050565b608082016000820151612b0b6000850182612a96565b506020820151612b1e6020850182612ab9565b506040820151612b316040850182612ac8565b506060820151612b446060850182612ae6565b50505050565b6000612b568383612af5565b60808301905092915050565b6000602082019050919050565b6000612b7a82612a6a565b612b848185612a75565b9350612b8f83612a86565b8060005b83811015612bc0578151612ba78882612b4a565b9750612bb283612b62565b925050600181019050612b93565b5085935050505092915050565b60006020820190508181036000830152612be78184612b6f565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c24816126c6565b82525050565b6000612c368383612c1b565b60208301905092915050565b6000602082019050919050565b6000612c5a82612bef565b612c648185612bfa565b9350612c6f83612c0b565b8060005b83811015612ca0578151612c878882612c2a565b9750612c9283612c42565b925050600181019050612c73565b5085935050505092915050565b60006020820190508181036000830152612cc78184612c4f565b905092915050565b600080600060608486031215612ce857612ce761254f565b5b6000612cf68682870161279c565b9350506020612d07868287016126e7565b9250506040612d18868287016126e7565b9150509250925092565b612d2b816125de565b8114612d3657600080fd5b50565b600081359050612d4881612d22565b92915050565b60008060408385031215612d6557612d6461254f565b5b6000612d738582860161279c565b9250506020612d8485828601612d39565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612dcb8261265a565b810181811067ffffffffffffffff82111715612dea57612de9612d93565b5b80604052505050565b6000612dfd612545565b9050612e098282612dc2565b919050565b600067ffffffffffffffff821115612e2957612e28612d93565b5b612e328261265a565b9050602081019050919050565b82818337600083830152505050565b6000612e61612e5c84612e0e565b612df3565b905082815260208101848484011115612e7d57612e7c612d8e565b5b612e88848285612e3f565b509392505050565b600082601f830112612ea557612ea4612915565b5b8135612eb5848260208601612e4e565b91505092915050565b60008060008060808587031215612ed857612ed761254f565b5b6000612ee68782880161279c565b9450506020612ef78782880161279c565b9350506040612f08878288016126e7565b925050606085013567ffffffffffffffff811115612f2957612f28612554565b5b612f3587828801612e90565b91505092959194509250565b608082016000820151612f576000850182612a96565b506020820151612f6a6020850182612ab9565b506040820151612f7d6040850182612ac8565b506060820151612f906060850182612ae6565b50505050565b6000608082019050612fab6000830184612f41565b92915050565b60008060408385031215612fc857612fc761254f565b5b6000612fd68582860161279c565b9250506020612fe78582860161279c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061303857607f821691505b60208210810361304b5761304a612ff1565b5b50919050565b7f554e415554484f52495a45440000000000000000000000000000000000000000600082015250565b6000613087600c8361261f565b915061309282613051565b602082019050919050565b600060208201905081810360008301526130b68161307a565b9050919050565b7f554e5355434345535346554c0000000000000000000000000000000000000000600082015250565b60006130f3600c8361261f565b91506130fe826130bd565b602082019050919050565b60006020820190508181036000830152613122816130e6565b9050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026131967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613159565b6131a08683613159565b95508019841693508086168417925050509392505050565b60006131d36131ce6131c9846126c6565b61289b565b6126c6565b9050919050565b6000819050919050565b6131ed836131b8565b6132016131f9826131da565b848454613166565b825550505050565b600090565b613216613209565b6132218184846131e4565b505050565b5b818110156132455761323a60008261320e565b600181019050613227565b5050565b601f82111561328a5761325b81613134565b61326484613149565b81016020851015613273578190505b61328761327f85613149565b830182613226565b50505b505050565b600082821c905092915050565b60006132ad6000198460080261328f565b1980831691505092915050565b60006132c6838361329c565b9150826002028217905092915050565b6132e08383613129565b67ffffffffffffffff8111156132f9576132f8612d93565b5b6133038254613020565b61330e828285613249565b6000601f83116001811461333d576000841561332b578287013590505b61333585826132ba565b86555061339d565b601f19841661334b86613134565b60005b828110156133735784890135825560018201915060208501945060208101905061334e565b86831015613390578489013561338c601f89168261329c565b8355505b6001600288020188555050505b50505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4d494e54494e4720504155534544000000000000000000000000000000000000600082015250565b600061340b600e8361261f565b9150613416826133d5565b602082019050919050565b6000602082019050818103600083015261343a816133fe565b9050919050565b7f5055424c494320535550504c5920524541434845440000000000000000000000600082015250565b600061347760158361261f565b915061348282613441565b602082019050919050565b600060208201905081810360008301526134a68161346a565b9050919050565b7f4d415820504552205452414e53414354494f4e20495320313000000000000000600082015250565b60006134e360198361261f565b91506134ee826134ad565b602082019050919050565b60006020820190508181036000830152613512816134d6565b9050919050565b7f494e434f52524543542045544820414d4f554e54000000000000000000000000600082015250565b600061354f60148361261f565b915061355a82613519565b602082019050919050565b6000602082019050818103600083015261357e81613542565b9050919050565b600081905092915050565b600061359b82612614565b6135a58185613585565b93506135b5818560208601612630565b80840191505092915050565b60006135cd8285613590565b91506135d98284613590565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061361f826126c6565b915061362a836126c6565b9250828201905080821115613642576136416135e5565b5b92915050565b7f414c4c2052455345525645532054414b454e0000000000000000000000000000600082015250565b600061367e60128361261f565b915061368982613648565b602082019050919050565b600060208201905081810360008301526136ad81613671565b9050919050565b60006040820190506136c9600083018561275b565b6136d6602083018461275b565b9392505050565b6000815190506136ec81612d22565b92915050565b6000602082840312156137085761370761254f565b5b6000613716848285016136dd565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60006137468261371f565b613750818561372a565b9350613760818560208601612630565b6137698161265a565b840191505092915050565b6000608082019050613789600083018761275b565b613796602083018661275b565b6137a3604083018561281e565b81810360608301526137b5818461373b565b905095945050505050565b6000815190506137cf81612585565b92915050565b6000602082840312156137eb576137ea61254f565b5b60006137f9848285016137c0565b9150509291505056fea26469706673582212201e3875f1df482fa36d4bd9ee9a64edc043bc842a5e83edf857583bf8cf1e326464736f6c63430008110033697066733a2f2f516d51675a6a6a467848774e396e57656a747933624e3459575a4235444a5a424667796d575648723937696b70312f