0x60806040523480156200001157600080fd5b5060405162001e4c38038062001e4c833981810160405281019062000037919062000323565b6040518060400160405280601081526020017f4f7374726f76736b796920546f6b656e000000000000000000000000000000008152506040518060400160405280600481526020017f4f5354540000000000000000000000000000000000000000000000000000000081525069d3c21bcecceda10000008260049081620000bf9190620005cf565b508160059081620000d19190620005cf565b5033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200012581336200012f60201b60201c565b50505050620007d1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620001c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b99062000717565b60405180910390fd5b620001d660008284620002b460201b60201c565b81600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000227919062000768565b925050819055508160008082825462000241919062000768565b925050819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051620002a89190620007b4565b60405180910390a35050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002eb82620002be565b9050919050565b620002fd81620002de565b81146200030957600080fd5b50565b6000815190506200031d81620002f2565b92915050565b6000602082840312156200033c576200033b620002b9565b5b60006200034c848285016200030c565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003d757607f821691505b602082108103620003ed57620003ec6200038f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000418565b62000463868362000418565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004b0620004aa620004a4846200047b565b62000485565b6200047b565b9050919050565b6000819050919050565b620004cc836200048f565b620004e4620004db82620004b7565b84845462000425565b825550505050565b600090565b620004fb620004ec565b62000508818484620004c1565b505050565b5b81811015620005305762000524600082620004f1565b6001810190506200050e565b5050565b601f8211156200057f576200054981620003f3565b620005548462000408565b8101602085101562000564578190505b6200057c620005738562000408565b8301826200050d565b50505b505050565b600082821c905092915050565b6000620005a46000198460080262000584565b1980831691505092915050565b6000620005bf838362000591565b9150826002028217905092915050565b620005da8262000355565b67ffffffffffffffff811115620005f657620005f562000360565b5b620006028254620003be565b6200060f82828562000534565b600060209050601f83116001811462000647576000841562000632578287015190505b6200063e8582620005b1565b865550620006ae565b601f1984166200065786620003f3565b60005b8281101562000681578489015182556001820191506020850194506020810190506200065a565b86831015620006a157848901516200069d601f89168262000591565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f6e6f7420616e206f776e65722100000000000000000000000000000000000000600082015250565b6000620006ff600d83620006b6565b91506200070c82620006c7565b602082019050919050565b600060208201905081810360008301526200073281620006f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000775826200047b565b915062000782836200047b565b92508282019050808211156200079d576200079c62000739565b5b92915050565b620007ae816200047b565b82525050565b6000602082019050620007cb6000830184620007a3565b92915050565b61166b80620007e16000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806394bf804d1161007157806394bf804d1461017b57806395d89b41146101975780639dc29fac146101b5578063a9059cbb146101d1578063dd62ed3e146101ed578063df58c42a1461021d576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100f357806323b872dd14610111578063313ce5671461012d57806370a082311461014b575b600080fd5b6100c1610239565b6040516100ce9190610e91565b60405180910390f35b6100f160048036038101906100ec9190610f5b565b6102cb565b005b6100fb6102da565b6040516101089190610faa565b60405180910390f35b61012b60048036038101906101269190610fc5565b6102e3565b005b6101356105a5565b6040516101429190610faa565b60405180910390f35b61016560048036038101906101609190611018565b6105ae565b6040516101729190610faa565b60405180910390f35b61019560048036038101906101909190611045565b6105f7565b005b61019f61076b565b6040516101ac9190610e91565b60405180910390f35b6101cf60048036038101906101ca9190610f5b565b6107fd565b005b6101eb60048036038101906101e69190610f5b565b61090b565b005b61020760048036038101906102029190611085565b610a7a565b6040516102149190610faa565b60405180910390f35b6102376004803603810190610232919061120d565b610b01565b005b60606004805461024890611298565b80601f016020809104026020016040519081016040528092919081815260200182805461027490611298565b80156102c15780601f10610296576101008083540402835291602001916102c1565b820191906000526020600020905b8154815290600101906020018083116102a457829003601f168201915b5050505050905090565b6102d6338383610d11565b5050565b60008054905090565b8281806102ef836105ae565b1015610330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161032790611315565b60405180910390fd5b61033b858585610dfc565b82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156103fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f190611381565b60405180910390fd5b82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461048691906113d0565b9250508190555082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104dc91906113d0565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105329190611404565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516105969190610faa565b60405180910390a35050505050565b60006012905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90611484565b60405180910390fd5b61069360008284610dfc565b81600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106e29190611404565b92505081905550816000808282546106fa9190611404565b925050819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161075f9190610faa565b60405180910390a35050565b60606005805461077a90611298565b80601f01602080910402602001604051908101604052809291908181526020018280546107a690611298565b80156107f35780601f106107c8576101008083540402835291602001916107f3565b820191906000526020600020905b8154815290600101906020018083116107d657829003601f168201915b5050505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088490611484565b60405180910390fd5b61089982600083610dfc565b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108e891906113d0565b925050819055508060008082825461090091906113d0565b925050819055505050565b338180610917836105ae565b1015610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f90611315565b60405180910390fd5b610963338585610dfc565b82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109b291906113d0565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a089190611404565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610a6c9190610faa565b60405180910390a350505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000825182610b1091906114a4565b905080610b1c336105ae565b1015610b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5490611532565b60405180910390fd5b610b6933600083610dfc565b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610bb891906113d0565b925050819055506000805b8451811015610cc8576000858281518110610be157610be0611552565b5b6020026020010151905084600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c3a9190611404565b925050819055508483610c4d9190611404565b92508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051610cac9190610faa565b60405180910390a3508080610cc090611581565b915050610bc3565b50818114610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0290611615565b60405180910390fd5b50505050565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f6e11fb1b7f119e3f2fa29896ef5fdf8b8a2d0d4df6fe90ba8668e7d8b2ffa25e83604051610def9190610faa565b60405180910390a3505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e3b578082015181840152602081019050610e20565b60008484015250505050565b6000601f19601f8301169050919050565b6000610e6382610e01565b610e6d8185610e0c565b9350610e7d818560208601610e1d565b610e8681610e47565b840191505092915050565b60006020820190508181036000830152610eab8184610e58565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ef282610ec7565b9050919050565b610f0281610ee7565b8114610f0d57600080fd5b50565b600081359050610f1f81610ef9565b92915050565b6000819050919050565b610f3881610f25565b8114610f4357600080fd5b50565b600081359050610f5581610f2f565b92915050565b60008060408385031215610f7257610f71610ebd565b5b6000610f8085828601610f10565b9250506020610f9185828601610f46565b9150509250929050565b610fa481610f25565b82525050565b6000602082019050610fbf6000830184610f9b565b92915050565b600080600060608486031215610fde57610fdd610ebd565b5b6000610fec86828701610f10565b9350506020610ffd86828701610f10565b925050604061100e86828701610f46565b9150509250925092565b60006020828403121561102e5761102d610ebd565b5b600061103c84828501610f10565b91505092915050565b6000806040838503121561105c5761105b610ebd565b5b600061106a85828601610f46565b925050602061107b85828601610f10565b9150509250929050565b6000806040838503121561109c5761109b610ebd565b5b60006110aa85828601610f10565b92505060206110bb85828601610f10565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61110282610e47565b810181811067ffffffffffffffff82111715611121576111206110ca565b5b80604052505050565b6000611134610eb3565b905061114082826110f9565b919050565b600067ffffffffffffffff8211156111605761115f6110ca565b5b602082029050602081019050919050565b600080fd5b600061118961118484611145565b61112a565b905080838252602082019050602084028301858111156111ac576111ab611171565b5b835b818110156111d557806111c18882610f10565b8452602084019350506020810190506111ae565b5050509392505050565b600082601f8301126111f4576111f36110c5565b5b8135611204848260208601611176565b91505092915050565b6000806040838503121561122457611223610ebd565b5b600083013567ffffffffffffffff81111561124257611241610ec2565b5b61124e858286016111df565b925050602061125f85828601610f46565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806112b057607f821691505b6020821081036112c3576112c2611269565b5b50919050565b7f6e6f7420656e6f75676820746f6b656e73210000000000000000000000000000600082015250565b60006112ff601283610e0c565b915061130a826112c9565b602082019050919050565b6000602082019050818103600083015261132e816112f2565b9050919050565b7f636865636b20616c6c6f77616e63652100000000000000000000000000000000600082015250565b600061136b601083610e0c565b915061137682611335565b602082019050919050565b6000602082019050818103600083015261139a8161135e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006113db82610f25565b91506113e683610f25565b92508282039050818111156113fe576113fd6113a1565b5b92915050565b600061140f82610f25565b915061141a83610f25565b9250828201905080821115611432576114316113a1565b5b92915050565b7f6e6f7420616e206f776e65722100000000000000000000000000000000000000600082015250565b600061146e600d83610e0c565b915061147982611438565b602082019050919050565b6000602082019050818103600083015261149d81611461565b9050919050565b60006114af82610f25565b91506114ba83610f25565b92508282026114c881610f25565b915082820484148315176114df576114de6113a1565b5b5092915050565b7f4e6f7420656e6f75676820746f6b656e73210000000000000000000000000000600082015250565b600061151c601283610e0c565b9150611527826114e6565b602082019050919050565b6000602082019050818103600083015261154b8161150f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061158c82610f25565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036115be576115bd6113a1565b5b600182019050919050565b7f496e636f727265637420746f6b656e20646973747269627574696f6e00000000600082015250565b60006115ff601c83610e0c565b915061160a826115c9565b602082019050919050565b6000602082019050818103600083015261162e816115f2565b905091905056fea2646970667358221220cbd1d214e7312690d735f1e84572c6871f13e5ab1454e1d4e234f096fe8fd8f064736f6c634300081200330000000000000000000000007c6f0bbeccc4c0f445024fa4818668509d8b9287