608060405234801561000f575f80fd5b5061001e61002360201b60201c565b610183565b5f61003261012160201b60201c565b9050805f0160089054906101000a900460ff161561007c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff161461011e5767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff604051610115919061016a565b60405180910390a15b50565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f67ffffffffffffffff82169050919050565b61016481610148565b82525050565b5f60208201905061017d5f83018461015b565b92915050565b6132bc806101905f395ff3fe608060405234801561000f575f80fd5b506004361061013f575f3560e01c8063715018a6116100b6578063a22cb4651161007a578063a22cb46514610323578063c4d66de81461033f578063e985e9c51461035b578063f242432a1461038b578063f2fde38b146103a7578063f5298aca146103c35761013f565b8063715018a6146102b7578063731133e9146102c15780638456cb59146102dd5780638da5cb5b146102e75780639d0c1397146103055761013f565b80632eb2c2d6116101085780632eb2c2d61461020b5780633f4ba83a146102275780634e1273f4146102315780635c975abb146102615780635f3cbff51461027f5780636b20c4541461029b5761013f565b8062fdd58e1461014357806301ffc9a71461017357806302fe5305146101a35780630e89341c146101bf5780631f7fdffa146101ef575b5f80fd5b61015d60048036038101906101589190612199565b6103df565b60405161016a91906121e6565b60405180910390f35b61018d60048036038101906101889190612254565b610442565b60405161019a9190612299565b60405180910390f35b6101bd60048036038101906101b891906123ee565b610523565b005b6101d960048036038101906101d49190612435565b610537565b6040516101e691906124c0565b60405180910390f35b61020960048036038101906102049190612642565b6105d7565b005b610225600480360381019061022091906126fa565b6105f1565b005b61022f610698565b005b61024b60048036038101906102469190612885565b6106aa565b60405161025891906129b2565b60405180910390f35b6102696107b1565b6040516102769190612299565b60405180910390f35b610299600480360381019061029491906123ee565b6107d3565b005b6102b560048036038101906102b091906129d2565b6107e5565b005b6102bf610891565b005b6102db60048036038101906102d69190612a5a565b6108a4565b005b6102e56108be565b005b6102ef6108d0565b6040516102fc9190612ae9565b60405180910390f35b61030d610905565b60405161031a91906124c0565b60405180910390f35b61033d60048036038101906103389190612b2c565b610994565b005b61035960048036038101906103549190612b6a565b6109aa565b005b61037560048036038101906103709190612b95565b610b52565b6040516103829190612299565b60405180910390f35b6103a560048036038101906103a09190612bd3565b610bee565b005b6103c160048036038101906103bc9190612b6a565b610c95565b005b6103dd60048036038101906103d89190612c66565b610d19565b005b5f806103e9610dc5565b9050805f015f8481526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205491505092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061050c57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061051c575061051b82610dec565b5b9050919050565b61052b610e55565b61053481610edc565b50565b60605f610542610dc5565b905080600201805461055390612ce3565b80601f016020809104026020016040519081016040528092919081815260200182805461057f90612ce3565b80156105ca5780601f106105a1576101008083540402835291602001916105ca565b820191905f5260205f20905b8154815290600101906020018083116105ad57829003601f168201915b5050505050915050919050565b6105df610e55565b6105eb84848484610efd565b50505050565b5f6105fa610f80565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561063f575061063d8682610b52565b155b156106835780866040517fe237d92200000000000000000000000000000000000000000000000000000000815260040161067a929190612d13565b60405180910390fd5b6106908686868686610f87565b505050505050565b6106a0610e55565b6106a861107b565b565b606081518351146106f657815183516040517f5b0599910000000000000000000000000000000000000000000000000000000081526004016106ed929190612d3a565b60405180910390fd5b5f835167ffffffffffffffff811115610712576107116122ca565b5b6040519080825280602002602001820160405280156107405781602001602082028036833780820191505090505b5090505f5b84518110156107a65761077c61076482876110e990919063ffffffff16565b61077783876110fc90919063ffffffff16565b6103df565b82828151811061078f5761078e612d61565b5b602002602001018181525050806001019050610745565b508091505092915050565b5f806107bb61110f565b9050805f015f9054906101000a900460ff1691505090565b805f90816107e19190612f2b565b5050565b6107ed610f80565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561083657506108348361082f610f80565b610b52565b155b1561088157610843610f80565b836040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610878929190612d13565b60405180910390fd5b61088c838383611136565b505050565b610899610e55565b6108a25f6111c6565b565b6108ac610e55565b6108b884848484611297565b50505050565b6108c6610e55565b6108ce61132c565b565b5f806108da61139b565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b60605f805461091390612ce3565b80601f016020809104026020016040519081016040528092919081815260200182805461093f90612ce3565b801561098a5780601f106109615761010080835404028352916020019161098a565b820191905f5260205f20905b81548152906001019060200180831161096d57829003601f168201915b5050505050905090565b6109a661099f610f80565b83836113c2565b5050565b5f6109b3611539565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f808267ffffffffffffffff161480156109fb5750825b90505f60018367ffffffffffffffff16148015610a2e57505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610a3c575080155b15610a73576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610ac0576001855f0160086101000a81548160ff0219169083151502179055505b610ad760405180602001604052805f815250611560565b610ae086611574565b610ae8611588565b610af061159a565b8315610b4a575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610b419190613046565b60405180910390a15b505050505050565b5f80610b5c610dc5565b9050806001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b5f610bf7610f80565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610c3c5750610c3a8682610b52565b155b15610c805780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610c77929190612d13565b60405180910390fd5b610c8d86868686866115a4565b505050505050565b610c9d610e55565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d0d575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610d049190612ae9565b60405180910390fd5b610d16816111c6565b50565b610d21610f80565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610d6a5750610d6883610d63610f80565b610b52565b155b15610db557610d77610f80565b836040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610dac929190612d13565b60405180910390fd5b610dc08383836116aa565b505050565b5f7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500905090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610e5d610f80565b73ffffffffffffffffffffffffffffffffffffffff16610e7b6108d0565b73ffffffffffffffffffffffffffffffffffffffff1614610eda57610e9e610f80565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610ed19190612ae9565b60405180910390fd5b565b5f610ee5610dc5565b905081816002019081610ef89190612f2b565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f6d575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610f649190612ae9565b60405180910390fd5b610f7a5f8585858561174c565b50505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ff7575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610fee9190612ae9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611067575f6040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161105e9190612ae9565b60405180910390fd5b611074858585858561174c565b5050505050565b6110836117f8565b5f61108c61110f565b90505f815f015f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6110d1610f80565b6040516110de9190612ae9565b60405180910390a150565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b5f7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111a6575f6040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161119d9190612ae9565b60405180910390fd5b6111c1835f848460405180602001604052805f81525061174c565b505050565b5f6111cf61139b565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611307575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016112fe9190612ae9565b60405180910390fd5b5f806113138585611838565b915091506113245f8784848761174c565b505050505050565b611334611868565b5f61133d61110f565b90506001815f015f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611383610f80565b6040516113909190612ae9565b60405180910390a150565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f6113cb610dc5565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361143d575f6040517fced3e1000000000000000000000000000000000000000000000000000000000081526004016114349190612ae9565b60405180910390fd5b81816001015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318460405161152b9190612299565b60405180910390a350505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6115686118a9565b611571816118e9565b50565b61157c6118a9565b611585816118fd565b50565b6115906118a9565b611598611981565b565b6115a26118a9565b565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611614575f6040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161160b9190612ae9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611684575f6040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161167b9190612ae9565b60405180910390fd5b5f806116908585611838565b915091506116a1878784848761174c565b50505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361171a575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016117119190612ae9565b60405180910390fd5b5f806117268484611838565b91509150611745855f848460405180602001604052805f81525061174c565b5050505050565b611758858585856119b1565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146117f1575f611794610f80565b905060018451036117e0575f6117b35f866110fc90919063ffffffff16565b90505f6117c95f866110fc90919063ffffffff16565b90506117d98389898585896119c3565b50506117ef565b6117ee818787878787611b72565b5b505b5050505050565b6118006107b1565b611836576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b6118706107b1565b156118a7576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6118b1611d21565b6118e7576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6118f16118a9565b6118fa81610edc565b50565b6119056118a9565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611975575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161196c9190612ae9565b60405180910390fd5b61197e816111c6565b50565b6119896118a9565b5f61199261110f565b90505f815f015f6101000a81548160ff02191690831515021790555050565b6119bd84848484611d3f565b50505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115611b6a578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611a239594939291906130b1565b6020604051808303815f875af1925050508015611a5e57506040513d601f19601f82011682018060405250810190611a5b919061311d565b60015b611adf573d805f8114611a8c576040519150601f19603f3d011682016040523d82523d5f602084013e611a91565b606091505b505f815103611ad757846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611ace9190612ae9565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611b6857846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611b5f9190612ae9565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115611d19578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611bd2959493929190613148565b6020604051808303815f875af1925050508015611c0d57506040513d601f19601f82011682018060405250810190611c0a919061311d565b60015b611c8e573d805f8114611c3b576040519150601f19603f3d011682016040523d82523d5f602084013e611c40565b606091505b505f815103611c8657846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611c7d9190612ae9565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611d1757846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611d0e9190612ae9565b60405180910390fd5b505b505050505050565b5f611d2a611539565b5f0160089054906101000a900460ff16905090565b611d47611868565b611d5384848484611d59565b50505050565b5f611d62610dc5565b90508151835114611dae57825182516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401611da5929190612d3a565b60405180910390fd5b5f611db7610f80565b90505f5b8451811015611fb9575f611dd882876110fc90919063ffffffff16565b90505f611dee83876110fc90919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611f15575f855f015f8481526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611ebf57898183856040517f03dee4c5000000000000000000000000000000000000000000000000000000008152600401611eb694939291906131ae565b60405180910390fd5b818103865f015f8581526020019081526020015f205f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611fac5780855f015f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611fa4919061321e565b925050819055505b5050806001019050611dbb565b506001845103612074575f611fd75f866110fc90919063ffffffff16565b90505f611fed5f866110fc90919063ffffffff16565b90508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612065929190612d3a565b60405180910390a450506120f3565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516120ea929190613251565b60405180910390a45b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6121358261210c565b9050919050565b6121458161212b565b811461214f575f80fd5b50565b5f813590506121608161213c565b92915050565b5f819050919050565b61217881612166565b8114612182575f80fd5b50565b5f813590506121938161216f565b92915050565b5f80604083850312156121af576121ae612104565b5b5f6121bc85828601612152565b92505060206121cd85828601612185565b9150509250929050565b6121e081612166565b82525050565b5f6020820190506121f95f8301846121d7565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612233816121ff565b811461223d575f80fd5b50565b5f8135905061224e8161222a565b92915050565b5f6020828403121561226957612268612104565b5b5f61227684828501612240565b91505092915050565b5f8115159050919050565b6122938161227f565b82525050565b5f6020820190506122ac5f83018461228a565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612300826122ba565b810181811067ffffffffffffffff8211171561231f5761231e6122ca565b5b80604052505050565b5f6123316120fb565b905061233d82826122f7565b919050565b5f67ffffffffffffffff82111561235c5761235b6122ca565b5b612365826122ba565b9050602081019050919050565b828183375f83830152505050565b5f61239261238d84612342565b612328565b9050828152602081018484840111156123ae576123ad6122b6565b5b6123b9848285612372565b509392505050565b5f82601f8301126123d5576123d46122b2565b5b81356123e5848260208601612380565b91505092915050565b5f6020828403121561240357612402612104565b5b5f82013567ffffffffffffffff8111156124205761241f612108565b5b61242c848285016123c1565b91505092915050565b5f6020828403121561244a57612449612104565b5b5f61245784828501612185565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61249282612460565b61249c818561246a565b93506124ac81856020860161247a565b6124b5816122ba565b840191505092915050565b5f6020820190508181035f8301526124d88184612488565b905092915050565b5f67ffffffffffffffff8211156124fa576124f96122ca565b5b602082029050602081019050919050565b5f80fd5b5f61252161251c846124e0565b612328565b905080838252602082019050602084028301858111156125445761254361250b565b5b835b8181101561256d57806125598882612185565b845260208401935050602081019050612546565b5050509392505050565b5f82601f83011261258b5761258a6122b2565b5b813561259b84826020860161250f565b91505092915050565b5f67ffffffffffffffff8211156125be576125bd6122ca565b5b6125c7826122ba565b9050602081019050919050565b5f6125e66125e1846125a4565b612328565b905082815260208101848484011115612602576126016122b6565b5b61260d848285612372565b509392505050565b5f82601f830112612629576126286122b2565b5b81356126398482602086016125d4565b91505092915050565b5f805f806080858703121561265a57612659612104565b5b5f61266787828801612152565b945050602085013567ffffffffffffffff81111561268857612687612108565b5b61269487828801612577565b935050604085013567ffffffffffffffff8111156126b5576126b4612108565b5b6126c187828801612577565b925050606085013567ffffffffffffffff8111156126e2576126e1612108565b5b6126ee87828801612615565b91505092959194509250565b5f805f805f60a0868803121561271357612712612104565b5b5f61272088828901612152565b955050602061273188828901612152565b945050604086013567ffffffffffffffff81111561275257612751612108565b5b61275e88828901612577565b935050606086013567ffffffffffffffff81111561277f5761277e612108565b5b61278b88828901612577565b925050608086013567ffffffffffffffff8111156127ac576127ab612108565b5b6127b888828901612615565b9150509295509295909350565b5f67ffffffffffffffff8211156127df576127de6122ca565b5b602082029050602081019050919050565b5f6128026127fd846127c5565b612328565b905080838252602082019050602084028301858111156128255761282461250b565b5b835b8181101561284e578061283a8882612152565b845260208401935050602081019050612827565b5050509392505050565b5f82601f83011261286c5761286b6122b2565b5b813561287c8482602086016127f0565b91505092915050565b5f806040838503121561289b5761289a612104565b5b5f83013567ffffffffffffffff8111156128b8576128b7612108565b5b6128c485828601612858565b925050602083013567ffffffffffffffff8111156128e5576128e4612108565b5b6128f185828601612577565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61292d81612166565b82525050565b5f61293e8383612924565b60208301905092915050565b5f602082019050919050565b5f612960826128fb565b61296a8185612905565b935061297583612915565b805f5b838110156129a557815161298c8882612933565b97506129978361294a565b925050600181019050612978565b5085935050505092915050565b5f6020820190508181035f8301526129ca8184612956565b905092915050565b5f805f606084860312156129e9576129e8612104565b5b5f6129f686828701612152565b935050602084013567ffffffffffffffff811115612a1757612a16612108565b5b612a2386828701612577565b925050604084013567ffffffffffffffff811115612a4457612a43612108565b5b612a5086828701612577565b9150509250925092565b5f805f8060808587031215612a7257612a71612104565b5b5f612a7f87828801612152565b9450506020612a9087828801612185565b9350506040612aa187828801612185565b925050606085013567ffffffffffffffff811115612ac257612ac1612108565b5b612ace87828801612615565b91505092959194509250565b612ae38161212b565b82525050565b5f602082019050612afc5f830184612ada565b92915050565b612b0b8161227f565b8114612b15575f80fd5b50565b5f81359050612b2681612b02565b92915050565b5f8060408385031215612b4257612b41612104565b5b5f612b4f85828601612152565b9250506020612b6085828601612b18565b9150509250929050565b5f60208284031215612b7f57612b7e612104565b5b5f612b8c84828501612152565b91505092915050565b5f8060408385031215612bab57612baa612104565b5b5f612bb885828601612152565b9250506020612bc985828601612152565b9150509250929050565b5f805f805f60a08688031215612bec57612beb612104565b5b5f612bf988828901612152565b9550506020612c0a88828901612152565b9450506040612c1b88828901612185565b9350506060612c2c88828901612185565b925050608086013567ffffffffffffffff811115612c4d57612c4c612108565b5b612c5988828901612615565b9150509295509295909350565b5f805f60608486031215612c7d57612c7c612104565b5b5f612c8a86828701612152565b9350506020612c9b86828701612185565b9250506040612cac86828701612185565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612cfa57607f821691505b602082108103612d0d57612d0c612cb6565b5b50919050565b5f604082019050612d265f830185612ada565b612d336020830184612ada565b9392505050565b5f604082019050612d4d5f8301856121d7565b612d5a60208301846121d7565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302612dea7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612daf565b612df48683612daf565b95508019841693508086168417925050509392505050565b5f819050919050565b5f612e2f612e2a612e2584612166565b612e0c565b612166565b9050919050565b5f819050919050565b612e4883612e15565b612e5c612e5482612e36565b848454612dbb565b825550505050565b5f90565b612e70612e64565b612e7b818484612e3f565b505050565b5b81811015612e9e57612e935f82612e68565b600181019050612e81565b5050565b601f821115612ee357612eb481612d8e565b612ebd84612da0565b81016020851015612ecc578190505b612ee0612ed885612da0565b830182612e80565b50505b505050565b5f82821c905092915050565b5f612f035f1984600802612ee8565b1980831691505092915050565b5f612f1b8383612ef4565b9150826002028217905092915050565b612f3482612460565b67ffffffffffffffff811115612f4d57612f4c6122ca565b5b612f578254612ce3565b612f62828285612ea2565b5f60209050601f831160018114612f93575f8415612f81578287015190505b612f8b8582612f10565b865550612ff2565b601f198416612fa186612d8e565b5f5b82811015612fc857848901518255600182019150602085019450602081019050612fa3565b86831015612fe55784890151612fe1601f891682612ef4565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f61303061302b61302684612ffa565b612e0c565b613003565b9050919050565b61304081613016565b82525050565b5f6020820190506130595f830184613037565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f6130838261305f565b61308d8185613069565b935061309d81856020860161247a565b6130a6816122ba565b840191505092915050565b5f60a0820190506130c45f830188612ada565b6130d16020830187612ada565b6130de60408301866121d7565b6130eb60608301856121d7565b81810360808301526130fd8184613079565b90509695505050505050565b5f815190506131178161222a565b92915050565b5f6020828403121561313257613131612104565b5b5f61313f84828501613109565b91505092915050565b5f60a08201905061315b5f830188612ada565b6131686020830187612ada565b818103604083015261317a8186612956565b9050818103606083015261318e8185612956565b905081810360808301526131a28184613079565b90509695505050505050565b5f6080820190506131c15f830187612ada565b6131ce60208301866121d7565b6131db60408301856121d7565b6131e860608301846121d7565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61322882612166565b915061323383612166565b925082820190508082111561324b5761324a6131f1565b5b92915050565b5f6040820190508181035f8301526132698185612956565b9050818103602083015261327d8184612956565b9050939250505056fea26469706673582212203d6ae18bf3dd0edd3ac02276b709ed0346c87e6f0388895b6fa6dabc2068faea64736f6c63430008190033