608060405260016009555f600a556001600d5f6101000a81548160ff0219169083151502179055506367033293600e5573733d127ca66320ea77f9223c578c91927da5ae54600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200008f575f80fd5b50336040518060400160405280600381526020017f41505500000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4150550000000000000000000000000000000000000000000000000000000000815250815f90816200010d919062000785565b5080600190816200011f919062000785565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000195575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200018c9190620008ac565b60405180910390fd5b620001a681620002ac60201b60201c565b5060405180606001604052806036815260200162004b4760369139600b9081620001d1919062000785565b5073cd970863cb05d353c68c1076a75e82c6e52c3205600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610309600c60146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550620002a6600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60149054906101000a90046bffffffffffffffffffffffff166200036f60201b60201c565b62000952565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f620003806200051860201b60201c565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff161115620003e85781816040517f6f483d09000000000000000000000000000000000000000000000000000000008152600401620003df92919062000927565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200045b575f6040517fb6d9900a000000000000000000000000000000000000000000000000000000008152600401620004529190620008ac565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff1681525060065f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b5f612710905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200059d57607f821691505b602082108103620005b357620005b262000558565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005da565b620006238683620005da565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200066d6200066762000661846200063b565b62000644565b6200063b565b9050919050565b5f819050919050565b62000688836200064d565b620006a0620006978262000674565b848454620005e6565b825550505050565b5f90565b620006b6620006a8565b620006c38184846200067d565b505050565b5b81811015620006ea57620006de5f82620006ac565b600181019050620006c9565b5050565b601f82111562000739576200070381620005b9565b6200070e84620005cb565b810160208510156200071e578190505b620007366200072d85620005cb565b830182620006c8565b50505b505050565b5f82821c905092915050565b5f6200075b5f19846008026200073e565b1980831691505092915050565b5f6200077583836200074a565b9150826002028217905092915050565b620007908262000521565b67ffffffffffffffff811115620007ac57620007ab6200052b565b5b620007b8825462000585565b620007c5828285620006ee565b5f60209050601f831160018114620007fb575f8415620007e6578287015190505b620007f2858262000768565b86555062000861565b601f1984166200080b86620005b9565b5f5b8281101562000834578489015182556001820191506020850194506020810190506200080d565b8683101562000854578489015162000850601f8916826200074a565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620008948262000869565b9050919050565b620008a68162000888565b82525050565b5f602082019050620008c15f8301846200089b565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b5f620008fe620008f8620008f284620008c7565b62000644565b6200063b565b9050919050565b6200091081620008de565b82525050565b62000921816200063b565b82525050565b5f6040820190506200093c5f83018562000905565b6200094b602083018462000916565b9392505050565b6141e780620009605f395ff3fe608060405260043610610219575f3560e01c8063771282f611610122578063a3a51bd5116100aa578063c87b56dd1161006e578063c87b56dd14610758578063d3cf00a314610794578063e985e9c5146107be578063f2fde38b146107fa578063fe575a871461082257610219565b8063a3a51bd51461068c578063a843c51f146106b6578063b5143715146106de578063b88d4fde14610706578063c672e0721461072e57610219565b806395d89b41116100f157806395d89b41146105ce57806397e23451146105f85780639f6d68b014610620578063a144819414610648578063a22cb4651461066457610219565b8063771282f6146105265780638a71bb2d146105505780638da5cb5b1461057a578063902d55a5146105a457610219565b806335df4293116101a557806349f2553a1161017457806349f2553a1461044857806359b07c43146104705780636352211e1461049857806370a08231146104d4578063715018a61461051057610219565b806335df4293146103b457806338e1ed82146103dc5780634033de3f146103f857806342842e0e1461042057610219565b806323b872dd116101ec57806323b872dd146102e757806324600fc31461030f57806326092b83146103255780632a42c2701461034f5780632a55205a1461037757610219565b806301ffc9a71461021d57806306fdde0314610259578063081812fc14610283578063095ea7b3146102bf575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190612d64565b61085e565b6040516102509190612da9565b60405180910390f35b348015610264575f80fd5b5061026d61086f565b60405161027a9190612e4c565b60405180910390f35b34801561028e575f80fd5b506102a960048036038101906102a49190612e9f565b6108fe565b6040516102b69190612f09565b60405180910390f35b3480156102ca575f80fd5b506102e560048036038101906102e09190612f4c565b610919565b005b3480156102f2575f80fd5b5061030d60048036038101906103089190612f8a565b61092f565b005b34801561031a575f80fd5b50610323610a2e565b005b348015610330575f80fd5b50610339610aca565b6040516103469190612da9565b60405180910390f35b34801561035a575f80fd5b506103756004803603810190610370919061311a565b610adc565b005b348015610382575f80fd5b5061039d60048036038101906103989190613161565b610c19565b6040516103ab9291906131ae565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906131d5565b610df5565b005b6103f660048036038101906103f19190613200565b610e3b565b005b348015610403575f80fd5b5061041e6004803603810190610419919061327a565b6110ed565b005b34801561042b575f80fd5b5061044660048036038101906104419190612f8a565b611111565b005b348015610453575f80fd5b5061046e60048036038101906104699190613355565b611130565b005b34801561047b575f80fd5b506104966004803603810190610491919061311a565b611185565b005b3480156104a3575f80fd5b506104be60048036038101906104b99190612e9f565b6112c0565b6040516104cb9190612f09565b60405180910390f35b3480156104df575f80fd5b506104fa60048036038101906104f591906131d5565b6112d1565b604051610507919061339c565b60405180910390f35b34801561051b575f80fd5b50610524611387565b005b348015610531575f80fd5b5061053a61139a565b604051610547919061339c565b60405180910390f35b34801561055b575f80fd5b506105646113a0565b60405161057191906133db565b60405180910390f35b348015610585575f80fd5b5061058e6113be565b60405161059b9190612f09565b60405180910390f35b3480156105af575f80fd5b506105b86113e6565b6040516105c5919061339c565b60405180910390f35b3480156105d9575f80fd5b506105e26113ec565b6040516105ef9190612e4c565b60405180910390f35b348015610603575f80fd5b5061061e60048036038101906106199190612e9f565b61147c565b005b34801561062b575f80fd5b506106466004803603810190610641919061341e565b61148e565b005b610662600480360381019061065d9190612f4c565b611562565b005b34801561066f575f80fd5b5061068a60048036038101906106859190613449565b611791565b005b348015610697575f80fd5b506106a06117a7565b6040516106ad9190612f09565b60405180910390f35b3480156106c1575f80fd5b506106dc60048036038101906106d791906131d5565b6117cc565b005b3480156106e9575f80fd5b5061070460048036038101906106ff91906131d5565b61184e565b005b348015610711575f80fd5b5061072c60048036038101906107279190613525565b61192b565b005b348015610739575f80fd5b50610742611948565b60405161074f9190612f09565b60405180910390f35b348015610763575f80fd5b5061077e60048036038101906107799190612e9f565b61196d565b60405161078b9190612e4c565b60405180910390f35b34801561079f575f80fd5b506107a86119c9565b6040516107b5919061339c565b60405180910390f35b3480156107c9575f80fd5b506107e460048036038101906107df91906135a5565b6119cf565b6040516107f19190612da9565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b91906131d5565b611a5d565b005b34801561082d575f80fd5b50610848600480360381019061084391906131d5565b611ae1565b6040516108559190612da9565b60405180910390f35b5f61086882611afe565b9050919050565b60605f805461087d90613610565b80601f01602080910402602001604051908101604052809291908181526020018280546108a990613610565b80156108f45780601f106108cb576101008083540402835291602001916108f4565b820191905f5260205f20905b8154815290600101906020018083116108d757829003601f168201915b5050505050905090565b5f61090882611b77565b5061091282611bfd565b9050919050565b61092b8282610926611c36565b611c3d565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361099f575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016109969190612f09565b60405180910390fd5b5f6109b283836109ad611c36565b611c4f565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a28578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610a1f93929190613640565b60405180910390fd5b50505050565b610a36611e5a565b5f4790505f8111610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a73906136bf565b60405180910390fd5b610a846113be565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610ac6573d5f803e3d5ffd5b5050565b600d5f9054906101000a900460ff1681565b610ae4611e5a565b5f5b8151811015610c155760105f838381518110610b0557610b046136dd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90613754565b60405180910390fd5b600160105f848481518110610bab57610baa6136dd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610c0d9061379f565b915050610ae6565b5050565b5f805f60075f8681526020019081526020015f206040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505f73ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1603610da25760066040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b5f610dab611ee1565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610dd791906137e6565b610de19190613854565b9050815f0151819350935050509250929050565b610dfd611e5a565b5f60095f815480929190610e109061379f565b919050559050610e208282611eea565b600a5f815480929190610e329061379f565b91905055505050565b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc906138ce565b60405180910390fd5b611e6182600954610ed691906138ec565b1115610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e90613969565b60405180910390fd5b600a821115610f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f52906139d1565b60405180910390fd5b60011515600d5f9054906101000a900460ff161515148015610f7e5750600e5442115b15610fdd5767016345785d8a000082610f9791906137e6565b3414610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf90613a5f565b60405180910390fd5b61102b565b8082610fe991906137e6565b341461102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190613ac7565b60405180910390fd5b5b5f5b828110156110825761104184600954611562565b60095f8154809291906110539061379f565b9190505550600a5f81548092919061106a9061379f565b9190505550808061107a9061379f565b91505061102d565b50600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3490811502906040515f60405180830381858888f193505050501580156110e7573d5f803e3d5ffd5b50505050565b6110f5611e5a565b80600d5f6101000a81548160ff02191690831515021790555050565b61112b83838360405180602001604052805f81525061192b565b505050565b611138611e5a565b7f17cfc37cad6b924826b9d7937bd3c77c11791633bd26bd0cf6927c5492da006b600b8260405161116a929190613b78565b60405180910390a180600b90816111819190613d38565b5050565b61118d611e5a565b5f5b81518110156112bc5760105f8383815181106111ae576111ad6136dd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661123b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123290613e51565b60405180910390fd5b5f60105f848481518110611252576112516136dd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806112b49061379f565b91505061118f565b5050565b5f6112ca82611b77565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611342575f6040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016113399190612f09565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61138f611e5a565b6113985f611f07565b565b600a5481565b600c60149054906101000a90046bffffffffffffffffffffffff1681565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611e6181565b6060600180546113fb90613610565b80601f016020809104026020016040519081016040528092919081815260200182805461142790613610565b80156114725780601f1061144957610100808354040283529160200191611472565b820191905f5260205f20905b81548152906001019060200180831161145557829003601f168201915b5050505050905090565b611484611e5a565b80600e8190555050565b611496611e5a565b6103e8816bffffffffffffffffffffffff1611156114e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e090613eb9565b60405180910390fd5b80600c60146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061155f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60149054906101000a90046bffffffffffffffffffffffff16611fca565b50565b60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156115ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e3906138ce565b60405180910390fd5b611e616009541115611633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162a90613969565b60405180910390fd5b60011515600d5f9054906101000a900460ff1615151480156116565750600e5442115b156116aa5767016345785d8a000034146116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c90613a5f565b60405180910390fd5b6116ed565b8034146116ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e390613ac7565b60405180910390fd5b5b5f60095f8154809291906117009061379f565b9190505590506117108382611eea565b600a5f8154809291906117229061379f565b9190505550600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3490811502906040515f60405180830381858888f1935050505015801561178b573d5f803e3d5ffd5b50505050565b6117a361179c611c36565b8383612165565b5050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117d4611e5a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183990613f21565b60405180910390fd5b61184b81611a5d565b50565b611856611e5a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb90613faf565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061192881600c60149054906101000a90046bffffffffffffffffffffffff16611fca565b50565b61193684848461092f565b611942848484846122ce565b50505050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60605f611978612480565b90505f8151116119965760405180602001604052805f8152506119c1565b806119a084612510565b6040516020016119b1929190614051565b6040516020818303038152906040525b915050919050565b600e5481565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b611a65611e5a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ad5575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611acc9190612f09565b60405180910390fd5b611ade81611f07565b50565b6010602052805f5260405f205f915054906101000a900460ff1681565b5f7f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b705750611b6f826125da565b5b9050919050565b5f80611b82836126bb565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bf457826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611beb919061339c565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b611c4a83838360016126f4565b505050565b5f80611c5a846126bb565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c9b57611c9a8184866128b3565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d2657611cda5f855f806126f4565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611da557600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b611e62611c36565b73ffffffffffffffffffffffffffffffffffffffff16611e806113be565b73ffffffffffffffffffffffffffffffffffffffff1614611edf57611ea3611c36565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611ed69190612f09565b60405180910390fd5b565b5f612710905090565b611f03828260405180602001604052805f815250612976565b5050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f611fd3611ee1565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff1611156120385781816040517f6f483d0900000000000000000000000000000000000000000000000000000000815260040161202f9291906140af565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120a8575f6040517fb6d9900a00000000000000000000000000000000000000000000000000000000815260040161209f9190612f09565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff1681525060065f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121d557816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016121cc9190612f09565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122c19190612da9565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b111561247a578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02612311611c36565b8685856040518563ffffffff1660e01b81526004016123339493929190614128565b6020604051808303815f875af192505050801561236e57506040513d601f19601f8201168201806040525081019061236b9190614186565b60015b6123ef573d805f811461239c576040519150601f19603f3d011682016040523d82523d5f602084013e6123a1565b606091505b505f8151036123e757836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016123de9190612f09565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461247857836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161246f9190612f09565b60405180910390fd5b505b50505050565b6060600b805461248f90613610565b80601f01602080910402602001604051908101604052809291908181526020018280546124bb90613610565b80156125065780601f106124dd57610100808354040283529160200191612506565b820191905f5260205f20905b8154815290600101906020018083116124e957829003601f168201915b5050505050905090565b60605f600161251e84612991565b0190505f8167ffffffffffffffff81111561253c5761253b612fde565b5b6040519080825280601f01601f19166020018201604052801561256e5781602001600182028036833780820191505090505b5090505f82602001820190505b6001156125cf578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816125c4576125c3613827565b5b0494505f850361257b575b819350505050919050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806126a457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806126b457506126b382612ae2565b5b9050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b808061272c57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561285e575f61273b84611b77565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127a557508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156127b857506127b681846119cf565b155b156127fa57826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016127f19190612f09565b60405180910390fd5b811561285c57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6128be838383612b4b565b612971575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361293257806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612929919061339c565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016129689291906131ae565b60405180910390fd5b505050565b6129808383612c0b565b61298c5f8484846122ce565b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106129ed577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816129e3576129e2613827565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612a2a576d04ee2d6d415b85acef81000000008381612a2057612a1f613827565b5b0492506020810190505b662386f26fc100008310612a5957662386f26fc100008381612a4f57612a4e613827565b5b0492506010810190505b6305f5e1008310612a82576305f5e1008381612a7857612a77613827565b5b0492506008810190505b6127108310612aa7576127108381612a9d57612a9c613827565b5b0492506004810190505b60648310612aca5760648381612ac057612abf613827565b5b0492506002810190505b600a8310612ad9576001810190505b80915050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c0257508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612bc35750612bc284846119cf565b5b80612c0157508273ffffffffffffffffffffffffffffffffffffffff16612be983611bfd565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c7b575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612c729190612f09565b60405180910390fd5b5f612c8783835f611c4f565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612cf9575f6040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401612cf09190612f09565b60405180910390fd5b505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d4381612d0f565b8114612d4d575f80fd5b50565b5f81359050612d5e81612d3a565b92915050565b5f60208284031215612d7957612d78612d07565b5b5f612d8684828501612d50565b91505092915050565b5f8115159050919050565b612da381612d8f565b82525050565b5f602082019050612dbc5f830184612d9a565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612df9578082015181840152602081019050612dde565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612e1e82612dc2565b612e288185612dcc565b9350612e38818560208601612ddc565b612e4181612e04565b840191505092915050565b5f6020820190508181035f830152612e648184612e14565b905092915050565b5f819050919050565b612e7e81612e6c565b8114612e88575f80fd5b50565b5f81359050612e9981612e75565b92915050565b5f60208284031215612eb457612eb3612d07565b5b5f612ec184828501612e8b565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ef382612eca565b9050919050565b612f0381612ee9565b82525050565b5f602082019050612f1c5f830184612efa565b92915050565b612f2b81612ee9565b8114612f35575f80fd5b50565b5f81359050612f4681612f22565b92915050565b5f8060408385031215612f6257612f61612d07565b5b5f612f6f85828601612f38565b9250506020612f8085828601612e8b565b9150509250929050565b5f805f60608486031215612fa157612fa0612d07565b5b5f612fae86828701612f38565b9350506020612fbf86828701612f38565b9250506040612fd086828701612e8b565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61301482612e04565b810181811067ffffffffffffffff8211171561303357613032612fde565b5b80604052505050565b5f613045612cfe565b9050613051828261300b565b919050565b5f67ffffffffffffffff8211156130705761306f612fde565b5b602082029050602081019050919050565b5f80fd5b5f61309761309284613056565b61303c565b905080838252602082019050602084028301858111156130ba576130b9613081565b5b835b818110156130e357806130cf8882612f38565b8452602084019350506020810190506130bc565b5050509392505050565b5f82601f83011261310157613100612fda565b5b8135613111848260208601613085565b91505092915050565b5f6020828403121561312f5761312e612d07565b5b5f82013567ffffffffffffffff81111561314c5761314b612d0b565b5b613158848285016130ed565b91505092915050565b5f806040838503121561317757613176612d07565b5b5f61318485828601612e8b565b925050602061319585828601612e8b565b9150509250929050565b6131a881612e6c565b82525050565b5f6040820190506131c15f830185612efa565b6131ce602083018461319f565b9392505050565b5f602082840312156131ea576131e9612d07565b5b5f6131f784828501612f38565b91505092915050565b5f805f6060848603121561321757613216612d07565b5b5f61322486828701612f38565b935050602061323586828701612e8b565b925050604061324686828701612e8b565b9150509250925092565b61325981612d8f565b8114613263575f80fd5b50565b5f8135905061327481613250565b92915050565b5f6020828403121561328f5761328e612d07565b5b5f61329c84828501613266565b91505092915050565b5f80fd5b5f67ffffffffffffffff8211156132c3576132c2612fde565b5b6132cc82612e04565b9050602081019050919050565b828183375f83830152505050565b5f6132f96132f4846132a9565b61303c565b905082815260208101848484011115613315576133146132a5565b5b6133208482856132d9565b509392505050565b5f82601f83011261333c5761333b612fda565b5b813561334c8482602086016132e7565b91505092915050565b5f6020828403121561336a57613369612d07565b5b5f82013567ffffffffffffffff81111561338757613386612d0b565b5b61339384828501613328565b91505092915050565b5f6020820190506133af5f83018461319f565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b6133d5816133b5565b82525050565b5f6020820190506133ee5f8301846133cc565b92915050565b6133fd816133b5565b8114613407575f80fd5b50565b5f81359050613418816133f4565b92915050565b5f6020828403121561343357613432612d07565b5b5f6134408482850161340a565b91505092915050565b5f806040838503121561345f5761345e612d07565b5b5f61346c85828601612f38565b925050602061347d85828601613266565b9150509250929050565b5f67ffffffffffffffff8211156134a1576134a0612fde565b5b6134aa82612e04565b9050602081019050919050565b5f6134c96134c484613487565b61303c565b9050828152602081018484840111156134e5576134e46132a5565b5b6134f08482856132d9565b509392505050565b5f82601f83011261350c5761350b612fda565b5b813561351c8482602086016134b7565b91505092915050565b5f805f806080858703121561353d5761353c612d07565b5b5f61354a87828801612f38565b945050602061355b87828801612f38565b935050604061356c87828801612e8b565b925050606085013567ffffffffffffffff81111561358d5761358c612d0b565b5b613599878288016134f8565b91505092959194509250565b5f80604083850312156135bb576135ba612d07565b5b5f6135c885828601612f38565b92505060206135d985828601612f38565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061362757607f821691505b60208210810361363a576136396135e3565b5b50919050565b5f6060820190506136535f830186612efa565b613660602083018561319f565b61366d6040830184612efa565b949350505050565b7f4e6f2066756e647320617661696c61626c6500000000000000000000000000005f82015250565b5f6136a9601283612dcc565b91506136b482613675565b602082019050919050565b5f6020820190508181035f8301526136d68161369d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f7573657220616c726561647920626c61636b6c697374656400000000000000005f82015250565b5f61373e601883612dcc565b91506137498261370a565b602082019050919050565b5f6020820190508181035f83015261376b81613732565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6137a982612e6c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137db576137da613772565b5b600182019050919050565b5f6137f082612e6c565b91506137fb83612e6c565b925082820261380981612e6c565b915082820484148315176138205761381f613772565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61385e82612e6c565b915061386983612e6c565b92508261387957613878613827565b5b828204905092915050565b7f526563697069656e74206973206261636b6c69737465640000000000000000005f82015250565b5f6138b8601783612dcc565b91506138c382613884565b602082019050919050565b5f6020820190508181035f8301526138e5816138ac565b9050919050565b5f6138f682612e6c565b915061390183612e6c565b925082820190508082111561391957613918613772565b5b92915050565b7f4578636565647320746f74616c20737570706c790000000000000000000000005f82015250565b5f613953601483612dcc565b915061395e8261391f565b602082019050919050565b5f6020820190508181035f83015261398081613947565b9050919050565b7f45786365656473206261746368206d696e7400000000000000000000000000005f82015250565b5f6139bb601283612dcc565b91506139c682613987565b602082019050919050565b5f6020820190508181035f8301526139e8816139af565b9050919050565b7f7075626c6963206d696e74206275742062616c616e6365206d6973736d6174635f8201527f6800000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a49602183612dcc565b9150613a54826139ef565b604082019050919050565b5f6020820190508181035f830152613a7681613a3d565b9050919050565b7f76616c206d69736d6174636800000000000000000000000000000000000000005f82015250565b5f613ab1600c83612dcc565b9150613abc82613a7d565b602082019050919050565b5f6020820190508181035f830152613ade81613aa5565b9050919050565b5f819050815f5260205f209050919050565b5f8154613b0381613610565b613b0d8186612dcc565b9450600182165f8114613b275760018114613b3d57613b6f565b60ff198316865281151560200286019350613b6f565b613b4685613ae5565b5f5b83811015613b6757815481890152600182019150602081019050613b48565b808801955050505b50505092915050565b5f6040820190508181035f830152613b908185613af7565b90508181036020830152613ba48184612e14565b90509392505050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302613bf77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613bbc565b613c018683613bbc565b95508019841693508086168417925050509392505050565b5f819050919050565b5f613c3c613c37613c3284612e6c565b613c19565b612e6c565b9050919050565b5f819050919050565b613c5583613c22565b613c69613c6182613c43565b848454613bc8565b825550505050565b5f90565b613c7d613c71565b613c88818484613c4c565b505050565b5b81811015613cab57613ca05f82613c75565b600181019050613c8e565b5050565b601f821115613cf057613cc181613ae5565b613cca84613bad565b81016020851015613cd9578190505b613ced613ce585613bad565b830182613c8d565b50505b505050565b5f82821c905092915050565b5f613d105f1984600802613cf5565b1980831691505092915050565b5f613d288383613d01565b9150826002028217905092915050565b613d4182612dc2565b67ffffffffffffffff811115613d5a57613d59612fde565b5b613d648254613610565b613d6f828285613caf565b5f60209050601f831160018114613da0575f8415613d8e578287015190505b613d988582613d1d565b865550613dff565b601f198416613dae86613ae5565b5f5b82811015613dd557848901518255600182019150602085019450602081019050613db0565b86831015613df25784890151613dee601f891682613d01565b8355505b6001600288020188555050505b505050505050565b7f7573657220616c72656164792077686974656c697374656400000000000000005f82015250565b5f613e3b601883612dcc565b9150613e4682613e07565b602082019050919050565b5f6020820190508181035f830152613e6881613e2f565b9050919050565b7f4d617820726f79616c74792069732031302500000000000000000000000000005f82015250565b5f613ea3601283612dcc565b9150613eae82613e6f565b602082019050919050565b5f6020820190508181035f830152613ed081613e97565b9050919050565b7f4e6577206f776e657220697320746865207a65726f20616464726573730000005f82015250565b5f613f0b601d83612dcc565b9150613f1682613ed7565b602082019050919050565b5f6020820190508181035f830152613f3881613eff565b9050919050565b7f4e657720726f79616c7469657320726563656976657220697320746865207a655f8201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b5f613f99602a83612dcc565b9150613fa482613f3f565b604082019050919050565b5f6020820190508181035f830152613fc681613f8d565b9050919050565b5f81905092915050565b5f613fe182612dc2565b613feb8185613fcd565b9350613ffb818560208601612ddc565b80840191505092915050565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000005f82015250565b5f61403b600583613fcd565b915061404682614007565b600582019050919050565b5f61405c8285613fd7565b91506140688284613fd7565b91506140738261402f565b91508190509392505050565b5f61409961409461408f846133b5565b613c19565b612e6c565b9050919050565b6140a98161407f565b82525050565b5f6040820190506140c25f8301856140a0565b6140cf602083018461319f565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6140fa826140d6565b61410481856140e0565b9350614114818560208601612ddc565b61411d81612e04565b840191505092915050565b5f60808201905061413b5f830187612efa565b6141486020830186612efa565b614155604083018561319f565b818103606083015261416781846140f0565b905095945050505050565b5f8151905061418081612d3a565b92915050565b5f6020828403121561419b5761419a612d07565b5b5f6141a884828501614172565b9150509291505056fea26469706673582212207f19e1aa9121ada3b69360a852f4e2e58456b55570594c53dd523ef5137b316d64736f6c63430008140033697066733a2f2f516d664b43725072786b6b6b5a4d36486f4267417a4e683938565162754b6338355a6764797045326d6f376466672f