608060405234801562000010575f80fd5b506040518060400160405280600d81526020017f4649524d455a4120544f4b454e000000000000000000000000000000000000008152506200005881620000ae60201b60201c565b5060016003819055503360045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6005819055506200040b565b8060029081620000bf919062000327565b5050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200013f57607f821691505b602082108103620001555762000154620000fa565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620001b97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200017c565b620001c586836200017c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200020f620002096200020384620001dd565b620001e6565b620001dd565b9050919050565b5f819050919050565b6200022a83620001ef565b62000242620002398262000216565b84845462000188565b825550505050565b5f90565b620002586200024a565b620002658184846200021f565b505050565b5b818110156200028c57620002805f826200024e565b6001810190506200026b565b5050565b601f821115620002db57620002a5816200015b565b620002b0846200016d565b81016020851015620002c0578190505b620002d8620002cf856200016d565b8301826200026a565b50505b505050565b5f82821c905092915050565b5f620002fd5f1984600802620002e0565b1980831691505092915050565b5f620003178383620002ec565b9150826002028217905092915050565b6200033282620000c3565b67ffffffffffffffff8111156200034e576200034d620000cd565b5b6200035a825462000127565b6200036782828562000290565b5f60209050601f8311600181146200039d575f841562000388578287015190505b6200039485826200030a565b86555062000403565b601f198416620003ad866200015b565b5f5b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002ec565b8355505b6001600288020188555050505b505050505050565b61429080620004195f395ff3fe608060405234801561000f575f80fd5b506004361061011e575f3560e01c806354797676116100ab578063b390c0ab1161006f578063b390c0ab14610346578063b7b551ed14610362578063bf90623214610392578063e985e9c5146103c2578063f242432a146103f25761011e565b8063547976761461027057806364bdfdbf146102a257806381db4147146102d35780638da5cb5b1461030c578063a22cb4651461032a5761011e565b806318160ddd116100f257806318160ddd146101ce5780632eb2c2d6146101ec5780634a5dc3aa146102085780634e1273f414610224578063506cdefc146102545761011e565b8062fdd58e1461012257806301ffc9a7146101525780630e89341c1461018257806315f34106146101b2575b5f80fd5b61013c60048036038101906101379190612a4e565b61040e565b6040516101499190612a9b565b60405180910390f35b61016c60048036038101906101679190612b09565b610463565b6040516101799190612b4e565b60405180910390f35b61019c60048036038101906101979190612b67565b610544565b6040516101a99190612c1c565b60405180910390f35b6101cc60048036038101906101c79190612c3c565b6105d6565b005b6101d66108dc565b6040516101e39190612a9b565b60405180910390f35b61020660048036038101906102019190612e6a565b6108e2565b005b610222600480360381019061021d9190612fd3565b610989565b005b61023e60048036038101906102399190613113565b610c54565b60405161024b9190613240565b60405180910390f35b61026e60048036038101906102699190613260565b610d61565b005b61028a60048036038101906102859190612b67565b6113e1565b6040516102999392919061337b565b60405180910390f35b6102bc60048036038101906102b79190612b67565b611676565b6040516102ca929190613418565b60405180910390f35b6102ed60048036038101906102e89190612b67565b6116fe565b6040516103039a9998979695949392919061344f565b60405180910390f35b61031461182b565b60405161032191906134f0565b60405180910390f35b610344600480360381019061033f9190613533565b611850565b005b610360600480360381019061035b9190613571565b611866565b005b61037c60048036038101906103779190612b67565b611903565b6040516103899190612a9b565b60405180910390f35b6103ac60048036038101906103a79190612b67565b61191d565b6040516103b991906134f0565b60405180910390f35b6103dc60048036038101906103d791906135af565b611959565b6040516103e99190612b4e565b60405180910390f35b61040c600480360381019061040791906135ed565b6119e7565b005b5f805f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061052d57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061053d575061053c82611a8e565b5b9050919050565b606060028054610553906136ad565b80601f016020809104026020016040519081016040528092919081815260200182805461057f906136ad565b80156105ca5780601f106105a1576101008083540402835291602001916105ca565b820191905f5260205f20905b8154815290600101906020018083116105ad57829003601f168201915b50505050509050919050565b6105de611af7565b5f60075f8481526020019081526020015f20905060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610681576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067890613727565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16816006015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610712576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107099061378f565b60405180910390fd5b5f815f015411610757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074e906137f7565b60405180910390fd5b8060080160019054906101000a900460ff166107a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079f9061385f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080d906138c7565b60405180910390fd5b81816006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8160080160016101000a81548160ff021916908315150217905550828273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8ff7cb2a97f03bd8ca9864a842754542e67cbcbe02f9dd3fd051659e821033a960405160405180910390a4506108d8611b46565b5050565b60055481565b5f6108eb611b50565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610930575061092e8682611959565b155b156109745780866040517fe237d92200000000000000000000000000000000000000000000000000000000815260040161096b9291906138e5565b60405180910390fd5b6109818686868686611b57565b505050505050565b610991611af7565b5f60016005546109a19190613939565b90505f846040516020016109b591906139a6565b60405160208183030381529060405290506109f1868385886040516020016109dd91906139a6565b604051602081830303815290604052611c4b565b5f60075f8481526020019081526020015f20905082815f018190555081816001019081610a1e9190613b59565b5084816002018190555083816003018190555083816004018190555086816005015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f816006015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f81600701819055505f816008015f6101000a81548160ff02191690831515021790555060018160080160016101000a81548160ff0219169083151502179055505f60065f8581526020019081526020015f20905083815f01819055508060020188908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612710816001015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160055f828254610bd59190613939565b92505081905550838873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee88604051610c3a9190612a9b565b60405180910390a450505050610c4e611b46565b50505050565b60608151835114610ca057815183516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610c97929190613c28565b60405180910390fd5b5f835167ffffffffffffffff811115610cbc57610cbb612c7e565b5b604051908082528060200260200182016040528015610cea5781602001602082028036833780820191505090505b5090505f5b8451811015610d5657610d26610d0e8287611ce090919063ffffffff16565b610d218387611cf390919063ffffffff16565b61040e565b828281518110610d3957610d38613c4f565b5b60200260200101818152505080610d4f90613c7c565b9050610cef565b508091505092915050565b610d69611af7565b5f60075f8481526020019081526020015f2090505f60065f8581526020019081526020015f209050610d9b8633611959565b80610dd157508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610e28575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e90613727565b60405180910390fd5b5f816002018054905011610eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea7906137f7565b60405180910390fd5b5f816001015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2890613d0d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16826006015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990613d75565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826006015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104a90613ddd565b60405180910390fd5b828260040154101561109a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109190613e45565b60405180910390fd5b5f8260030154612710856110ae9190613e63565b6110b89190613ed1565b90505f826001015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054111561115b5780826001015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461114f9190613939565b92505081905550611202565b8160020186908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080826001015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b80826001015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546112509190613f01565b92505081905550816001015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836007018190555083836004015f8282546112b29190613f01565b925050819055505f836004015403611349576001836008015f6101000a81548160ff021916908315150217905550848673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f034879492dd3395aec5dfd6de62bedc8eda7c0dc455ae044c8d0297acde035348a42604051611340929190613f34565b60405180910390a45b6113648787878760405180602001604052805f8152506119e7565b848673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f574ec23e8ee14bdb2d3686c9dd45593e31264ae3e96eb8be5c7ac9f47e461a4c8a8886426040516113c89493929190613f5b565b60405180910390a45050506113db611b46565b50505050565b60608060605f60065f8681526020019081526020015f2090505f816002018054905067ffffffffffffffff81111561141c5761141b612c7e565b5b60405190808252806020026020018201604052801561144a5781602001602082028036833780820191505090505b5090505f826002018054905067ffffffffffffffff81111561146f5761146e612c7e565b5b60405190808252806020026020018201604052801561149d5781602001602082028036833780820191505090505b5090505f836002018054905067ffffffffffffffff8111156114c2576114c1612c7e565b5b6040519080825280602002602001820160405280156114f05781602001602082028036833780820191505090505b5090505f5b846002018054905081101561166157845f015484828151811061151b5761151a613c4f565b5b602002602001018181525050846001015f86600201838154811061154257611541613c4f565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548382815181106115b7576115b6613c4f565b5b6020026020010181815250508460020181815481106115d9576115d8613c4f565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811061161457611613613c4f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808061165990613c7c565b9150506114f5565b50828183965096509650505050509193909250565b61167e612976565b611686612976565b5f60075f8581526020019081526020015f2090506116c7816005015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611d06565b92506116f6816006015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611d06565b915050915091565b6007602052805f5260405f205f91509050805f015490806001018054611723906136ad565b80601f016020809104026020016040519081016040528092919081815260200182805461174f906136ad565b801561179a5780601f106117715761010080835404028352916020019161179a565b820191905f5260205f20905b81548152906001019060200180831161177d57829003601f168201915b505050505090806002015490806003015490806004015490806005015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806006015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806007015490806008015f9054906101000a900460ff16908060080160019054906101000a900460ff1690508a565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61186261185b611b50565b8383611e95565b5050565b5f81116118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f90613fe8565b60405180910390fd5b806118b3338461040e565b10156118f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118eb90614050565b60405180910390fd5b6118ff338383611ffe565b5050565b6006602052805f5260405f205f91509050805f0154905081565b5f60075f8381526020019081526020015f206006015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f6119f0611b50565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015611a355750611a338682611959565b155b15611a795780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401611a709291906138e5565b60405180910390fd5b611a8686868686866120a0565b505050505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600260035403611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b33906140b8565b60405180910390fd5b6002600381905550565b6001600381905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611bc7575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611bbe91906134f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c37575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401611c2e91906134f0565b60405180910390fd5b611c4485858585856121a6565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611cbb575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611cb291906134f0565b60405180910390fd5b5f80611cc78585612252565b91509150611cd85f878484876121a6565b505050505050565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b611d0e612976565b5f821480611d6a57505f60065f8481526020019081526020015f206001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054145b15611dad5760405180608001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f8152509050611e8f565b5f611db8848461040e565b90505f8103611e005760405180608001604052808481526020018573ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f815250915050611e8f565b5f60065f8581526020019081526020015f20905060405180608001604052808581526020018673ffffffffffffffffffffffffffffffffffffffff168152602001826001015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054815260200183815250925050505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f05575f6040517fced3e100000000000000000000000000000000000000000000000000000000008152600401611efc91906134f0565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ff19190612b4e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361206e575f6040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161206591906134f0565b60405180910390fd5b5f8061207a8484612252565b91509150612099855f848460405180602001604052805f8152506121a6565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612110575f6040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161210791906134f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612180575f6040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161217791906134f0565b60405180910390fd5b5f8061218c8585612252565b9150915061219d87878484876121a6565b50505050505050565b6121b285858585612282565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461224b575f6121ee611b50565b9050600184510361223a575f61220d5f86611cf390919063ffffffff16565b90505f6122235f86611cf390919063ffffffff16565b9050612233838989858589612618565b5050612249565b6122488187878787876127c7565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b80518251146122cc57815181516040517f5b0599910000000000000000000000000000000000000000000000000000000081526004016122c3929190613c28565b60405180910390fd5b5f6122d5611b50565b90505f5b83518110156124d7575f6122f68286611cf390919063ffffffff16565b90505f61230c8386611cf390919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461242f575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156123db57888183856040517f03dee4c50000000000000000000000000000000000000000000000000000000081526004016123d29493929190613f5b565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16146124c457805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546124bc9190613939565b925050819055505b5050806124d090613c7c565b90506122d9565b506001835103612592575f6124f55f85611cf390919063ffffffff16565b90505f61250b5f85611cf390919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612583929190613c28565b60405180910390a45050612611565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516126089291906140d6565b60405180910390a45b5050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b11156127bf578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161267895949392919061415d565b6020604051808303815f875af19250505080156126b357506040513d601f19601f820116820180604052508101906126b091906141c9565b60015b612734573d805f81146126e1576040519150601f19603f3d011682016040523d82523d5f602084013e6126e6565b606091505b505f81510361272c57846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161272391906134f0565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146127bd57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016127b491906134f0565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b111561296e578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016128279594939291906141f4565b6020604051808303815f875af192505050801561286257506040513d601f19601f8201168201806040525081019061285f91906141c9565b60015b6128e3573d805f8114612890576040519150601f19603f3d011682016040523d82523d5f602084013e612895565b606091505b505f8151036128db57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016128d291906134f0565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461296c57846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161296391906134f0565b60405180910390fd5b505b505050505050565b60405180608001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129ea826129c1565b9050919050565b6129fa816129e0565b8114612a04575f80fd5b50565b5f81359050612a15816129f1565b92915050565b5f819050919050565b612a2d81612a1b565b8114612a37575f80fd5b50565b5f81359050612a4881612a24565b92915050565b5f8060408385031215612a6457612a636129b9565b5b5f612a7185828601612a07565b9250506020612a8285828601612a3a565b9150509250929050565b612a9581612a1b565b82525050565b5f602082019050612aae5f830184612a8c565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612ae881612ab4565b8114612af2575f80fd5b50565b5f81359050612b0381612adf565b92915050565b5f60208284031215612b1e57612b1d6129b9565b5b5f612b2b84828501612af5565b91505092915050565b5f8115159050919050565b612b4881612b34565b82525050565b5f602082019050612b615f830184612b3f565b92915050565b5f60208284031215612b7c57612b7b6129b9565b5b5f612b8984828501612a3a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612bc9578082015181840152602081019050612bae565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612bee82612b92565b612bf88185612b9c565b9350612c08818560208601612bac565b612c1181612bd4565b840191505092915050565b5f6020820190508181035f830152612c348184612be4565b905092915050565b5f8060408385031215612c5257612c516129b9565b5b5f612c5f85828601612a3a565b9250506020612c7085828601612a07565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612cb482612bd4565b810181811067ffffffffffffffff82111715612cd357612cd2612c7e565b5b80604052505050565b5f612ce56129b0565b9050612cf18282612cab565b919050565b5f67ffffffffffffffff821115612d1057612d0f612c7e565b5b602082029050602081019050919050565b5f80fd5b5f612d37612d3284612cf6565b612cdc565b90508083825260208201905060208402830185811115612d5a57612d59612d21565b5b835b81811015612d835780612d6f8882612a3a565b845260208401935050602081019050612d5c565b5050509392505050565b5f82601f830112612da157612da0612c7a565b5b8135612db1848260208601612d25565b91505092915050565b5f80fd5b5f67ffffffffffffffff821115612dd857612dd7612c7e565b5b612de182612bd4565b9050602081019050919050565b828183375f83830152505050565b5f612e0e612e0984612dbe565b612cdc565b905082815260208101848484011115612e2a57612e29612dba565b5b612e35848285612dee565b509392505050565b5f82601f830112612e5157612e50612c7a565b5b8135612e61848260208601612dfc565b91505092915050565b5f805f805f60a08688031215612e8357612e826129b9565b5b5f612e9088828901612a07565b9550506020612ea188828901612a07565b945050604086013567ffffffffffffffff811115612ec257612ec16129bd565b5b612ece88828901612d8d565b935050606086013567ffffffffffffffff811115612eef57612eee6129bd565b5b612efb88828901612d8d565b925050608086013567ffffffffffffffff811115612f1c57612f1b6129bd565b5b612f2888828901612e3d565b9150509295509295909350565b5f67ffffffffffffffff821115612f4f57612f4e612c7e565b5b612f5882612bd4565b9050602081019050919050565b5f612f77612f7284612f35565b612cdc565b905082815260208101848484011115612f9357612f92612dba565b5b612f9e848285612dee565b509392505050565b5f82601f830112612fba57612fb9612c7a565b5b8135612fca848260208601612f65565b91505092915050565b5f805f8060808587031215612feb57612fea6129b9565b5b5f612ff887828801612a07565b945050602085013567ffffffffffffffff811115613019576130186129bd565b5b61302587828801612fa6565b935050604061303687828801612a3a565b925050606061304787828801612a3a565b91505092959194509250565b5f67ffffffffffffffff82111561306d5761306c612c7e565b5b602082029050602081019050919050565b5f61309061308b84613053565b612cdc565b905080838252602082019050602084028301858111156130b3576130b2612d21565b5b835b818110156130dc57806130c88882612a07565b8452602084019350506020810190506130b5565b5050509392505050565b5f82601f8301126130fa576130f9612c7a565b5b813561310a84826020860161307e565b91505092915050565b5f8060408385031215613129576131286129b9565b5b5f83013567ffffffffffffffff811115613146576131456129bd565b5b613152858286016130e6565b925050602083013567ffffffffffffffff811115613173576131726129bd565b5b61317f85828601612d8d565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6131bb81612a1b565b82525050565b5f6131cc83836131b2565b60208301905092915050565b5f602082019050919050565b5f6131ee82613189565b6131f88185613193565b9350613203836131a3565b805f5b8381101561323357815161321a88826131c1565b9750613225836131d8565b925050600181019050613206565b5085935050505092915050565b5f6020820190508181035f83015261325881846131e4565b905092915050565b5f805f8060808587031215613278576132776129b9565b5b5f61328587828801612a07565b945050602061329687828801612a07565b93505060406132a787828801612a3a565b92505060606132b887828801612a3a565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132f6816129e0565b82525050565b5f61330783836132ed565b60208301905092915050565b5f602082019050919050565b5f613329826132c4565b61333381856132ce565b935061333e836132de565b805f5b8381101561336e57815161335588826132fc565b975061336083613313565b925050600181019050613341565b5085935050505092915050565b5f6060820190508181035f83015261339381866131e4565b905081810360208301526133a7818561331f565b905081810360408301526133bb81846131e4565b9050949350505050565b608082015f8201516133d95f8501826131b2565b5060208201516133ec60208501826132ed565b5060408201516133ff60408501826131b2565b50606082015161341260608501826131b2565b50505050565b5f6101008201905061342c5f8301856133c5565b61343960808301846133c5565b9392505050565b613449816129e0565b82525050565b5f610140820190506134635f83018d612a8c565b8181036020830152613475818c612be4565b9050613484604083018b612a8c565b613491606083018a612a8c565b61349e6080830189612a8c565b6134ab60a0830188613440565b6134b860c0830187613440565b6134c560e0830186612a8c565b6134d3610100830185612b3f565b6134e1610120830184612b3f565b9b9a5050505050505050505050565b5f6020820190506135035f830184613440565b92915050565b61351281612b34565b811461351c575f80fd5b50565b5f8135905061352d81613509565b92915050565b5f8060408385031215613549576135486129b9565b5b5f61355685828601612a07565b92505060206135678582860161351f565b9150509250929050565b5f8060408385031215613587576135866129b9565b5b5f61359485828601612a3a565b92505060206135a585828601612a3a565b9150509250929050565b5f80604083850312156135c5576135c46129b9565b5b5f6135d285828601612a07565b92505060206135e385828601612a07565b9150509250929050565b5f805f805f60a08688031215613606576136056129b9565b5b5f61361388828901612a07565b955050602061362488828901612a07565b945050604061363588828901612a3a565b935050606061364688828901612a3a565b925050608086013567ffffffffffffffff811115613667576136666129bd565b5b61367388828901612e3d565b9150509295509295909350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806136c457607f821691505b6020821081036136d7576136d6613680565b5b50919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f613711600e83612b9c565b915061371c826136dd565b602082019050919050565b5f6020820190508181035f83015261373e81613705565b9050919050565b7f427579657220616c7265616479206164646564000000000000000000000000005f82015250565b5f613779601383612b9c565b915061378482613745565b602082019050919050565b5f6020820190508181035f8301526137a68161376d565b9050919050565b7f50726f7065727479206e6f7420666f756e6400000000000000000000000000005f82015250565b5f6137e1601283612b9c565b91506137ec826137ad565b602082019050919050565b5f6020820190508181035f83015261380e816137d5565b9050919050565b7f50726f7065727479206e6f7420617661696c61626c65000000000000000000005f82015250565b5f613849601683612b9c565b915061385482613815565b602082019050919050565b5f6020820190508181035f8301526138768161383d565b9050919050565b7f496e76616c6964206275796572206164647265737300000000000000000000005f82015250565b5f6138b1601583612b9c565b91506138bc8261387d565b602082019050919050565b5f6020820190508181035f8301526138de816138a5565b9050919050565b5f6040820190506138f85f830185613440565b6139056020830184613440565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61394382612a1b565b915061394e83612a1b565b92508282019050808211156139665761396561390c565b5b92915050565b5f81905092915050565b5f61398082612b92565b61398a818561396c565b935061399a818560208601612bac565b80840191505092915050565b5f6139b18284613976565b915081905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302613a187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826139dd565b613a2286836139dd565b95508019841693508086168417925050509392505050565b5f819050919050565b5f613a5d613a58613a5384612a1b565b613a3a565b612a1b565b9050919050565b5f819050919050565b613a7683613a43565b613a8a613a8282613a64565b8484546139e9565b825550505050565b5f90565b613a9e613a92565b613aa9818484613a6d565b505050565b5b81811015613acc57613ac15f82613a96565b600181019050613aaf565b5050565b601f821115613b1157613ae2816139bc565b613aeb846139ce565b81016020851015613afa578190505b613b0e613b06856139ce565b830182613aae565b50505b505050565b5f82821c905092915050565b5f613b315f1984600802613b16565b1980831691505092915050565b5f613b498383613b22565b9150826002028217905092915050565b613b6282612b92565b67ffffffffffffffff811115613b7b57613b7a612c7e565b5b613b8582546136ad565b613b90828285613ad0565b5f60209050601f831160018114613bc1575f8415613baf578287015190505b613bb98582613b3e565b865550613c20565b601f198416613bcf866139bc565b5f5b82811015613bf657848901518255600182019150602085019450602081019050613bd1565b86831015613c135784890151613c0f601f891682613b22565b8355505b6001600288020188555050505b505050505050565b5f604082019050613c3b5f830185612a8c565b613c486020830184612a8c565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613c8682612a1b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cb857613cb761390c565b5b600182019050919050565b7f496e76616c6964206f776e6572000000000000000000000000000000000000005f82015250565b5f613cf7600d83612b9c565b9150613d0282613cc3565b602082019050919050565b5f6020820190508181035f830152613d2481613ceb565b9050919050565b7f4275796572206164647265737320696e7465726573746564206e6f74207365745f82015250565b5f613d5f602083612b9c565b9150613d6a82613d2b565b602082019050919050565b5f6020820190508181035f830152613d8c81613d53565b9050919050565b7f42757965722061646472657373206d69736d61746368000000000000000000005f82015250565b5f613dc7601683612b9c565b9150613dd282613d93565b602082019050919050565b5f6020820190508181035f830152613df481613dbb565b9050919050565b7f4e6f7420656e6f75676820617661696c61626c6520746f6b656e7300000000005f82015250565b5f613e2f601b83612b9c565b9150613e3a82613dfb565b602082019050919050565b5f6020820190508181035f830152613e5c81613e23565b9050919050565b5f613e6d82612a1b565b9150613e7883612a1b565b9250828202613e8681612a1b565b91508282048414831517613e9d57613e9c61390c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613edb82612a1b565b9150613ee683612a1b565b925082613ef657613ef5613ea4565b5b828204905092915050565b5f613f0b82612a1b565b9150613f1683612a1b565b9250828203905081811115613f2e57613f2d61390c565b5b92915050565b5f604082019050613f475f830185613440565b613f546020830184612a8c565b9392505050565b5f608082019050613f6e5f830187613440565b613f7b6020830186612a8c565b613f886040830185612a8c565b613f956060830184612a8c565b95945050505050565b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f613fd2601d83612b9c565b9150613fdd82613f9e565b602082019050919050565b5f6020820190508181035f830152613fff81613fc6565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f61403a601483612b9c565b915061404582614006565b602082019050919050565b5f6020820190508181035f8301526140678161402e565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6140a2601f83612b9c565b91506140ad8261406e565b602082019050919050565b5f6020820190508181035f8301526140cf81614096565b9050919050565b5f6040820190508181035f8301526140ee81856131e4565b9050818103602083015261410281846131e4565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f61412f8261410b565b6141398185614115565b9350614149818560208601612bac565b61415281612bd4565b840191505092915050565b5f60a0820190506141705f830188613440565b61417d6020830187613440565b61418a6040830186612a8c565b6141976060830185612a8c565b81810360808301526141a98184614125565b90509695505050505050565b5f815190506141c381612adf565b92915050565b5f602082840312156141de576141dd6129b9565b5b5f6141eb848285016141b5565b91505092915050565b5f60a0820190506142075f830188613440565b6142146020830187613440565b818103604083015261422681866131e4565b9050818103606083015261423a81856131e4565b9050818103608083015261424e8184614125565b9050969550505050505056fea2646970667358221220fa9f4bc0332bbd2c1b7b5536344c9768ea8dd2761166f8a8c85292beedeff37164736f6c63430008140033