60806040526000600860006101000a81548160ff02191690831515021790555060405162003c8d38038062003c8d833981810160405281019062000044919062001013565b338787816003908162000058919062001345565b5080600490816200006a919062001345565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000e25760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000d991906200143d565b60405180910390fd5b620000f3816200068f60201b60201c565b506005851115801562000107575060058411155b62000149576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200014090620014e1565b60405180910390fd5b67016345785d8a000034101562000197576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200018e9062001553565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200020090620015eb565b60405180910390fd5b846006819055508360078190555081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000309573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032f91906200160d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df91906200160d565b6040518363ffffffff1660e01b8152600401620003fe9291906200163f565b6020604051808303816000875af11580156200041e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044491906200160d565b90506001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555073b46022e173378566d9ae421f2b84bc2dad332e0973ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015620004f9573d6000803e3d6000fd5b50600060646001866200050d91906200169b565b62000519919062001715565b90506200054173b46022e173378566d9ae421f2b84bc2dad332e09826200075560201b60201c565b620005603382876200055491906200174d565b6200075560201b60201c565b3073ffffffffffffffffffffffffffffffffffffffff167ff06f39c7256592e120faf6a2a3824b0ea63a9e95a4c9e64799ff187add0a2a606002604051620005a99190620017a6565b60405180910390a28173ffffffffffffffffffffffffffffffffffffffff167fb40229924089a696fab5d90675c48d4ccf43269a56c8c545f5227708acbf4e576001604051620005fa9190620017e0565b60405180910390a27f8af72bce83e770654b24f833792771b0c5ecd95a31e17a43d11475b9f0c96aba8787604051620006359291906200180e565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff167f27aae5db36d94179909d019ae0b1ac7c16d96d953148f63c0f6a0a9c8ead79ee60405160405180910390a250505050505050505062001968565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007ca5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620007c191906200143d565b60405180910390fd5b620007de60008383620007e260201b60201c565b5050565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620008875750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b620008c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008c090620018b1565b60405180910390fd5b6000620008db62000b8660201b60201c565b90506000600860009054906101000a900460ff161580156200092957508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156200096257508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015620009b95750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801562000a105750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b9050801562000b6b576000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000a945760646007548562000a8091906200169b565b62000a8c919062001715565b905062000b09565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161562000b085760646006548562000af991906200169b565b62000b05919062001715565b90505b5b6000818562000b1991906200174d565b905062000b5087600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168462000bb060201b60201c565b62000b6387878362000bb060201b60201c565b505062000b7f565b62000b7e85858562000bb060201b60201c565b5b5050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000c0657806002600082825462000bf99190620018d3565b9250508190555062000cdc565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562000c95578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040162000c8c939291906200190e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000d27578060026000828254039250508190555062000d74565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000dd391906200194b565b60405180910390a3505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000e498262000dfe565b810181811067ffffffffffffffff8211171562000e6b5762000e6a62000e0f565b5b80604052505050565b600062000e8062000de0565b905062000e8e828262000e3e565b919050565b600067ffffffffffffffff82111562000eb15762000eb062000e0f565b5b62000ebc8262000dfe565b9050602081019050919050565b60005b8381101562000ee957808201518184015260208101905062000ecc565b60008484015250505050565b600062000f0c62000f068462000e93565b62000e74565b90508281526020810184848401111562000f2b5762000f2a62000df9565b5b62000f3884828562000ec9565b509392505050565b600082601f83011262000f585762000f5762000df4565b5b815162000f6a84826020860162000ef5565b91505092915050565b6000819050919050565b62000f888162000f73565b811462000f9457600080fd5b50565b60008151905062000fa88162000f7d565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fdb8262000fae565b9050919050565b62000fed8162000fce565b811462000ff957600080fd5b50565b6000815190506200100d8162000fe2565b92915050565b600080600080600080600060e0888a03121562001035576200103462000dea565b5b600088015167ffffffffffffffff81111562001056576200105562000def565b5b620010648a828b0162000f40565b975050602088015167ffffffffffffffff81111562001088576200108762000def565b5b620010968a828b0162000f40565b9650506040620010a98a828b0162000f97565b9550506060620010bc8a828b0162000f97565b9450506080620010cf8a828b0162000f97565b93505060a0620010e28a828b0162000ffc565b92505060c0620010f58a828b0162000ffc565b91505092959891949750929550565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200115757607f821691505b6020821081036200116d576200116c6200110f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620011d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001198565b620011e3868362001198565b95508019841693508086168417925050509392505050565b6000819050919050565b600062001226620012206200121a8462000f73565b620011fb565b62000f73565b9050919050565b6000819050919050565b620012428362001205565b6200125a62001251826200122d565b848454620011a5565b825550505050565b600090565b6200127162001262565b6200127e81848462001237565b505050565b5b81811015620012a6576200129a60008262001267565b60018101905062001284565b5050565b601f821115620012f557620012bf8162001173565b620012ca8462001188565b81016020851015620012da578190505b620012f2620012e98562001188565b83018262001283565b50505b505050565b600082821c905092915050565b60006200131a60001984600802620012fa565b1980831691505092915050565b600062001335838362001307565b9150826002028217905092915050565b620013508262001104565b67ffffffffffffffff8111156200136c576200136b62000e0f565b5b6200137882546200113e565b62001385828285620012aa565b600060209050601f831160018114620013bd5760008415620013a8578287015190505b620013b4858262001327565b86555062001424565b601f198416620013cd8662001173565b60005b82811015620013f757848901518255600182019150602085019450602081019050620013d0565b8683101562001417578489015162001413601f89168262001307565b8355505b6001600288020188555050505b505050505050565b620014378162000fce565b82525050565b60006020820190506200145460008301846200142c565b92915050565b600082825260208201905092915050565b7f546178207261746573206d757374206265206c657373207468616e206f72206560008201527f7175616c20746f20352500000000000000000000000000000000000000000000602082015250565b6000620014c9602a836200145a565b9150620014d6826200146b565b604082019050919050565b60006020820190508181036000830152620014fc81620014ba565b9050919050565b7f4e6f7420656e6f7567682065746865722073656e740000000000000000000000600082015250565b60006200153b6015836200145a565b9150620015488262001503565b602082019050919050565b600060208201905081810360008301526200156e816200152c565b9050919050565b7f4665652072656365697665722063616e6e6f74206265207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000620015d36023836200145a565b9150620015e08262001575565b604082019050919050565b600060208201905081810360008301526200160681620015c4565b9050919050565b60006020828403121562001626576200162562000dea565b5b6000620016368482850162000ffc565b91505092915050565b60006040820190506200165660008301856200142c565b6200166560208301846200142c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620016a88262000f73565b9150620016b58362000f73565b9250828202620016c58162000f73565b91508282048414831517620016df57620016de6200166c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620017228262000f73565b91506200172f8362000f73565b925082620017425762001741620016e6565b5b828204905092915050565b60006200175a8262000f73565b9150620017678362000f73565b92508282039050818111156200178257620017816200166c565b5b92915050565b600060ff82169050919050565b620017a08162001788565b82525050565b6000602082019050620017bd600083018462001795565b92915050565b60008115159050919050565b620017da81620017c3565b82525050565b6000602082019050620017f76000830184620017cf565b92915050565b620018088162000f73565b82525050565b6000604082019050620018256000830185620017fd565b620018346020830184620017fd565b9392505050565b7f53656375726564546f6b656e3a20626c61636b6c69737465642061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000620018996021836200145a565b9150620018a6826200183b565b604082019050919050565b60006020820190508181036000830152620018cc816200188a565b9050919050565b6000620018e08262000f73565b9150620018ed8362000f73565b92508282019050808211156200190857620019076200166c565b5b92915050565b60006060820190506200192560008301866200142c565b620019346020830185620017fd565b620019436040830184620017fd565b949350505050565b6000602082019050620019626000830184620017fd565b92915050565b61231580620019786000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806376c7306411610104578063c57981b5116100a2578063f10fb58411610071578063f10fb58414610549578063f2fde38b14610567578063fe575a8714610583578063ffa1ad74146105b3576101da565b8063c57981b5146104af578063c69bebe4146104cd578063c7b122b1146104e9578063dd62ed3e14610519576101da565b806395d89b41116100de57806395d89b4114610427578063a9059cbb14610445578063ab6a8b1c14610475578063b3f0067414610491576101da565b806376c73064146103d15780638da5cb5b146103ed5780639155e0831461040b576101da565b8063268f72dd1161017c578063691f224f1161014b578063691f224f1461035b57806370a0823114610379578063715018a6146103a9578063735de9f7146103b3576101da565b8063268f72dd146102d1578063313ce567146102ef5780633af32abf1461030d5780634b2a39471461033d576101da565b80630d392cd9116101b85780630d392cd91461024957806318160ddd1461026557806323b872dd1461028357806324024efd146102b3576101da565b806306fdde03146101df578063095ea7b3146101fd5780630bb8e1031461022d575b600080fd5b6101e76105d1565b6040516101f49190611aaf565b60405180910390f35b61021760048036038101906102129190611b6a565b610663565b6040516102249190611bc5565b60405180910390f35b61024760048036038101906102429190611c0c565b610686565b005b610263600480360381019061025e9190611c39565b6106e2565b005b61026d610793565b60405161027a9190611c88565b60405180910390f35b61029d60048036038101906102989190611ca3565b61079d565b6040516102aa9190611bc5565b60405180910390f35b6102bb6107cc565b6040516102c89190611c88565b60405180910390f35b6102d96107d2565b6040516102e69190611bc5565b60405180910390f35b6102f76107e5565b6040516103049190611d12565b60405180910390f35b61032760048036038101906103229190611d2d565b6107ee565b6040516103349190611bc5565b60405180910390f35b61034561080e565b6040516103529190611d69565b60405180910390f35b610363610826565b6040516103709190611c88565b60405180910390f35b610393600480360381019061038e9190611d2d565b61082c565b6040516103a09190611c88565b60405180910390f35b6103b1610874565b005b6103bb610888565b6040516103c89190611de3565b60405180910390f35b6103eb60048036038101906103e69190611c39565b6108ae565b005b6103f5610add565b6040516104029190611d69565b60405180910390f35b61042560048036038101906104209190611c39565b610b07565b005b61042f610bb8565b60405161043c9190611aaf565b60405180910390f35b61045f600480360381019061045a9190611b6a565b610c4a565b60405161046c9190611bc5565b60405180910390f35b61048f600480360381019061048a9190611dfe565b610c6d565b005b610499610d13565b6040516104a69190611d69565b60405180910390f35b6104b7610d39565b6040516104c49190611c88565b60405180910390f35b6104e760048036038101906104e29190611d2d565b610d3e565b005b61050360048036038101906104fe9190611d2d565b610e3c565b6040516105109190611bc5565b60405180910390f35b610533600480360381019061052e9190611e3e565b610e5c565b6040516105409190611c88565b60405180910390f35b610551610ee3565b60405161055e9190611aaf565b60405180910390f35b610581600480360381019061057c9190611d2d565b610f1c565b005b61059d60048036038101906105989190611d2d565b610fa2565b6040516105aa9190611bc5565b60405180910390f35b6105bb610fc2565b6040516105c89190611d12565b60405180910390f35b6060600380546105e090611ead565b80601f016020809104026020016040519081016040528092919081815260200182805461060c90611ead565b80156106595780601f1061062e57610100808354040283529160200191610659565b820191906000526020600020905b81548152906001019060200180831161063c57829003601f168201915b5050505050905090565b60008061066e610fc7565b905061067b818585610fcf565b600191505092915050565b61068e610fe1565b80600860006101000a81548160ff0219169083151502179055507fa32873ac8d5b14de8a004b83c19ee1a422f35a4da8b4f7c7cfba001f718116fc816040516106d79190611bc5565b60405180910390a150565b6106ea610fe1565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d826040516107879190611bc5565b60405180910390a25050565b6000600254905090565b6000806107a8610fc7565b90506107b5858285611068565b6107c08585856110fc565b60019150509392505050565b60075481565b600860009054906101000a900460ff1681565b60006012905090565b600a6020528060005260406000206000915054906101000a900460ff1681565b73b46022e173378566d9ae421f2b84bc2dad332e0981565b60065481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61087c610fe1565b61088660006111f0565b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108b6610fe1565b80156109a657600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094090611f2a565b60405180910390fd5b6001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610a8b565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2990611f96565b60405180910390fd5b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8173ffffffffffffffffffffffffffffffffffffffff167fb40229924089a696fab5d90675c48d4ccf43269a56c8c545f5227708acbf4e5782604051610ad19190611bc5565b60405180910390a25050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b0f610fe1565b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac82604051610bac9190611bc5565b60405180910390a25050565b606060048054610bc790611ead565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf390611ead565b8015610c405780601f10610c1557610100808354040283529160200191610c40565b820191906000526020600020905b815481529060010190602001808311610c2357829003601f168201915b5050505050905090565b600080610c55610fc7565b9050610c628185856110fc565b600191505092915050565b610c75610fe1565b6006548211158015610c8957506007548111155b610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf90612002565b60405180910390fd5b81600681905550806007819055507f8af72bce83e770654b24f833792771b0c5ecd95a31e17a43d11475b9f0c96aba8282604051610d07929190612022565b60405180910390a15050565b600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600181565b610d46610fe1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac906120bd565b60405180910390fd5b80600860016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f27aae5db36d94179909d019ae0b1ac7c16d96d953148f63c0f6a0a9c8ead79ee60405160405180910390a250565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6040518060400160405280600581526020017f6f75757a3600000000000000000000000000000000000000000000000000000081525081565b610f24610fe1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f965760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610f8d9190611d69565b60405180910390fd5b610f9f816111f0565b50565b600b6020528060005260406000206000915054906101000a900460ff1681565b600281565b600033905090565b610fdc83838360016112b6565b505050565b610fe9610fc7565b73ffffffffffffffffffffffffffffffffffffffff16611007610add565b73ffffffffffffffffffffffffffffffffffffffff16146110665761102a610fc7565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161105d9190611d69565b60405180910390fd5b565b60006110748484610e5c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110f657818110156110e6578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016110dd939291906120dd565b60405180910390fd5b6110f5848484840360006112b6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361116e5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016111659190611d69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111e05760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016111d79190611d69565b60405180910390fd5b6111eb83838361148d565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036113285760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161131f9190611d69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361139a5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016113919190611d69565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015611487578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161147e9190611c88565b60405180910390a35b50505050565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115315750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790612186565b60405180910390fd5b600061157a610add565b90506000600860009054906101000a900460ff161580156115c757508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115ff57508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156116555750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116ab5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905080156117e7576000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156117285760646007548561171791906121d5565b6117219190612246565b9050611798565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156117975760646006548561178a91906121d5565b6117949190612246565b90505b5b600081856117a69190612277565b90506117d587600860019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117fa565b6117e08787836117fa565b50506117f3565b6117f28585856117fa565b5b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361184c57806002600082825461184091906122ab565b9250508190555061191f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156118d8578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016118cf939291906120dd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361196857806002600082825403925050819055506119b5565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a129190611c88565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a59578082015181840152602081019050611a3e565b60008484015250505050565b6000601f19601f8301169050919050565b6000611a8182611a1f565b611a8b8185611a2a565b9350611a9b818560208601611a3b565b611aa481611a65565b840191505092915050565b60006020820190508181036000830152611ac98184611a76565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611b0182611ad6565b9050919050565b611b1181611af6565b8114611b1c57600080fd5b50565b600081359050611b2e81611b08565b92915050565b6000819050919050565b611b4781611b34565b8114611b5257600080fd5b50565b600081359050611b6481611b3e565b92915050565b60008060408385031215611b8157611b80611ad1565b5b6000611b8f85828601611b1f565b9250506020611ba085828601611b55565b9150509250929050565b60008115159050919050565b611bbf81611baa565b82525050565b6000602082019050611bda6000830184611bb6565b92915050565b611be981611baa565b8114611bf457600080fd5b50565b600081359050611c0681611be0565b92915050565b600060208284031215611c2257611c21611ad1565b5b6000611c3084828501611bf7565b91505092915050565b60008060408385031215611c5057611c4f611ad1565b5b6000611c5e85828601611b1f565b9250506020611c6f85828601611bf7565b9150509250929050565b611c8281611b34565b82525050565b6000602082019050611c9d6000830184611c79565b92915050565b600080600060608486031215611cbc57611cbb611ad1565b5b6000611cca86828701611b1f565b9350506020611cdb86828701611b1f565b9250506040611cec86828701611b55565b9150509250925092565b600060ff82169050919050565b611d0c81611cf6565b82525050565b6000602082019050611d276000830184611d03565b92915050565b600060208284031215611d4357611d42611ad1565b5b6000611d5184828501611b1f565b91505092915050565b611d6381611af6565b82525050565b6000602082019050611d7e6000830184611d5a565b92915050565b6000819050919050565b6000611da9611da4611d9f84611ad6565b611d84565b611ad6565b9050919050565b6000611dbb82611d8e565b9050919050565b6000611dcd82611db0565b9050919050565b611ddd81611dc2565b82525050565b6000602082019050611df86000830184611dd4565b92915050565b60008060408385031215611e1557611e14611ad1565b5b6000611e2385828601611b55565b9250506020611e3485828601611b55565b9150509250929050565b60008060408385031215611e5557611e54611ad1565b5b6000611e6385828601611b1f565b9250506020611e7485828601611b1f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611ec557607f821691505b602082108103611ed857611ed7611e7e565b5b50919050565b7f5061697220616c72656164792061646465640000000000000000000000000000600082015250565b6000611f14601283611a2a565b9150611f1f82611ede565b602082019050919050565b60006020820190508181036000830152611f4381611f07565b9050919050565b7f50616972206e6f74206164646564000000000000000000000000000000000000600082015250565b6000611f80600e83611a2a565b9150611f8b82611f4a565b602082019050919050565b60006020820190508181036000830152611faf81611f73565b9050919050565b7f5461782072617465732063616e206f6e6c792062652064656372656173656400600082015250565b6000611fec601f83611a2a565b9150611ff782611fb6565b602082019050919050565b6000602082019050818103600083015261201b81611fdf565b9050919050565b60006040820190506120376000830185611c79565b6120446020830184611c79565b9392505050565b7f4665652072656365697665722063616e6e6f74206265207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006120a7602383611a2a565b91506120b28261204b565b604082019050919050565b600060208201905081810360008301526120d68161209a565b9050919050565b60006060820190506120f26000830186611d5a565b6120ff6020830185611c79565b61210c6040830184611c79565b949350505050565b7f53656375726564546f6b656e3a20626c61636b6c69737465642061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612170602183611a2a565b915061217b82612114565b604082019050919050565b6000602082019050818103600083015261219f81612163565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006121e082611b34565b91506121eb83611b34565b92508282026121f981611b34565b915082820484148315176122105761220f6121a6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061225182611b34565b915061225c83611b34565b92508261226c5761226b612217565b5b828204905092915050565b600061228282611b34565b915061228d83611b34565b92508282039050818111156122a5576122a46121a6565b5b92915050565b60006122b682611b34565b91506122c183611b34565b92508282019050808211156122d9576122d86121a6565b5b9291505056fea26469706673582212204ede2b0f13775b1e2430c7c3d2b370a723c094e0487f78bfe80e813095ad205964736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000100000000000000000000000086dcd3293c53cf8efd7303b57beb2a3f671dde98000000000000000000000000037287a8844835e663c392d7f86eb2dbf2a14a980000000000000000000000000000000000000000000000000000000000000001310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000