60a060405234801561000f575f5ffd5b50604051613d14380380613d148339818101604052810190610031919061095e565b33898981600390816100439190610c7d565b5080600490816100539190610c7d565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100c6575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100bd9190610d5b565b60405180910390fd5b6100d58161042360201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013b90610df4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101a990610e82565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021790610f10565b60405180910390fd5b84600b8190555061023783886104e660201b60201c565b85600690816102469190610c7d565b5083600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60085f6101000a81548160ff0219169083151502179055505f600a5f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505080600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167faf367c7d20ce5b2ab6da56afd0c9c39b00ba995263c60292a3e1ee3781fd488560016040516103ca9190610f48565b60405180910390a28073ffffffffffffffffffffffffffffffffffffffff167f210690abd7fd6cdbb8f2beb202b2a253d58d7a0813b2175c4172c14c0c1af6dc60405160405180910390a250505050505050505061101e565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610556575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161054d9190610d5b565b60405180910390fd5b6105675f838361056b60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105bb578060025f8282546105af9190610f8e565b92505081905550610689565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610644578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161063b93929190610fd0565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106d0578060025f828254039250508190555061071a565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107779190611005565b60405180910390a3505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6107e38261079d565b810181811067ffffffffffffffff82111715610802576108016107ad565b5b80604052505050565b5f610814610784565b905061082082826107da565b919050565b5f67ffffffffffffffff82111561083f5761083e6107ad565b5b6108488261079d565b9050602081019050919050565b8281835e5f83830152505050565b5f61087561087084610825565b61080b565b90508281526020810184848401111561089157610890610799565b5b61089c848285610855565b509392505050565b5f82601f8301126108b8576108b7610795565b5b81516108c8848260208601610863565b91505092915050565b5f819050919050565b6108e3816108d1565b81146108ed575f5ffd5b50565b5f815190506108fe816108da565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61092d82610904565b9050919050565b61093d81610923565b8114610947575f5ffd5b50565b5f8151905061095881610934565b92915050565b5f5f5f5f5f5f5f5f5f6101208a8c03121561097c5761097b61078d565b5b5f8a015167ffffffffffffffff81111561099957610998610791565b5b6109a58c828d016108a4565b99505060208a015167ffffffffffffffff8111156109c6576109c5610791565b5b6109d28c828d016108a4565b98505060406109e38c828d016108f0565b97505060608a015167ffffffffffffffff811115610a0457610a03610791565b5b610a108c828d016108a4565b9650506080610a218c828d016108f0565b95505060a0610a328c828d0161094a565b94505060c0610a438c828d0161094a565b93505060e0610a548c828d0161094a565b925050610100610a668c828d0161094a565b9150509295985092959850929598565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610ac457607f821691505b602082108103610ad757610ad6610a80565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610b397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610afe565b610b438683610afe565b95508019841693508086168417925050509392505050565b5f819050919050565b5f610b7e610b79610b74846108d1565b610b5b565b6108d1565b9050919050565b5f819050919050565b610b9783610b64565b610bab610ba382610b85565b848454610b0a565b825550505050565b5f5f905090565b610bc2610bb3565b610bcd818484610b8e565b505050565b5b81811015610bf057610be55f82610bba565b600181019050610bd3565b5050565b601f821115610c3557610c0681610add565b610c0f84610aef565b81016020851015610c1e578190505b610c32610c2a85610aef565b830182610bd2565b50505b505050565b5f82821c905092915050565b5f610c555f1984600802610c3a565b1980831691505092915050565b5f610c6d8383610c46565b9150826002028217905092915050565b610c8682610a76565b67ffffffffffffffff811115610c9f57610c9e6107ad565b5b610ca98254610aad565b610cb4828285610bf4565b5f60209050601f831160018114610ce5575f8415610cd3578287015190505b610cdd8582610c62565b865550610d44565b601f198416610cf386610add565b5f5b82811015610d1a57848901518255600182019150602085019450602081019050610cf5565b86831015610d375784890151610d33601f891682610c46565b8355505b6001600288020188555050505b505050505050565b610d5581610923565b82525050565b5f602082019050610d6e5f830184610d4c565b92915050565b5f82825260208201905092915050565b7f46656520636f6c6c6563746f722063616e6e6f74206265207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f610dde602483610d74565b9150610de982610d84565b604082019050919050565b5f6020820190508181035f830152610e0b81610dd2565b9050919050565b7f5745544820616464726573732063616e6e6f74206265207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f610e6c602383610d74565b9150610e7782610e12565b604082019050919050565b5f6020820190508181035f830152610e9981610e60565b9050919050565b7f4d61726b6574706c61636520616464726573732063616e6e6f74206265207a655f8201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b5f610efa602a83610d74565b9150610f0582610ea0565b604082019050919050565b5f6020820190508181035f830152610f2781610eee565b9050919050565b5f8115159050919050565b610f4281610f2e565b82525050565b5f602082019050610f5b5f830184610f39565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f98826108d1565b9150610fa3836108d1565b9250828201905080821115610fbb57610fba610f61565b5b92915050565b610fca816108d1565b82525050565b5f606082019050610fe35f830186610d4c565b610ff06020830185610fc1565b610ffd6040830184610fc1565b949350505050565b5f6020820190506110185f830184610fc1565b92915050565b608051612cd761103d5f395f818161101901526116610152612cd75ff3fe608060405234801561000f575f5ffd5b5060043610610204575f3560e01c806379cc679011610118578063ad5c4648116100ab578063dc7ccfed1161007a578063dc7ccfed146105b6578063dd62ed3e146105d2578063e0df5b6f14610602578063eedb03bc1461061e578063f2fde38b1461063a57610204565b8063ad5c46481461052e578063c415b95c1461054c578063c894e1e51461056a578063d2c7d4f41461058657610204565b8063a42dce80116100e7578063a42dce80146104a6578063a5c42ef1146104c2578063a9059cbb146104e0578063abc8c7af1461051057610204565b806379cc679014610430578063856bb47f1461044c5780638da5cb5b1461046a57806395d89b411461048857610204565b8063351bf5181161019b5780636895000c1161016a5780636895000c146103a057806370a08231146103be578063715018a6146103ee57806373751ad4146103f857806373ad6c2d1461041457610204565b8063351bf518146103185780633af32abf146103365780633c130d901461036657806342966c681461038457610204565b806318160ddd116101d757806318160ddd1461029057806323b872dd146102ae578063313ce567146102de5780633234a17c146102fc57610204565b806302b969441461020857806306fdde0314610226578063095ea7b3146102445780630c42428414610274575b5f5ffd5b610210610656565b60405161021d9190611da6565b60405180910390f35b61022e610668565b60405161023b9190611e2f565b60405180910390f35b61025e60048036038101906102599190611eed565b6106f8565b60405161026b9190611da6565b60405180910390f35b61028e60048036038101906102899190611f55565b61071a565b005b610298610836565b6040516102a59190611fa2565b60405180910390f35b6102c860048036038101906102c39190611fbb565b61083f565b6040516102d59190611da6565b60405180910390f35b6102e661086d565b6040516102f39190612026565b60405180910390f35b6103166004803603810190610311919061203f565b610875565b005b6103206108d0565b60405161032d9190611fa2565b60405180910390f35b610350600480360381019061034b919061206a565b6108d6565b60405161035d9190611da6565b60405180910390f35b61036e6108f3565b60405161037b9190611e2f565b60405180910390f35b61039e60048036038101906103999190612095565b610983565b005b6103a8610997565b6040516103b59190611da6565b60405180910390f35b6103d860048036038101906103d3919061206a565b6109a9565b6040516103e59190611fa2565b60405180910390f35b6103f66109ee565b005b610412600480360381019061040d9190612121565b610a01565b005b61042e6004803603810190610429919061206a565b610b77565b005b61044a60048036038101906104459190611eed565b610dfb565b005b610454610e1b565b6040516104619190611fa2565b60405180910390f35b610472610e21565b60405161047f919061218d565b60405180910390f35b610490610e49565b60405161049d9190611e2f565b60405180910390f35b6104c060048036038101906104bb919061206a565b610ed9565b005b6104ca610fca565b6040516104d79190611fa2565b60405180910390f35b6104fa60048036038101906104f59190611eed565b610fd0565b6040516105079190611da6565b60405180910390f35b610518610ff2565b604051610525919061218d565b60405180910390f35b610536611017565b6040516105439190612201565b60405180910390f35b61055461103b565b604051610561919061218d565b60405180910390f35b610584600480360381019061057f9190612095565b611061565b005b6105a0600480360381019061059b919061221a565b6110ef565b6040516105ad9190611da6565b60405180910390f35b6105d060048036038101906105cb919061203f565b611193565b005b6105ec60048036038101906105e7919061221a565b6111ee565b6040516105f99190611fa2565b60405180910390f35b61061c60048036038101906106179190612380565b611270565b005b61063860048036038101906106339190612095565b6112c2565b005b610654600480360381019061064f919061206a565b61130b565b005b60085f9054906101000a900460ff1681565b606060038054610677906123f4565b80601f01602080910402602001604051908101604052809291908181526020018280546106a3906123f4565b80156106ee5780601f106106c5576101008083540402835291602001916106ee565b820191905f5260205f20905b8154815290600101906020018083116106d157829003601f168201915b5050505050905090565b5f5f61070261138f565b905061070f818585611396565b600191505092915050565b6107226113a8565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107879061246e565b60405180910390fd5b80600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf367c7d20ce5b2ab6da56afd0c9c39b00ba995263c60292a3e1ee3781fd48858260405161082a9190611da6565b60405180910390a25050565b5f600254905090565b5f5f61084961138f565b905061085685828561142f565b6108618585856114c1565b60019150509392505050565b5f6012905090565b61087d6113a8565b8060085f6101000a81548160ff0219169083151502179055507f8a7e4836ebfd27fc092a7a6f9efe11fb54099e0937f93866a01b756a0a24561c816040516108c59190611da6565b60405180910390a150565b60095481565b600c602052805f5260405f205f915054906101000a900460ff1681565b606060068054610902906123f4565b80601f016020809104026020016040519081016040528092919081815260200182805461092e906123f4565b80156109795780601f1061095057610100808354040283529160200191610979565b820191905f5260205f20905b81548152906001019060200180831161095c57829003601f168201915b5050505050905090565b61099461098e61138f565b82611772565b50565b600a5f9054906101000a900460ff1681565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109f66113a8565b6109ff5f6117f1565b565b610a096113a8565b5f5f90505b83839050811015610b36575f73ffffffffffffffffffffffffffffffffffffffff16848483818110610a4357610a4261248c565b5b9050602002016020810190610a58919061206a565b73ffffffffffffffffffffffffffffffffffffffff1603610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa59061246e565b60405180910390fd5b81600c5f868685818110610ac557610ac461248c565b5b9050602002016020810190610ada919061206a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610a0e565b507fed20d05390e2bafaae51518808f73950832fc48440db699f020094bd4e77d736838383604051610b6a93929190612575565b60405180910390a1505050565b610b7f6113a8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be490612615565b60405180910390fd5b5f600c5f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167faf367c7d20ce5b2ab6da56afd0c9c39b00ba995263c60292a3e1ee3781fd48855f604051610cc99190611da6565b60405180910390a280600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167faf367c7d20ce5b2ab6da56afd0c9c39b00ba995263c60292a3e1ee3781fd48856001604051610dad9190611da6565b60405180910390a28073ffffffffffffffffffffffffffffffffffffffff167f210690abd7fd6cdbb8f2beb202b2a253d58d7a0813b2175c4172c14c0c1af6dc60405160405180910390a250565b610e0d82610e0761138f565b8361142f565b610e178282611772565b5050565b60075481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e58906123f4565b80601f0160208091040260200160405190810160405280929190818152602001828054610e84906123f4565b8015610ecf5780601f10610ea657610100808354040283529160200191610ecf565b820191905f5260205f20905b815481529060010190602001808311610eb257829003601f168201915b5050505050905090565b610ee16113a8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f46906126a3565b60405180910390fd5b80600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe5693914d19c789bdee50a362998c0bc8d035a835f9871da5d51152f0582c34f81604051610fbf919061218d565b60405180910390a150565b600b5481565b5f5f610fda61138f565b9050610fe78185856114c1565b600191505092915050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110696113a8565b6127108111156110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a59061270b565b60405180910390fd5b806009819055507f1723c194c108df281b957a5141ed3ebce4571635c93643f26ae09f0b153b4a9e816040516110e49190611fa2565b60405180910390a150565b5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061118b5750600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b905092915050565b61119b6113a8565b80600a5f6101000a81548160ff0219169083151502179055507faa98876ef8c7a62c65b18da07b4a1c0e007bf3f75afc0581d66e29f5160d4c90816040516111e39190611da6565b60405180910390a150565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6112786113a8565b806006908161128791906128c0565b507f3d25540fafb277423a5c9552c25096f7c0c69178c044fd61c947046f08fb09ca816040516112b79190611e2f565b60405180910390a150565b6112ca6113a8565b806007819055507f2e8b467dcc5c04901b7f68368f93ec55076bde1122cbece74d4ccb8a5fba21e8816040516113009190611fa2565b60405180910390a150565b6113136113a8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611383575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161137a919061218d565b60405180910390fd5b61138c816117f1565b50565b5f33905090565b6113a383838360016118b4565b505050565b6113b061138f565b73ffffffffffffffffffffffffffffffffffffffff166113ce610e21565b73ffffffffffffffffffffffffffffffffffffffff161461142d576113f161138f565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611424919061218d565b60405180910390fd5b565b5f61143a84846111ee565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114bb57818110156114ac578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016114a39392919061298f565b60405180910390fd5b6114ba84848484035f6118b4565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361152f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152690612a0e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490612a76565b60405180910390fd5b5f6115a884846110ef565b90505f829050600a5f9054906101000a900460ff1680156115c7575081155b80156115d457505f600954115b15611634575f612710600954856115eb9190612ac1565b6115f59190612b2f565b905080846116039190612b5f565b915061163286600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611a83565b505b60085f9054906101000a900460ff16801561164d575081155b801561165a57505f600754115b15611760577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd86600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007546040518463ffffffff1660e01b81526004016116e093929190612b92565b6020604051808303815f875af11580156116fc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117209190612bdb565b61175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690612c50565b60405180910390fd5b5b61176b858583611a83565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e2575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016117d9919061218d565b60405180910390fd5b6117ed825f83611b73565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611924575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161191b919061218d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611994575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161198b919061218d565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611a7d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611a749190611fa2565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611af3575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611aea919061218d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b63575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611b5a919061218d565b60405180910390fd5b611b6e838383611b73565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bc3578060025f828254611bb79190612c6e565b92505081905550611c91565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611c4c578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611c439392919061298f565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cd8578060025f8282540392505081905550611d22565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d7f9190611fa2565b60405180910390a3505050565b5f8115159050919050565b611da081611d8c565b82525050565b5f602082019050611db95f830184611d97565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e0182611dbf565b611e0b8185611dc9565b9350611e1b818560208601611dd9565b611e2481611de7565b840191505092915050565b5f6020820190508181035f830152611e478184611df7565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e8982611e60565b9050919050565b611e9981611e7f565b8114611ea3575f5ffd5b50565b5f81359050611eb481611e90565b92915050565b5f819050919050565b611ecc81611eba565b8114611ed6575f5ffd5b50565b5f81359050611ee781611ec3565b92915050565b5f5f60408385031215611f0357611f02611e58565b5b5f611f1085828601611ea6565b9250506020611f2185828601611ed9565b9150509250929050565b611f3481611d8c565b8114611f3e575f5ffd5b50565b5f81359050611f4f81611f2b565b92915050565b5f5f60408385031215611f6b57611f6a611e58565b5b5f611f7885828601611ea6565b9250506020611f8985828601611f41565b9150509250929050565b611f9c81611eba565b82525050565b5f602082019050611fb55f830184611f93565b92915050565b5f5f5f60608486031215611fd257611fd1611e58565b5b5f611fdf86828701611ea6565b9350506020611ff086828701611ea6565b925050604061200186828701611ed9565b9150509250925092565b5f60ff82169050919050565b6120208161200b565b82525050565b5f6020820190506120395f830184612017565b92915050565b5f6020828403121561205457612053611e58565b5b5f61206184828501611f41565b91505092915050565b5f6020828403121561207f5761207e611e58565b5b5f61208c84828501611ea6565b91505092915050565b5f602082840312156120aa576120a9611e58565b5b5f6120b784828501611ed9565b91505092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126120e1576120e06120c0565b5b8235905067ffffffffffffffff8111156120fe576120fd6120c4565b5b60208301915083602082028301111561211a576121196120c8565b5b9250929050565b5f5f5f6040848603121561213857612137611e58565b5b5f84013567ffffffffffffffff81111561215557612154611e5c565b5b612161868287016120cc565b9350935050602061217486828701611f41565b9150509250925092565b61218781611e7f565b82525050565b5f6020820190506121a05f83018461217e565b92915050565b5f819050919050565b5f6121c96121c46121bf84611e60565b6121a6565b611e60565b9050919050565b5f6121da826121af565b9050919050565b5f6121eb826121d0565b9050919050565b6121fb816121e1565b82525050565b5f6020820190506122145f8301846121f2565b92915050565b5f5f604083850312156122305761222f611e58565b5b5f61223d85828601611ea6565b925050602061224e85828601611ea6565b9150509250929050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61229282611de7565b810181811067ffffffffffffffff821117156122b1576122b061225c565b5b80604052505050565b5f6122c3611e4f565b90506122cf8282612289565b919050565b5f67ffffffffffffffff8211156122ee576122ed61225c565b5b6122f782611de7565b9050602081019050919050565b828183375f83830152505050565b5f61232461231f846122d4565b6122ba565b9050828152602081018484840111156123405761233f612258565b5b61234b848285612304565b509392505050565b5f82601f830112612367576123666120c0565b5b8135612377848260208601612312565b91505092915050565b5f6020828403121561239557612394611e58565b5b5f82013567ffffffffffffffff8111156123b2576123b1611e5c565b5b6123be84828501612353565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061240b57607f821691505b60208210810361241e5761241d6123c7565b5b50919050565b7f43616e6e6f742077686974656c697374207a65726f20616464726573730000005f82015250565b5f612458601d83611dc9565b915061246382612424565b602082019050919050565b5f6020820190508181035f8301526124858161244c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b5f819050919050565b6124db81611e7f565b82525050565b5f6124ec83836124d2565b60208301905092915050565b5f6125066020840184611ea6565b905092915050565b5f602082019050919050565b5f61252583856124b9565b9350612530826124c9565b805f5b858110156125685761254582846124f8565b61254f88826124e1565b975061255a8361250e565b925050600181019050612533565b5085925050509392505050565b5f6040820190508181035f83015261258e81858761251a565b905061259d6020830184611d97565b949350505050565b7f4e6577206d61726b6574706c6163652063616e6e6f74206265207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6125ff602683611dc9565b915061260a826125a5565b604082019050919050565b5f6020820190508181035f83015261262c816125f3565b9050919050565b7f46656520636f6c6c6563746f722063616e6e6f74206265207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61268d602483611dc9565b915061269882612633565b604082019050919050565b5f6020820190508181035f8301526126ba81612681565b9050919050565b7f46656520726174652063616e6e6f7420657863656564203130302500000000005f82015250565b5f6126f5601b83611dc9565b9150612700826126c1565b602082019050919050565b5f6020820190508181035f830152612722816126e9565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026127857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261274a565b61278f868361274a565b95508019841693508086168417925050509392505050565b5f6127c16127bc6127b784611eba565b6121a6565b611eba565b9050919050565b5f819050919050565b6127da836127a7565b6127ee6127e6826127c8565b848454612756565b825550505050565b5f5f905090565b6128056127f6565b6128108184846127d1565b505050565b5b81811015612833576128285f826127fd565b600181019050612816565b5050565b601f8211156128785761284981612729565b6128528461273b565b81016020851015612861578190505b61287561286d8561273b565b830182612815565b50505b505050565b5f82821c905092915050565b5f6128985f198460080261287d565b1980831691505092915050565b5f6128b08383612889565b9150826002028217905092915050565b6128c982611dbf565b67ffffffffffffffff8111156128e2576128e161225c565b5b6128ec82546123f4565b6128f7828285612837565b5f60209050601f831160018114612928575f8415612916578287015190505b61292085826128a5565b865550612987565b601f19841661293686612729565b5f5b8281101561295d57848901518255600182019150602085019450602081019050612938565b8683101561297a5784890151612976601f891682612889565b8355505b6001600288020188555050505b505050505050565b5f6060820190506129a25f83018661217e565b6129af6020830185611f93565b6129bc6040830184611f93565b949350505050565b7f5472616e736665722066726f6d207a65726f20616464726573730000000000005f82015250565b5f6129f8601a83611dc9565b9150612a03826129c4565b602082019050919050565b5f6020820190508181035f830152612a25816129ec565b9050919050565b7f5472616e7366657220746f207a65726f206164647265737300000000000000005f82015250565b5f612a60601883611dc9565b9150612a6b82612a2c565b602082019050919050565b5f6020820190508181035f830152612a8d81612a54565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612acb82611eba565b9150612ad683611eba565b9250828202612ae481611eba565b91508282048414831517612afb57612afa612a94565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612b3982611eba565b9150612b4483611eba565b925082612b5457612b53612b02565b5b828204905092915050565b5f612b6982611eba565b9150612b7483611eba565b9250828203905081811115612b8c57612b8b612a94565b5b92915050565b5f606082019050612ba55f83018661217e565b612bb2602083018561217e565b612bbf6040830184611f93565b949350505050565b5f81519050612bd581611f2b565b92915050565b5f60208284031215612bf057612bef611e58565b5b5f612bfd84828501612bc7565b91505092915050565b7f5745544820666565207472616e73666572206661696c656400000000000000005f82015250565b5f612c3a601883611dc9565b9150612c4582612c06565b602082019050919050565b5f6020820190508181035f830152612c6781612c2e565b9050919050565b5f612c7882611eba565b9150612c8383611eba565b9250828201905080821115612c9b57612c9a612a94565b5b9291505056fea2646970667358221220946bc968863dfe72e278e06809f00140da91de5a1e7c5fa3d0c483560b90050164736f6c634300081c0033000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000033b2e3c9fd0803ce800000000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000000010000000000000000000000005d83b57b00a928875f9654527372d87776ec2bac00000000000000000000000042b93b8d07eee075b851f5b488ef6b7db148f470000000000000000000000000dc8f523692a88e938fbab280ed6322927e39cce8000000000000000000000000ea6fd31b3f00359022ebeac3c185b0a5b187b40200000000000000000000000000000000000000000000000000000000000000046a6a6a6a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046a6a6a6a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046e6f6e6500000000000000000000000000000000000000000000000000000000