6080604052600160075560016008556040518060400160405280600381526020017f646964000000000000000000000000000000000000000000000000000000000081525060099081610052919061032b565b5034801561005e575f80fd5b506040518060400160405280600581526020017f4d794e46540000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4d4d4d0000000000000000000000000000000000000000000000000000000000815250815f90816100d9919061032b565b5080600190816100e9919061032b565b5050506103fa565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061016c57607f821691505b60208210810361017f5761017e610128565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101e17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826101a6565b6101eb86836101a6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61022f61022a61022584610203565b61020c565b610203565b9050919050565b5f819050919050565b61024883610215565b61025c61025482610236565b8484546101b2565b825550505050565b5f90565b610270610264565b61027b81848461023f565b505050565b5b8181101561029e576102935f82610268565b600181019050610281565b5050565b601f8211156102e3576102b481610185565b6102bd84610197565b810160208510156102cc578190505b6102e06102d885610197565b830182610280565b50505b505050565b5f82821c905092915050565b5f6103035f19846008026102e8565b1980831691505092915050565b5f61031b83836102f4565b9150826002028217905092915050565b610334826100f1565b67ffffffffffffffff81111561034d5761034c6100fb565b5b6103578254610155565b6103628282856102a2565b5f60209050601f831160018114610393575f8415610381578287015190505b61038b8582610310565b8655506103f2565b601f1984166103a186610185565b5f5b828110156103c8578489015182556001820191506020850194506020810190506103a3565b868310156103e557848901516103e1601f8916826102f4565b8355505b6001600288020188555050505b505050505050565b613b4b806104075f395ff3fe608060405234801561000f575f80fd5b5060043610610140575f3560e01c8063a22cb465116100b6578063c87b56dd1161007a578063c87b56dd14610380578063caa0f92a146103b0578063cc73c6f3146103ce578063cf760e77146103fe578063e29272921461042e578063e985e9c51461044c57610140565b8063a22cb465146102cc578063b4596e59146102e8578063b54df73514610318578063b88d4fde14610348578063baa78cd11461036457610140565b80632fdcfbd2116101085780632fdcfbd2146101fa57806342842e0e146102165780636352211e1461023257806370a082311461026257806395d89b411461029257806399071190146102b057610140565b806301ffc9a71461014457806306fdde0314610174578063081812fc14610192578063095ea7b3146101c257806323b872dd146101de575b5f80fd5b61015e6004803603810190610159919061282c565b61047c565b60405161016b9190612871565b60405180910390f35b61017c6104dc565b60405161018991906128fa565b60405180910390f35b6101ac60048036038101906101a7919061294d565b61056b565b6040516101b991906129b7565b60405180910390f35b6101dc60048036038101906101d791906129fa565b610586565b005b6101f860048036038101906101f39190612a38565b61059c565b005b610214600480360381019061020f9190612a38565b61069b565b005b610230600480360381019061022b9190612a38565b6108f0565b005b61024c6004803603810190610247919061294d565b61090f565b60405161025991906129b7565b60405180910390f35b61027c60048036038101906102779190612a88565b610920565b6040516102899190612ac2565b60405180910390f35b61029a6109d6565b6040516102a791906128fa565b60405180910390f35b6102ca60048036038101906102c59190612c07565b610a66565b005b6102e660048036038101906102e19190612cb9565b610c0f565b005b61030260048036038101906102fd9190612cf7565b610c25565b60405161030f9190612e41565b60405180910390f35b610332600480360381019061032d9190612a88565b610d17565b60405161033f9190612f18565b60405180910390f35b610362600480360381019061035d9190612fd6565b610daa565b005b61037e60048036038101906103799190613056565b610dc7565b005b61039a6004803603810190610395919061294d565b61101c565b6040516103a791906128fa565b60405180910390f35b6103b8611127565b6040516103c59190612ac2565b60405180910390f35b6103e860048036038101906103e39190612a88565b611130565b6040516103f59190612e41565b60405180910390f35b6104186004803603810190610413919061294d565b6112fd565b60405161042591906128fa565b60405180910390f35b61043661139e565b60405161044391906128fa565b60405180910390f35b610466600480360381019061046191906130f2565b61142e565b6040516104739190612871565b60405180910390f35b5f634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104d557506104d4826114bc565b5b9050919050565b60605f80546104ea9061315d565b80601f01602080910402602001604051908101604052809291908181526020018280546105169061315d565b80156105615780601f1061053857610100808354040283529160200191610561565b820191905f5260205f20905b81548152906001019060200180831161054457829003601f168201915b5050505050905090565b5f6105758261159d565b5061057f82611623565b9050919050565b610598828261059361165c565b611663565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361060c575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161060391906129b7565b60405180910390fd5b5f61061f838361061a61165c565b611675565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610695578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161068c9392919061318d565b60405180910390fd5b50505050565b6106a6838383611880565b5f6001600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506106f491906131ef565b90505f5b8181116108885782600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20828154811061074f5761074e613222565b5b905f5260205f2001540361087557600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082815481106107ac576107ab613222565b5b905f5260205f200154600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20828154811061080457610803613222565b5b905f5260205f200181905550600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080548061085d5761085c61324f565b5b600190038181905f5260205f20015f90559055610888565b80806108809061327c565b9150506106f8565b50600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082908060018154018082558091505060019003905f5260205f20015f909190919091505550505050565b61090a83838360405180602001604052805f815250610daa565b505050565b5f6109198261159d565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610991575f6040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161098891906129b7565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060600180546109e59061315d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a119061315d565b8015610a5c5780601f10610a3357610100808354040283529160200191610a5c565b820191905f5260205f20905b815481529060010190602001808311610a3f57829003601f168201915b5050505050905090565b5f6007549050610a7684826119e8565b610a808183611a05565b600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f90919091909150555f4290505f6301e1338082610af691906132c3565b90505f610b188773ffffffffffffffffffffffffffffffffffffffff16611a5f565b610b2185611a8c565b610b2c600854611a8c565b88610b3686611a8c565b604051602001610b4a959493929190613458565b60405160208183030381529060405290508060099081610b6a91906136ad565b5080600b5f8681526020019081526020015f209081610b8991906136ad565b50600c86604051610b9a919061377c565b908152602001604051809103902081908060018154018082558091505060019003905f5260205f20015f909190919091509081610bd791906136ad565b5060075f815480929190610bea9061327c565b919050555060085f815480929190610c019061327c565b919050555050505050505050565b610c21610c1a61165c565b8383611b56565b5050565b6060600c82604051610c37919061377c565b9081526020016040518091039020805480602002602001604051908101604052809291908181526020015f905b82821015610d0c578382905f5260205f20018054610c819061315d565b80601f0160208091040260200160405190810160405280929190818152602001828054610cad9061315d565b8015610cf85780601f10610ccf57610100808354040283529160200191610cf8565b820191905f5260205f20905b815481529060010190602001808311610cdb57829003601f168201915b505050505081526020019060010190610c64565b505050509050919050565b6060600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020018280548015610d9e57602002820191905f5260205f20905b815481526020019060010190808311610d8a575b50505050509050919050565b610db584848461059c565b610dc184848484611cbf565b50505050565b60405180602001604052805f815250600b5f8581526020019081526020015f209081610df391906136ad565b505f600c83604051610e05919061377c565b908152602001604051809103902090505f5b8180549050811015610f215782604051602001610e34919061377c565b60405160208183030381529060405280519060200120828281548110610e5d57610e5c613222565b5b905f5260205f2001604051602001610e759190613812565b6040516020818303038152906040528051906020012003610f14578160018380549050610ea291906131ef565b81548110610eb357610eb2613222565b5b905f5260205f2001828281548110610ece57610ecd613222565b5b905f5260205f20019081610ee2919061384f565b5081805480610ef457610ef361324f565b5b600190038181905f5260205f20015f610f0d919061276e565b9055610f21565b8080600101915050610e17565b505f600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f5b81805490508110156110135785828281548110610f8457610f83613222565b5b905f5260205f20015403611006578160018380549050610fa491906131ef565b81548110610fb557610fb4613222565b5b905f5260205f200154828281548110610fd157610fd0613222565b5b905f5260205f20018190555081805480610fee57610fed61324f565b5b600190038181905f5260205f20015f90559055611013565b8080600101915050610f64565b50505050505050565b60606110278261159d565b505f60065f8481526020019081526020015f2080546110459061315d565b80601f01602080910402602001604051908101604052809291908181526020018280546110719061315d565b80156110bc5780601f10611093576101008083540402835291602001916110bc565b820191905f5260205f20905b81548152906001019060200180831161109f57829003601f168201915b505050505090505f6110cc611e71565b90505f8151036110e0578192505050611122565b5f825111156111145780826040516020016110fc929190613934565b60405160208183030381529060405292505050611122565b61111d84611e87565b925050505b919050565b5f600754905090565b60605f61113c83610d17565b90505f815167ffffffffffffffff81111561115a57611159612ae3565b5b60405190808252806020026020018201604052801561118d57816020015b60608152602001906001900390816111785790505b5090505f805b835181101561124e578573ffffffffffffffffffffffffffffffffffffffff166111d68583815181106111c9576111c8613222565b5b602002602001015161090f565b73ffffffffffffffffffffffffffffffffffffffff16036112415761121484828151811061120757611206613222565b5b60200260200101516112fd565b83838151811061122757611226613222565b5b6020026020010181905250818061123d9061327c565b9250505b8080600101915050611193565b505f8167ffffffffffffffff81111561126a57611269612ae3565b5b60405190808252806020026020018201604052801561129d57816020015b60608152602001906001900390816112885790505b5090505f5b828110156112f0578381815181106112bd576112bc613222565b5b60200260200101518282815181106112d8576112d7613222565b5b602002602001018190525080806001019150506112a2565b5080945050505050919050565b6060600b5f8381526020019081526020015f20805461131b9061315d565b80601f01602080910402602001604051908101604052809291908181526020018280546113479061315d565b80156113925780601f1061136957610100808354040283529160200191611392565b820191905f5260205f20905b81548152906001019060200180831161137557829003601f168201915b50505050509050919050565b6060600980546113ad9061315d565b80601f01602080910402602001604051908101604052809291908181526020018280546113d99061315d565b80156114245780601f106113fb57610100808354040283529160200191611424565b820191905f5260205f20905b81548152906001019060200180831161140757829003601f168201915b5050505050905090565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061158657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611596575061159582611eed565b5b9050919050565b5f806115a883611f56565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361161a57826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016116119190612ac2565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b6116708383836001611f8f565b505050565b5f8061168084611f56565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116c1576116c081848661214e565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461174c576117005f855f80611f8f565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146117cb57600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f0575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016118e791906129b7565b60405180910390fd5b5f6118fc83835f611675565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361196e57816040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016119659190612ac2565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146119e2578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016119d99392919061318d565b60405180910390fd5b50505050565b611a01828260405180602001604052805f815250612211565b5050565b8060065f8481526020019081526020015f209081611a2391906136ad565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce782604051611a539190612ac2565b60405180910390a15050565b6060611a858273ffffffffffffffffffffffffffffffffffffffff16601460ff1661222c565b9050919050565b60605f6001611a9a8461246a565b0190505f8167ffffffffffffffff811115611ab857611ab7612ae3565b5b6040519080825280601f01601f191660200182016040528015611aea5781602001600182028036833780820191505090505b5090505f82602001820190505b600115611b4b578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611b4057611b3f613957565b5b0494505f8503611af7575b819350505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bc657816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401611bbd91906129b7565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611cb29190612871565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115611e6b578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02611d0261165c565b8685856040518563ffffffff1660e01b8152600401611d2494939291906139d6565b6020604051808303815f875af1925050508015611d5f57506040513d601f19601f82011682018060405250810190611d5c9190613a34565b60015b611de0573d805f8114611d8d576040519150601f19603f3d011682016040523d82523d5f602084013e611d92565b606091505b505f815103611dd857836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611dcf91906129b7565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611e6957836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611e6091906129b7565b60405180910390fd5b505b50505050565b606060405180602001604052805f815250905090565b6060611e928261159d565b505f611e9c611e71565b90505f815111611eba5760405180602001604052805f815250611ee5565b80611ec484611a8c565b604051602001611ed5929190613934565b6040516020818303038152906040525b915050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080611fc757505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120f9575f611fd68461159d565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561204057508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156120535750612051818461142e565b155b1561209557826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161208c91906129b7565b60405180910390fd5b81156120f757838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6121598383836125bb565b61220c575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121cd57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016121c49190612ac2565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401612203929190613a5f565b60405180910390fd5b505050565b61221b838361267b565b6122275f848484611cbf565b505050565b60605f8390505f60028460026122429190613a86565b61224c91906132c3565b67ffffffffffffffff81111561226557612264612ae3565b5b6040519080825280601f01601f1916602001820160405280156122975781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106122ce576122cd613222565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061233157612330613222565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f600185600261236f9190613a86565b61237991906132c3565b90505b6001811115612418577f3031323334353637383961626364656600000000000000000000000000000000600f8416601081106123bb576123ba613222565b5b1a60f81b8282815181106123d2576123d1613222565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600483901c92508061241190613ac7565b905061237c565b505f821461245f5784846040517fe22e27eb000000000000000000000000000000000000000000000000000000008152600401612456929190613aee565b60405180910390fd5b809250505092915050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106124c6577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816124bc576124bb613957565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612503576d04ee2d6d415b85acef810000000083816124f9576124f8613957565b5b0492506020810190505b662386f26fc10000831061253257662386f26fc10000838161252857612527613957565b5b0492506010810190505b6305f5e100831061255b576305f5e100838161255157612550613957565b5b0492506008810190505b612710831061258057612710838161257657612575613957565b5b0492506004810190505b606483106125a3576064838161259957612598613957565b5b0492506002810190505b600a83106125b2576001810190505b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561267257508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806126335750612632848461142e565b5b8061267157508273ffffffffffffffffffffffffffffffffffffffff1661265983611623565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126eb575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016126e291906129b7565b60405180910390fd5b5f6126f783835f611675565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612769575f6040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260040161276091906129b7565b60405180910390fd5b505050565b50805461277a9061315d565b5f825580601f1061278b57506127a8565b601f0160209004905f5260205f20908101906127a791906127ab565b5b50565b5b808211156127c2575f815f9055506001016127ac565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61280b816127d7565b8114612815575f80fd5b50565b5f8135905061282681612802565b92915050565b5f60208284031215612841576128406127cf565b5b5f61284e84828501612818565b91505092915050565b5f8115159050919050565b61286b81612857565b82525050565b5f6020820190506128845f830184612862565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6128cc8261288a565b6128d68185612894565b93506128e68185602086016128a4565b6128ef816128b2565b840191505092915050565b5f6020820190508181035f83015261291281846128c2565b905092915050565b5f819050919050565b61292c8161291a565b8114612936575f80fd5b50565b5f8135905061294781612923565b92915050565b5f60208284031215612962576129616127cf565b5b5f61296f84828501612939565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129a182612978565b9050919050565b6129b181612997565b82525050565b5f6020820190506129ca5f8301846129a8565b92915050565b6129d981612997565b81146129e3575f80fd5b50565b5f813590506129f4816129d0565b92915050565b5f8060408385031215612a1057612a0f6127cf565b5b5f612a1d858286016129e6565b9250506020612a2e85828601612939565b9150509250929050565b5f805f60608486031215612a4f57612a4e6127cf565b5b5f612a5c868287016129e6565b9350506020612a6d868287016129e6565b9250506040612a7e86828701612939565b9150509250925092565b5f60208284031215612a9d57612a9c6127cf565b5b5f612aaa848285016129e6565b91505092915050565b612abc8161291a565b82525050565b5f602082019050612ad55f830184612ab3565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b19826128b2565b810181811067ffffffffffffffff82111715612b3857612b37612ae3565b5b80604052505050565b5f612b4a6127c6565b9050612b568282612b10565b919050565b5f67ffffffffffffffff821115612b7557612b74612ae3565b5b612b7e826128b2565b9050602081019050919050565b828183375f83830152505050565b5f612bab612ba684612b5b565b612b41565b905082815260208101848484011115612bc757612bc6612adf565b5b612bd2848285612b8b565b509392505050565b5f82601f830112612bee57612bed612adb565b5b8135612bfe848260208601612b99565b91505092915050565b5f805f60608486031215612c1e57612c1d6127cf565b5b5f612c2b868287016129e6565b935050602084013567ffffffffffffffff811115612c4c57612c4b6127d3565b5b612c5886828701612bda565b925050604084013567ffffffffffffffff811115612c7957612c786127d3565b5b612c8586828701612bda565b9150509250925092565b612c9881612857565b8114612ca2575f80fd5b50565b5f81359050612cb381612c8f565b92915050565b5f8060408385031215612ccf57612cce6127cf565b5b5f612cdc858286016129e6565b9250506020612ced85828601612ca5565b9150509250929050565b5f60208284031215612d0c57612d0b6127cf565b5b5f82013567ffffffffffffffff811115612d2957612d286127d3565b5b612d3584828501612bda565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f612d818261288a565b612d8b8185612d67565b9350612d9b8185602086016128a4565b612da4816128b2565b840191505092915050565b5f612dba8383612d77565b905092915050565b5f602082019050919050565b5f612dd882612d3e565b612de28185612d48565b935083602082028501612df485612d58565b805f5b85811015612e2f5784840389528151612e108582612daf565b9450612e1b83612dc2565b925060208a01995050600181019050612df7565b50829750879550505050505092915050565b5f6020820190508181035f830152612e598184612dce565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612e938161291a565b82525050565b5f612ea48383612e8a565b60208301905092915050565b5f602082019050919050565b5f612ec682612e61565b612ed08185612e6b565b9350612edb83612e7b565b805f5b83811015612f0b578151612ef28882612e99565b9750612efd83612eb0565b925050600181019050612ede565b5085935050505092915050565b5f6020820190508181035f830152612f308184612ebc565b905092915050565b5f67ffffffffffffffff821115612f5257612f51612ae3565b5b612f5b826128b2565b9050602081019050919050565b5f612f7a612f7584612f38565b612b41565b905082815260208101848484011115612f9657612f95612adf565b5b612fa1848285612b8b565b509392505050565b5f82601f830112612fbd57612fbc612adb565b5b8135612fcd848260208601612f68565b91505092915050565b5f805f8060808587031215612fee57612fed6127cf565b5b5f612ffb878288016129e6565b945050602061300c878288016129e6565b935050604061301d87828801612939565b925050606085013567ffffffffffffffff81111561303e5761303d6127d3565b5b61304a87828801612fa9565b91505092959194509250565b5f805f806080858703121561306e5761306d6127cf565b5b5f61307b878288016129e6565b945050602061308c87828801612939565b935050604085013567ffffffffffffffff8111156130ad576130ac6127d3565b5b6130b987828801612bda565b925050606085013567ffffffffffffffff8111156130da576130d96127d3565b5b6130e687828801612bda565b91505092959194509250565b5f8060408385031215613108576131076127cf565b5b5f613115858286016129e6565b9250506020613126858286016129e6565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061317457607f821691505b60208210810361318757613186613130565b5b50919050565b5f6060820190506131a05f8301866129a8565b6131ad6020830185612ab3565b6131ba60408301846129a8565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131f98261291a565b91506132048361291a565b925082820390508181111561321c5761321b6131c2565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f6132868261291a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132b8576132b76131c2565b5b600182019050919050565b5f6132cd8261291a565b91506132d88361291a565b92508282019050808211156132f0576132ef6131c2565b5b92915050565b5f81905092915050565b7f64696400000000000000000000000000000000000000000000000000000000005f82015250565b5f6133346003836132f6565b915061333f82613300565b600382019050919050565b7f3a000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61337e6001836132f6565b91506133898261334a565b600182019050919050565b7f6b68616e730000000000000000000000000000000000000000000000000000005f82015250565b5f6133c86005836132f6565b91506133d382613394565b600582019050919050565b5f6133e88261288a565b6133f281856132f6565b93506134028185602086016128a4565b80840191505092915050565b7f74727565000000000000000000000000000000000000000000000000000000005f82015250565b5f6134426004836132f6565b915061344d8261340e565b600482019050919050565b5f61346282613328565b915061346d82613372565b9150613478826133bc565b915061348382613372565b915061348f82886133de565b915061349a82613372565b91506134a682876133de565b91506134b182613372565b91506134bd82866133de565b91506134c882613372565b91506134d482856133de565b91506134df82613372565b91506134eb82846133de565b91506134f682613372565b915061350182613436565b91508190509695505050505050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261356c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613531565b6135768683613531565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6135b16135ac6135a78461291a565b61358e565b61291a565b9050919050565b5f819050919050565b6135ca83613597565b6135de6135d6826135b8565b84845461353d565b825550505050565b5f90565b6135f26135e6565b6135fd8184846135c1565b505050565b5b81811015613620576136155f826135ea565b600181019050613603565b5050565b601f8211156136655761363681613510565b61363f84613522565b8101602085101561364e578190505b61366261365a85613522565b830182613602565b50505b505050565b5f82821c905092915050565b5f6136855f198460080261366a565b1980831691505092915050565b5f61369d8383613676565b9150826002028217905092915050565b6136b68261288a565b67ffffffffffffffff8111156136cf576136ce612ae3565b5b6136d9825461315d565b6136e4828285613624565b5f60209050601f831160018114613715575f8415613703578287015190505b61370d8582613692565b865550613774565b601f19841661372386613510565b5f5b8281101561374a57848901518255600182019150602085019450602081019050613725565b868310156137675784890151613763601f891682613676565b8355505b6001600288020188555050505b505050505050565b5f61378782846133de565b915081905092915050565b5f815461379e8161315d565b6137a881866132f6565b9450600182165f81146137c257600181146137d757613809565b60ff1983168652811515820286019350613809565b6137e085613510565b5f5b83811015613801578154818901526001820191506020810190506137e2565b838801955050505b50505092915050565b5f61381d8284613792565b915081905092915050565b5f815490506138368161315d565b9050919050565b5f819050815f5260205f209050919050565b81810361385d575050613932565b61386682613828565b67ffffffffffffffff81111561387f5761387e612ae3565b5b613889825461315d565b613894828285613624565b5f601f8311600181146138c1575f84156138af578287015490505b6138b98582613692565b86555061392b565b601f1984166138cf8761383d565b96506138da86613510565b5f5b82811015613901578489015482556001820191506001850194506020810190506138dc565b8683101561391e578489015461391a601f891682613676565b8355505b6001600288020188555050505b5050505050505b565b5f61393f82856133de565b915061394b82846133de565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f6139a882613984565b6139b2818561398e565b93506139c28185602086016128a4565b6139cb816128b2565b840191505092915050565b5f6080820190506139e95f8301876129a8565b6139f660208301866129a8565b613a036040830185612ab3565b8181036060830152613a15818461399e565b905095945050505050565b5f81519050613a2e81612802565b92915050565b5f60208284031215613a4957613a486127cf565b5b5f613a5684828501613a20565b91505092915050565b5f604082019050613a725f8301856129a8565b613a7f6020830184612ab3565b9392505050565b5f613a908261291a565b9150613a9b8361291a565b9250828202613aa98161291a565b91508282048414831517613ac057613abf6131c2565b5b5092915050565b5f613ad18261291a565b91505f8203613ae357613ae26131c2565b5b600182039050919050565b5f604082019050613b015f830185612ab3565b613b0e6020830184612ab3565b939250505056fea26469706673582212204ed59ff56093a3cf677a9e8fdeea42f8f82abae691eb8ffd6031fe27d827d92764736f6c634300081a0033