60806040526032600d5560405180602001604052805f815250600e90816100269190610566565b506040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600f908161006b9190610566565b50348015610077575f80fd5b506040516147633803806147638339818101604052810190610099919061077f565b33848481600290816100ab9190610566565b5080600390816100bb9190610566565b506100ca61017860201b60201c565b5f8190555050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610141575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101389190610876565b60405180910390fd5b6101508161018060201b60201c565b50600160098190555080600c8190555061016f8261024360201b60201c565b5050505061088f565b5f6001905090565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61025161026460201b60201c565b80601090816102609190610566565b5050565b6102726102fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1661029661030460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146102fb576102bf6102fd60201b60201c565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016102f29190610876565b60405180910390fd5b565b5f33905090565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806103a757607f821691505b6020821081036103ba576103b9610363565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261041c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103e1565b61042686836103e1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61046a6104656104608461043e565b610447565b61043e565b9050919050565b5f819050919050565b61048383610450565b61049761048f82610471565b8484546103ed565b825550505050565b5f90565b6104ab61049f565b6104b681848461047a565b505050565b5b818110156104d9576104ce5f826104a3565b6001810190506104bc565b5050565b601f82111561051e576104ef816103c0565b6104f8846103d2565b81016020851015610507578190505b61051b610513856103d2565b8301826104bb565b50505b505050565b5f82821c905092915050565b5f61053e5f1984600802610523565b1980831691505092915050565b5f610556838361052f565b9150826002028217905092915050565b61056f8261032c565b67ffffffffffffffff81111561058857610587610336565b5b6105928254610390565b61059d8282856104dd565b5f60209050601f8311600181146105ce575f84156105bc578287015190505b6105c6858261054b565b86555061062d565b601f1984166105dc866103c0565b5f5b82811015610603578489015182556001820191506020850194506020810190506105de565b86831015610620578489015161061c601f89168261052f565b8355505b6001600288020188555050505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b6106678261064e565b810181811067ffffffffffffffff8211171561068657610685610336565b5b80604052505050565b5f610698610635565b90506106a4828261065e565b919050565b5f67ffffffffffffffff8211156106c3576106c2610336565b5b6106cc8261064e565b9050602081019050919050565b8281835e5f83830152505050565b5f6106f96106f4846106a9565b61068f565b9050828152602081018484840111156107155761071461064a565b5b6107208482856106d9565b509392505050565b5f82601f83011261073c5761073b610646565b5b815161074c8482602086016106e7565b91505092915050565b61075e8161043e565b8114610768575f80fd5b50565b5f8151905061077981610755565b92915050565b5f805f80608085870312156107975761079661063e565b5b5f85015167ffffffffffffffff8111156107b4576107b3610642565b5b6107c087828801610728565b945050602085015167ffffffffffffffff8111156107e1576107e0610642565b5b6107ed87828801610728565b935050604085015167ffffffffffffffff81111561080e5761080d610642565b5b61081a87828801610728565b925050606061082b8782880161076b565b91505092959194509250565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61086082610837565b9050919050565b61087081610856565b82525050565b5f6020820190506108895f830184610867565b92915050565b613ec78061089c5f395ff3fe6080604052600436106101e2575f3560e01c8063715018a6116101015780639ed3edf011610094578063c23dc68f11610063578063c23dc68f146106a5578063c87b56dd146106e1578063e985e9c51461071d578063f2fde38b14610759576101e2565b80639ed3edf0146105fb578063a22cb46514610625578063a437a6771461064d578063b88d4fde14610689576101e2565b80638da5cb5b116100d05780638da5cb5b1461052e57806395d89b411461055857806399a2557a146105825780639ca17601146105be576101e2565b8063715018a61461048c578063750521f5146104a25780637ec4a659146104ca5780638462151c146104f2576101e2565b806340d097c3116101795780635300a306116101485780635300a306146103b05780635bbb2177146103d85780636352211e1461041457806370a0823114610450576101e2565b806340d097c31461033a57806342842e0e14610356578063476343ee146103725780634f4fa5a614610388576101e2565b806316ba10e0116101b557806316ba10e0146102a457806318160ddd146102cc57806323b872dd146102f6578063316c29d314610312576101e2565b806301ffc9a7146101e657806306fdde0314610222578063081812fc1461024c578063095ea7b314610288575b5f80fd5b3480156101f1575f80fd5b5061020c60048036038101906102079190612a4d565b610781565b6040516102199190612a92565b60405180910390f35b34801561022d575f80fd5b50610236610812565b6040516102439190612b1b565b60405180910390f35b348015610257575f80fd5b50610272600480360381019061026d9190612b6e565b6108a2565b60405161027f9190612bd8565b60405180910390f35b6102a2600480360381019061029d9190612c1b565b6108fb565b005b3480156102af575f80fd5b506102ca60048036038101906102c59190612d85565b61090b565b005b3480156102d7575f80fd5b506102e0610926565b6040516102ed9190612ddb565b60405180910390f35b610310600480360381019061030b9190612df4565b61093b565b005b34801561031d575f80fd5b5061033860048036038101906103339190612c1b565b610be6565b005b610354600480360381019061034f9190612e44565b610c42565b005b610370600480360381019061036b9190612df4565b610cb2565b005b34801561037d575f80fd5b50610386610cd1565b005b348015610393575f80fd5b506103ae60048036038101906103a99190612e44565b610cf3565b005b3480156103bb575f80fd5b506103d660048036038101906103d19190612b6e565b610d07565b005b3480156103e3575f80fd5b506103fe60048036038101906103f99190612ecc565b610d2b565b60405161040b919061306f565b60405180910390f35b34801561041f575f80fd5b5061043a60048036038101906104359190612b6e565b610d87565b6040516104479190612bd8565b60405180910390f35b34801561045b575f80fd5b5061047660048036038101906104719190612e44565b610d98565b6040516104839190612ddb565b60405180910390f35b348015610497575f80fd5b506104a0610e2c565b005b3480156104ad575f80fd5b506104c860048036038101906104c39190612d85565b610e3f565b005b3480156104d5575f80fd5b506104f060048036038101906104eb9190612d85565b610e5a565b005b3480156104fd575f80fd5b5061051860048036038101906105139190612e44565b610e75565b6040516105259190613146565b60405180910390f35b348015610539575f80fd5b50610542610eaf565b60405161054f9190612bd8565b60405180910390f35b348015610563575f80fd5b5061056c610ed7565b6040516105799190612b1b565b60405180910390f35b34801561058d575f80fd5b506105a860048036038101906105a39190613166565b610f67565b6040516105b59190613146565b60405180910390f35b3480156105c9575f80fd5b506105e460048036038101906105df9190612e44565b610f7d565b6040516105f29291906131b6565b60405180910390f35b348015610606575f80fd5b5061060f610fbc565b60405161061c9190612ddb565b60405180910390f35b348015610630575f80fd5b5061064b60048036038101906106469190613207565b610fc2565b005b348015610658575f80fd5b50610673600480360381019061066e9190612b6e565b6110c8565b6040516106809190612bd8565b60405180910390f35b6106a3600480360381019061069e91906132e3565b611103565b005b3480156106b0575f80fd5b506106cb60048036038101906106c69190612b6e565b611154565b6040516106d891906133b6565b60405180910390f35b3480156106ec575f80fd5b5061070760048036038101906107029190612b6e565b6111aa565b6040516107149190612b1b565b60405180910390f35b348015610728575f80fd5b50610743600480360381019061073e91906133cf565b611251565b6040516107509190612a92565b60405180910390f35b348015610764575f80fd5b5061077f600480360381019061077a9190612e44565b6112df565b005b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107db57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061080b5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060600280546108219061343a565b80601f016020809104026020016040519081016040528092919081815260200182805461084d9061343a565b80156108985780601f1061086f57610100808354040283529160200191610898565b820191905f5260205f20905b81548152906001019060200180831161087b57829003601f168201915b5050505050905090565b5f6108ac82611363565b6108c1576108c063cf4700e460e01b6113d5565b5b60065f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610907828260016113dd565b5050565b610913611507565b80600f90816109229190613607565b5050565b5f61092f61158e565b6001545f540303905090565b5f61094582611596565b905073ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161693508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146109ba576109b963a114810060e01b6113d5565b5b5f806109c584611678565b915091506109db81876109d661169b565b6116a2565b610a06576109f0866109eb61169b565b611251565b610a0557610a046359c896be60e01b6113d5565b5b5b610a1386868660016116e5565b8015610a1d575f82555b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815460010191905081905550610ae585610ac18888876116eb565b7c020000000000000000000000000000000000000000000000000000000017611712565b60045f8681526020019081526020015f20819055505f7c0200000000000000000000000000000000000000000000000000000000841603610b61575f6001850190505f60045f8381526020019081526020015f205403610b5f575f548114610b5e578360045f8381526020019081526020015f20819055505b5b505b5f73ffffffffffffffffffffffffffffffffffffffff8673ffffffffffffffffffffffffffffffffffffffff161690508481887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a45f8103610bd057610bcf63ea553b3460e01b6113d5565b5b610bdd878787600161173c565b50505050505050565b610bee611507565b806064811115610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a90613720565b60405180910390fd5b610c3d8383611742565b505050565b600c54341015610c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7e90613788565b60405180910390fd5b610c8f6119ad565b610c9e81600c54600d546119fc565b610ca733611a4e565b610caf611a5c565b50565b610ccc83838360405180602001604052805f815250611103565b505050565b610cd9611507565b610ce16119ad565b610ce9611a66565b610cf1611a5c565b565b610cfb611507565b610d0481611b5f565b50565b610d0f611507565b610d176119ad565b610d2081611e57565b610d28611a5c565b50565b6060805f84849050905060405191508082528060051b90508060208301016040525b5f8114610d7c575f6020820391508186013590505f610d6b82611154565b905080836020860101525050610d4d565b819250505092915050565b5f610d9182611596565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ddd57610ddc638f4eb60460e01b6113d5565b5b67ffffffffffffffff60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054169050919050565b610e34611507565b610e3d5f611eda565b565b610e47611507565b8060109081610e569190613607565b5050565b610e62611507565b80600e9081610e719190613607565b5050565b60605f610e8061158e565b90505f610e8b611f9d565b90506060818314610ea457610ea1858484611fa5565b90505b809350505050919050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610ee69061343a565b80601f0160208091040260200160405190810160405280929190818152602001828054610f129061343a565b8015610f5d5780601f10610f3457610100808354040283529160200191610f5d565b820191905f5260205f20905b815481529060010190602001808311610f4057829003601f168201915b5050505050905090565b6060610f74848484611fa5565b90509392505050565b600a602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b600c5481565b8060075f610fce61169b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661107761169b565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516110bc9190612a92565b60405180910390a35050565b600b81815481106110d7575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61110e84848461093b565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1461114e57611138848484846120c1565b61114d5761114c63d1a57ed660e01b6113d5565b5b5b50505050565b61115c61299c565b61116461158e565b82106111a457611172611f9d565b8210156111a3575b611183826121eb565b611193578160019003915061117a565b61119c82612208565b90506111a5565b5b5b919050565b60606111b582611363565b6111f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111eb90613816565b60405180910390fd5b5f6111fd612231565b90505f81511161121b5760405180602001604052805f815250611249565b80611225846122c1565b600f604051602001611239939291906138ee565b6040516020818303038152906040525b915050919050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b6112e7611507565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611357575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161134e9190612bd8565b60405180910390fd5b61136081611eda565b50565b5f8161136d61158e565b116113d0575f548210156113cf575f5b5f60045f8581526020019081526020015f2054915081036113a957826113a29061394b565b925061137d565b5f7c01000000000000000000000000000000000000000000000000000000008216149150505b5b919050565b805f5260045ffd5b5f6113e783610d87565b905081801561142957508073ffffffffffffffffffffffffffffffffffffffff1661141061169b565b73ffffffffffffffffffffffffffffffffffffffff1614155b156114555761143f8161143a61169b565b611251565b6114545761145363cfb3b94260e01b6113d5565b5b5b8360065f8581526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b61150f61238b565b73ffffffffffffffffffffffffffffffffffffffff1661152d610eaf565b73ffffffffffffffffffffffffffffffffffffffff161461158c5761155061238b565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016115839190612bd8565b60405180910390fd5b565b5f6001905090565b5f816115a061158e565b116116625760045f8381526020019081526020015f205490505f810361163a575f5482106115d9576115d863df2d9b4260e01b6113d5565b5b5b60045f836001900393508381526020019081526020015f205490505f810315611635575f7c0100000000000000000000000000000000000000000000000000000000821603156116735761163463df2d9b4260e01b6113d5565b5b6115da565b5f7c010000000000000000000000000000000000000000000000000000000082160315611673575b61167263df2d9b4260e01b6113d5565b5b919050565b5f805f60065f8581526020019081526020015f2090508092508254915050915091565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b5f8060e883901c905060e8611701868684612392565b62ffffff16901b9150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a7906139bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036118f057600b82908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f81dc4b8810f0b640036bf8ec65d47a81daccc2c8c41ec8911172d2729189e2f0826040516118e79190612ddb565b60405180910390a25b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff16815260200182815250600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050505050565b6002600954036119f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e990613a24565b60405180910390fd5b6002600981905550565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a49575f611a3b84848461239a565b9050611a4784826124ad565b505b505050565b611a5981600161259b565b50565b6001600981905550565b5f4790505f8111611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa390613a8c565b60405180910390fd5b5f611ab5610eaf565b73ffffffffffffffffffffffffffffffffffffffff1682604051611ad890613ad7565b5f6040518083038185875af1925050503d805f8114611b12576040519150601f19603f3d011682016040523d82523d5f602084013e611b17565b606091505b5050905080611b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5290613b35565b60405180910390fd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2290613b9d565b60405180910390fd5b600a5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8082015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f905550505f5b600b80549050811015611e10578173ffffffffffffffffffffffffffffffffffffffff16600b8281548110611cd157611cd0613bbb565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611e0357600b6001600b80549050611d289190613be8565b81548110611d3957611d38613bbb565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b8281548110611d7557611d74613bbb565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b805480611dcc57611dcb613c1b565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611e10565b8080600101915050611c99565b508073ffffffffffffffffffffffffffffffffffffffff167f2d9d1c05b983e18eab847f6a577f1fd7634abf6925c2ddbe33946764406a107e60405160405180910390a250565b5f8111611e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9090613c92565b60405180910390fd5b80600c819055507f6bbc57480a46553fa4d156ce702beef5f3ad66303b0ed1a5d4cb44966c6584c381604051611ecf9190612ddb565b60405180910390a150565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8054905090565b6060818310611fbf57611fbe6332c1995a60e01b6113d5565b5b611fc761158e565b831015611fd957611fd661158e565b92505b5f611fe2611f9d565b9050808310611fef578092505b60605f611ffb87610d98565b90505f858710905080820291505f82146120b357818787031161201e5786860391505b60405192506001820160051b83016040525f61203988611154565b90505f816040015161204c57815f015190505b5f5b6120578a612208565b925060408301515f811461206d575f9250612093565b83511561207957835192505b8b831860601b612092576001820191508a8260051b8801525b5b5060018a019950888a14806120a757508481145b1561204e578086525050505b829450505050509392505050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a026120e661169b565b8786866040518563ffffffff1660e01b81526004016121089493929190613d02565b6020604051808303815f875af192505050801561214357506040513d601f19601f820116820180604052508101906121409190613d60565b60015b612198573d805f8114612171576040519150601f19603f3d011682016040523d82523d5f602084013e612176565b606091505b505f8151036121905761218f63d1a57ed660e01b6113d5565b5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b5f8060045f8481526020019081526020015f205414159050919050565b61221061299c565b61222a60045f8481526020019081526020015f20546125b8565b9050919050565b6060601080546122409061343a565b80601f016020809104026020016040519081016040528092919081815260200182805461226c9061343a565b80156122b75780601f1061228e576101008083540402835291602001916122b7565b820191905f5260205f20905b81548152906001019060200180831161229a57829003601f168201915b5050505050905090565b60605f60016122cf8461266c565b0190505f8167ffffffffffffffff8111156122ed576122ec612c61565b5b6040519080825280601f01601f19166020018201604052801561231f5781602001600182028036833780820191505090505b5090505f82602001820190505b600115612380578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161237557612374613d8b565b5b0494505f850361232c575b819350505050919050565b5f33905090565b5f9392505050565b5f8073ffffffffffffffffffffffffffffffffffffffff16600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461248b576064600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101548461247a9190613db8565b6124849190613df9565b90506124a6565b606482846124999190613db8565b6124a39190613df9565b90505b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156124e857505f81115b15612597575f8273ffffffffffffffffffffffffffffffffffffffff168260405161251290613ad7565b5f6040518083038185875af1925050503d805f811461254c576040519150601f19603f3d011682016040523d82523d5f602084013e612551565b606091505b5050905080612595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258c90613e73565b60405180910390fd5b505b5050565b6125b4828260405180602001604052805f8152506127bd565b5050565b6125c061299c565b81815f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060a082901c816020019067ffffffffffffffff16908167ffffffffffffffff16815250505f7c01000000000000000000000000000000000000000000000000000000008316141581604001901515908115158152505060e882901c816060019062ffffff16908162ffffff1681525050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106126c8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816126be576126bd613d8b565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612705576d04ee2d6d415b85acef810000000083816126fb576126fa613d8b565b5b0492506020810190505b662386f26fc10000831061273457662386f26fc10000838161272a57612729613d8b565b5b0492506010810190505b6305f5e100831061275d576305f5e100838161275357612752613d8b565b5b0492506008810190505b612710831061278257612710838161277857612777613d8b565b5b0492506004810190505b606483106127a5576064838161279b5761279a613d8b565b5b0492506002810190505b600a83106127b4576001810190505b80915050919050565b6127c7838361283c565b5f8373ffffffffffffffffffffffffffffffffffffffff163b14612837575f805490505f83820390505b6128035f8683806001019450866120c1565b6128185761281763d1a57ed660e01b6113d5565b5b8181106127f157815f5414612834576128335f60e01b6113d5565b5b50505b505050565b5f805490505f82036128595761285863b562e8dd60e01b6113d5565b5b6128655f8483856116e5565b612883836128745f865f6116eb565b61287d8561298d565b17611712565b60045f8381526020019081526020015f2081905550600160406001901b17820260055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505f73ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161690505f810361293457612933632e07630060e01b6113d5565b5b5f83830190505f8390505b80835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a481816001019150810361293f57815f819055505050506129885f84838561173c565b505050565b5f6001821460e11b9050919050565b60405180608001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f67ffffffffffffffff1681526020015f151581526020015f62ffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612a2c816129f8565b8114612a36575f80fd5b50565b5f81359050612a4781612a23565b92915050565b5f60208284031215612a6257612a616129f0565b5b5f612a6f84828501612a39565b91505092915050565b5f8115159050919050565b612a8c81612a78565b82525050565b5f602082019050612aa55f830184612a83565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612aed82612aab565b612af78185612ab5565b9350612b07818560208601612ac5565b612b1081612ad3565b840191505092915050565b5f6020820190508181035f830152612b338184612ae3565b905092915050565b5f819050919050565b612b4d81612b3b565b8114612b57575f80fd5b50565b5f81359050612b6881612b44565b92915050565b5f60208284031215612b8357612b826129f0565b5b5f612b9084828501612b5a565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612bc282612b99565b9050919050565b612bd281612bb8565b82525050565b5f602082019050612beb5f830184612bc9565b92915050565b612bfa81612bb8565b8114612c04575f80fd5b50565b5f81359050612c1581612bf1565b92915050565b5f8060408385031215612c3157612c306129f0565b5b5f612c3e85828601612c07565b9250506020612c4f85828601612b5a565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612c9782612ad3565b810181811067ffffffffffffffff82111715612cb657612cb5612c61565b5b80604052505050565b5f612cc86129e7565b9050612cd48282612c8e565b919050565b5f67ffffffffffffffff821115612cf357612cf2612c61565b5b612cfc82612ad3565b9050602081019050919050565b828183375f83830152505050565b5f612d29612d2484612cd9565b612cbf565b905082815260208101848484011115612d4557612d44612c5d565b5b612d50848285612d09565b509392505050565b5f82601f830112612d6c57612d6b612c59565b5b8135612d7c848260208601612d17565b91505092915050565b5f60208284031215612d9a57612d996129f0565b5b5f82013567ffffffffffffffff811115612db757612db66129f4565b5b612dc384828501612d58565b91505092915050565b612dd581612b3b565b82525050565b5f602082019050612dee5f830184612dcc565b92915050565b5f805f60608486031215612e0b57612e0a6129f0565b5b5f612e1886828701612c07565b9350506020612e2986828701612c07565b9250506040612e3a86828701612b5a565b9150509250925092565b5f60208284031215612e5957612e586129f0565b5b5f612e6684828501612c07565b91505092915050565b5f80fd5b5f80fd5b5f8083601f840112612e8c57612e8b612c59565b5b8235905067ffffffffffffffff811115612ea957612ea8612e6f565b5b602083019150836020820283011115612ec557612ec4612e73565b5b9250929050565b5f8060208385031215612ee257612ee16129f0565b5b5f83013567ffffffffffffffff811115612eff57612efe6129f4565b5b612f0b85828601612e77565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612f4981612bb8565b82525050565b5f67ffffffffffffffff82169050919050565b612f6b81612f4f565b82525050565b612f7a81612a78565b82525050565b5f62ffffff82169050919050565b612f9781612f80565b82525050565b608082015f820151612fb15f850182612f40565b506020820151612fc46020850182612f62565b506040820151612fd76040850182612f71565b506060820151612fea6060850182612f8e565b50505050565b5f612ffb8383612f9d565b60808301905092915050565b5f602082019050919050565b5f61301d82612f17565b6130278185612f21565b935061303283612f31565b805f5b838110156130625781516130498882612ff0565b975061305483613007565b925050600181019050613035565b5085935050505092915050565b5f6020820190508181035f8301526130878184613013565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6130c181612b3b565b82525050565b5f6130d283836130b8565b60208301905092915050565b5f602082019050919050565b5f6130f48261308f565b6130fe8185613099565b9350613109836130a9565b805f5b8381101561313957815161312088826130c7565b975061312b836130de565b92505060018101905061310c565b5085935050505092915050565b5f6020820190508181035f83015261315e81846130ea565b905092915050565b5f805f6060848603121561317d5761317c6129f0565b5b5f61318a86828701612c07565b935050602061319b86828701612b5a565b92505060406131ac86828701612b5a565b9150509250925092565b5f6040820190506131c95f830185612bc9565b6131d66020830184612dcc565b9392505050565b6131e681612a78565b81146131f0575f80fd5b50565b5f81359050613201816131dd565b92915050565b5f806040838503121561321d5761321c6129f0565b5b5f61322a85828601612c07565b925050602061323b858286016131f3565b9150509250929050565b5f67ffffffffffffffff82111561325f5761325e612c61565b5b61326882612ad3565b9050602081019050919050565b5f61328761328284613245565b612cbf565b9050828152602081018484840111156132a3576132a2612c5d565b5b6132ae848285612d09565b509392505050565b5f82601f8301126132ca576132c9612c59565b5b81356132da848260208601613275565b91505092915050565b5f805f80608085870312156132fb576132fa6129f0565b5b5f61330887828801612c07565b945050602061331987828801612c07565b935050604061332a87828801612b5a565b925050606085013567ffffffffffffffff81111561334b5761334a6129f4565b5b613357878288016132b6565b91505092959194509250565b608082015f8201516133775f850182612f40565b50602082015161338a6020850182612f62565b50604082015161339d6040850182612f71565b5060608201516133b06060850182612f8e565b50505050565b5f6080820190506133c95f830184613363565b92915050565b5f80604083850312156133e5576133e46129f0565b5b5f6133f285828601612c07565b925050602061340385828601612c07565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061345157607f821691505b6020821081036134645761346361340d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026134c67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261348b565b6134d0868361348b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61350b61350661350184612b3b565b6134e8565b612b3b565b9050919050565b5f819050919050565b613524836134f1565b61353861353082613512565b848454613497565b825550505050565b5f90565b61354c613540565b61355781848461351b565b505050565b5b8181101561357a5761356f5f82613544565b60018101905061355d565b5050565b601f8211156135bf576135908161346a565b6135998461347c565b810160208510156135a8578190505b6135bc6135b48561347c565b83018261355c565b50505b505050565b5f82821c905092915050565b5f6135df5f19846008026135c4565b1980831691505092915050565b5f6135f783836135d0565b9150826002028217905092915050565b61361082612aab565b67ffffffffffffffff81111561362957613628612c61565b5b613633825461343a565b61363e82828561357e565b5f60209050601f83116001811461366f575f841561365d578287015190505b61366785826135ec565b8655506136ce565b601f19841661367d8661346a565b5f5b828110156136a45784890151825560018201915060208501945060208101905061367f565b868310156136c157848901516136bd601f8916826135d0565b8355505b6001600288020188555050505b505050505050565b7f50657263656e746167652063616e6e6f742065786365656420313030250000005f82015250565b5f61370a601d83612ab5565b9150613715826136d6565b602082019050919050565b5f6020820190508181035f830152613737816136fe565b9050919050565b7f496e636f7272656374207472616e73616374696f6e20666565000000000000005f82015250565b5f613772601983612ab5565b915061377d8261373e565b602082019050919050565b5f6020820190508181035f83015261379f81613766565b9050919050565b7f455243373231204d657461646174613a2055524920717565727920666f72206e5f8201527f6f6e6578697374656e7420746f6b656e00000000000000000000000000000000602082015250565b5f613800603083612ab5565b915061380b826137a6565b604082019050919050565b5f6020820190508181035f83015261382d816137f4565b9050919050565b5f81905092915050565b5f61384882612aab565b6138528185613834565b9350613862818560208601612ac5565b80840191505092915050565b5f815461387a8161343a565b6138848186613834565b9450600182165f811461389e57600181146138b3576138e5565b60ff19831686528115158202860193506138e5565b6138bc8561346a565b5f5b838110156138dd578154818901526001820191506020810190506138be565b838801955050505b50505092915050565b5f6138f9828661383e565b9150613905828561383e565b9150613911828461386e565b9150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61395582612b3b565b91505f82036139675761396661391e565b5b600182039050919050565b7f496e76616c69642077616c6c65742061646472657373000000000000000000005f82015250565b5f6139a6601683612ab5565b91506139b182613972565b602082019050919050565b5f6020820190508181035f8301526139d38161399a565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f613a0e601f83612ab5565b9150613a19826139da565b602082019050919050565b5f6020820190508181035f830152613a3b81613a02565b9050919050565b7f4e6f2066756e647320746f2077697468647261770000000000000000000000005f82015250565b5f613a76601483612ab5565b9150613a8182613a42565b602082019050919050565b5f6020820190508181035f830152613aa381613a6a565b9050919050565b5f81905092915050565b50565b5f613ac25f83613aaa565b9150613acd82613ab4565b5f82019050919050565b5f613ae182613ab7565b9150819050919050565b7f5769746864726177616c206661696c65640000000000000000000000000000005f82015250565b5f613b1f601183612ab5565b9150613b2a82613aeb565b602082019050919050565b5f6020820190508181035f830152613b4c81613b13565b9050919050565b7f526566657272616c20646f6573206e6f742065786973740000000000000000005f82015250565b5f613b87601783612ab5565b9150613b9282613b53565b602082019050919050565b5f6020820190508181035f830152613bb481613b7b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613bf282612b3b565b9150613bfd83612b3b565b9250828203905081811115613c1557613c1461391e565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f466565206d7573742062652067726561746572207468616e20300000000000005f82015250565b5f613c7c601a83612ab5565b9150613c8782613c48565b602082019050919050565b5f6020820190508181035f830152613ca981613c70565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f613cd482613cb0565b613cde8185613cba565b9350613cee818560208601612ac5565b613cf781612ad3565b840191505092915050565b5f608082019050613d155f830187612bc9565b613d226020830186612bc9565b613d2f6040830185612dcc565b8181036060830152613d418184613cca565b905095945050505050565b5f81519050613d5a81612a23565b92915050565b5f60208284031215613d7557613d746129f0565b5b5f613d8284828501613d4c565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613dc282612b3b565b9150613dcd83612b3b565b9250828202613ddb81612b3b565b91508282048414831517613df257613df161391e565b5b5092915050565b5f613e0382612b3b565b9150613e0e83612b3b565b925082613e1e57613e1d613d8b565b5b828204905092915050565b7f526566657272616c20666565207472616e73666572206661696c6564000000005f82015250565b5f613e5d601c83612ab5565b9150613e6882613e29565b602082019050919050565b5f6020820190508181035f830152613e8a81613e51565b905091905056fea2646970667358221220f2e9dd169feee69f41c3a4bbdeb691418515510d7162e29270692f6a21a9582864736f6c63430008190033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000025db9356ba000000000000000000000000000000000000000000000000000000000000000000e53657270656e74204d656475736100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064d454455534100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044697066733a2f2f6261666b7265696837746332716d6f6f706470647461337669376b71647a74636d666b336f66707936613571346b7a61316a666a6173666d6b6b6c336d00000000000000000000000000000000000000000000000000000000