0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152503480156200004457600080fd5b50620000556200005b60201b60201c565b62000205565b600060019054906101000a900460ff1615620000ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a590620001a8565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff16146200011f5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620001169190620001e8565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200019060278362000121565b91506200019d8262000132565b604082019050919050565b60006020820190508181036000830152620001c38162000181565b9050919050565b600060ff82169050919050565b620001e281620001ca565b82525050565b6000602082019050620001ff6000830184620001d7565b92915050565b6080516157406200023d60003960008181610a6f01528181610afd01528181610cb201528181610d400152610df001526157406000f3fe6080604052600436106101ee5760003560e01c80637028e2cd1161010d5780639711715a116100a0578063a9059cbb1161006f578063a9059cbb14610732578063d505accf1461076f578063d547741f14610798578063dd62ed3e146107c1578063f72c0d8b146107fe576101ee565b80639711715a14610676578063981b24d01461068d578063a217fddf146106ca578063a457c2d7146106f5576101ee565b80638129fc1c116100dc5780638129fc1c146105c657806384b0196e146105dd57806391d148541461060e57806395d89b411461064b576101ee565b80637028e2cd146104f857806370a082311461052357806379cc6790146105605780637ecebe0014610589576101ee565b80633644e5151161018557806342966c681161015457806342966c681461044b5780634ee2cd7e146104745780634f1ef286146104b157806352d1902d146104cd576101ee565b80633644e5151461039157806336568abe146103bc5780633659cfe6146103e5578063395093511461040e576101ee565b806323b872dd116101c157806323b872dd146102c3578063248a9ca3146103005780632f2ff15d1461033d578063313ce56714610366576101ee565b806301ffc9a7146101f357806306fdde0314610230578063095ea7b31461025b57806318160ddd14610298575b600080fd5b3480156101ff57600080fd5b5061021a600480360381019061021591906136f3565b610829565b604051610227919061373b565b60405180910390f35b34801561023c57600080fd5b506102456108a3565b60405161025291906137e6565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d919061389c565b610935565b60405161028f919061373b565b60405180910390f35b3480156102a457600080fd5b506102ad610958565b6040516102ba91906138eb565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190613906565b610962565b6040516102f7919061373b565b60405180910390f35b34801561030c57600080fd5b506103276004803603810190610322919061398f565b610991565b60405161033491906139cb565b60405180910390f35b34801561034957600080fd5b50610364600480360381019061035f91906139e6565b6109b1565b005b34801561037257600080fd5b5061037b6109d2565b6040516103889190613a42565b60405180910390f35b34801561039d57600080fd5b506103a66109db565b6040516103b391906139cb565b60405180910390f35b3480156103c857600080fd5b506103e360048036038101906103de91906139e6565b6109ea565b005b3480156103f157600080fd5b5061040c60048036038101906104079190613a5d565b610a6d565b005b34801561041a57600080fd5b506104356004803603810190610430919061389c565b610bf5565b604051610442919061373b565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d9190613a8a565b610c2c565b005b34801561048057600080fd5b5061049b6004803603810190610496919061389c565b610c40565b6040516104a891906138eb565b60405180910390f35b6104cb60048036038101906104c69190613bec565b610cb0565b005b3480156104d957600080fd5b506104e2610dec565b6040516104ef91906139cb565b60405180910390f35b34801561050457600080fd5b5061050d610ea5565b60405161051a91906139cb565b60405180910390f35b34801561052f57600080fd5b5061054a60048036038101906105459190613a5d565b610ec9565b60405161055791906138eb565b60405180910390f35b34801561056c57600080fd5b506105876004803603810190610582919061389c565b610f12565b005b34801561059557600080fd5b506105b060048036038101906105ab9190613a5d565b610f32565b6040516105bd91906138eb565b60405180910390f35b3480156105d257600080fd5b506105db610f83565b005b3480156105e957600080fd5b506105f2611217565b6040516106059796959493929190613d50565b60405180910390f35b34801561061a57600080fd5b50610635600480360381019061063091906139e6565b61131a565b604051610642919061373b565b60405180910390f35b34801561065757600080fd5b50610660611385565b60405161066d91906137e6565b60405180910390f35b34801561068257600080fd5b5061068b611417565b005b34801561069957600080fd5b506106b460048036038101906106af9190613a8a565b61144d565b6040516106c191906138eb565b60405180910390f35b3480156106d657600080fd5b506106df61147e565b6040516106ec91906139cb565b60405180910390f35b34801561070157600080fd5b5061071c6004803603810190610717919061389c565b611485565b604051610729919061373b565b60405180910390f35b34801561073e57600080fd5b506107596004803603810190610754919061389c565b6114fc565b604051610766919061373b565b60405180910390f35b34801561077b57600080fd5b5061079660048036038101906107919190613e00565b61151f565b005b3480156107a457600080fd5b506107bf60048036038101906107ba91906139e6565b611661565b005b3480156107cd57600080fd5b506107e860048036038101906107e39190613ea2565b611682565b6040516107f591906138eb565b60405180910390f35b34801561080a57600080fd5b50610813611709565b60405161082091906139cb565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061089c575061089b8261172d565b5b9050919050565b6060603680546108b290613f11565b80601f01602080910402602001604051908101604052809291908181526020018280546108de90613f11565b801561092b5780601f106109005761010080835404028352916020019161092b565b820191906000526020600020905b81548152906001019060200180831161090e57829003601f168201915b5050505050905090565b600080610940611797565b905061094d81858561179f565b600191505092915050565b6000603554905090565b60008061096d611797565b905061097a858285611968565b6109858585856119f4565b60019150509392505050565b600060fb6000838152602001908152602001600020600101549050919050565b6109ba82610991565b6109c381611c6d565b6109cd8383611c81565b505050565b60006012905090565b60006109e5611d62565b905090565b6109f2611797565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5690613fb4565b60405180910390fd5b610a698282611d71565b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603610afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af290614046565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610b3a611e53565b73ffffffffffffffffffffffffffffffffffffffff1614610b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b87906140d8565b60405180910390fd5b610b9981611eaa565b610bf281600067ffffffffffffffff811115610bb857610bb7613ac1565b5b6040519080825280601f01601f191660200182016040528015610bea5781602001600182028036833780820191505090505b506000611ed8565b50565b600080610c00611797565b9050610c21818585610c128589611682565b610c1c9190614127565b61179f565b600191505092915050565b610c3d610c37611797565b82612046565b50565b6000806000610c8d84609760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612215565b9150915081610ca457610c9f85610ec9565b610ca6565b805b9250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3590614046565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610d7d611e53565b73ffffffffffffffffffffffffffffffffffffffff1614610dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dca906140d8565b60405180910390fd5b610ddc82611eaa565b610de882826001611ed8565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e73906141cd565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b7f5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f81565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f2482610f1e611797565b83611968565b610f2e8282612046565b5050565b6000610f7c61016160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061230a565b9050919050565b60008060019054906101000a900460ff16159050808015610fb45750600160008054906101000a900460ff1660ff16105b80610fe15750610fc330612318565b158015610fe05750600160008054906101000a900460ff1660ff16145b5b611020576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110179061425f565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561105d576001600060016101000a81548160ff0219169083151502179055505b6110d16040518060400160405280600481526020017f544f4e49000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f544f4e000000000000000000000000000000000000000000000000000000000081525061233b565b6110d9612398565b6110e16123e9565b6110e961243a565b6111276040518060400160405280600481526020017f544f4e490000000000000000000000000000000000000000000000000000000081525061248b565b61112f61251c565b61113c6000801b33611c81565b6111667f5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f33611c81565b611191336111726109d2565b600a61117e91906143b2565b620186a061118c91906143fd565b61256d565b6111bb7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e333611c81565b80156112145760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161120b9190614484565b60405180910390a15b50565b6000606080600080600060606000801b61012d5414801561123d57506000801b61012e54145b61127c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611273906144eb565b60405180910390fd5b6112846126c4565b61128c612757565b46306000801b600067ffffffffffffffff8111156112ad576112ac613ac1565b5b6040519080825280602002602001820160405280156112db5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b600060fb600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606037805461139490613f11565b80601f01602080910402602001604051908101604052809291908181526020018280546113c090613f11565b801561140d5780601f106113e25761010080835404028352916020019161140d565b820191906000526020600020905b8154815290600101906020018083116113f057829003601f168201915b5050505050905090565b7f5fdbd35e8da83ee755d5e62a539e5ed7f47126abede0b8b10f9ea43dc6eed07f61144181611c6d565b6114496127ea565b5050565b600080600061145d846098612215565b91509150816114735761146e610958565b611475565b805b92505050919050565b6000801b81565b600080611490611797565b9050600061149e8286611682565b9050838110156114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da9061457d565b60405180910390fd5b6114f0828686840361179f565b60019250505092915050565b600080611507611797565b90506115148185856119f4565b600191505092915050565b83421115611562576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611559906145e9565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886115918c612840565b896040516020016115a796959493929190614609565b60405160208183030381529060405280519060200120905060006115ca8261289f565b905060006115da828787876128b9565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461164a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611641906146b6565b60405180910390fd5b6116558a8a8a61179f565b50505050505050505050565b61166a82610991565b61167381611c6d565b61167d8383611d71565b505050565b6000603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180590614748565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906147da565b60405180910390fd5b80603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161195b91906138eb565b60405180910390a3505050565b60006119748484611682565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146119ee57818110156119e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d790614846565b60405180910390fd5b6119ed848484840361179f565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5a906148d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac99061496a565b60405180910390fd5b611add8383836128e4565b6000603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5b906149fc565b60405180910390fd5b818103603360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c5491906138eb565b60405180910390a3611c678484846128f4565b50505050565b611c7e81611c79611797565b6128f9565b50565b611c8b828261131a565b611d5e57600160fb600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611d03611797565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611d6c61297e565b905090565b611d7b828261131a565b15611e4f57600060fb600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611df4611797565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000611e817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6129e2565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3611ed481611c6d565b5050565b611f047f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b6129ec565b60000160009054906101000a900460ff1615611f2857611f23836129f6565b612041565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f9057506040513d601f19601f82011682018060405250810190611f8d9190614a31565b60015b611fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc690614ad0565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b8114612034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202b90614b62565b60405180910390fd5b50612040838383612aaf565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ac90614bf4565b60405180910390fd5b6120c1826000836128e4565b6000603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213f90614c86565b60405180910390fd5b818103603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603560008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121fc91906138eb565b60405180910390a3612210836000846128f4565b505050565b6000806000841161225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290614cf2565b60405180910390fd5b612263612adb565b8411156122a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229c90614d5e565b60405180910390fd5b60006122bd8585600001612aec90919063ffffffff16565b9050836000018054905081036122da576000809250925050612303565b60018460010182815481106122f2576122f1614d7e565b5b906000526020600020015492509250505b9250929050565b600081600001549050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff1661238a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238190614e1f565b60405180910390fd5b6123948282612ba5565b5050565b600060019054906101000a900460ff166123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123de90614e1f565b60405180910390fd5b565b600060019054906101000a900460ff16612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f90614e1f565b60405180910390fd5b565b600060019054906101000a900460ff16612489576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248090614e1f565b60405180910390fd5b565b600060019054906101000a900460ff166124da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d190614e1f565b60405180910390fd5b612519816040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612c18565b50565b600060019054906101000a900460ff1661256b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256290614e1f565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d390614e8b565b60405180910390fd5b6125e8600083836128e4565b80603560008282546125fa9190614127565b9250508190555080603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126ac91906138eb565b60405180910390a36126c0600083836128f4565b5050565b606061012f80546126d490613f11565b80601f016020809104026020016040519081016040528092919081815260200182805461270090613f11565b801561274d5780601f106127225761010080835404028352916020019161274d565b820191906000526020600020905b81548152906001019060200180831161273057829003601f168201915b5050505050905090565b6060610130805461276790613f11565b80601f016020809104026020016040519081016040528092919081815260200182805461279390613f11565b80156127e05780601f106127b5576101008083540402835291602001916127e0565b820191906000526020600020905b8154815290600101906020018083116127c357829003601f168201915b5050505050905090565b60006127f6609a612ca3565b6000612800612adb565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb678160405161283191906138eb565b60405180910390a18091505090565b60008061016160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061288e8161230a565b915061289981612ca3565b50919050565b60006128b26128ac611d62565b83612cb9565b9050919050565b60008060006128ca87878787612cfa565b915091506128d781612ddc565b8192505050949350505050565b6128ef838383612f42565b505050565b505050565b612903828261131a565b61297a5761291081612ffa565b61291e8360001c6020613027565b60405160200161292f929190614f7f565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297191906137e6565b60405180910390fd5b5050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6129a9613263565b6129b16132cf565b46306040516020016129c7959493929190614fb9565b60405160208183030381529060405280519060200120905090565b6000819050919050565b6000819050919050565b6129ff81612318565b612a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a359061507e565b60405180910390fd5b80612a6b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6129e2565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612ab88361333b565b600082511180612ac55750805b15612ad657612ad4838361338a565b505b505050565b6000612ae7609a61230a565b905090565b600080838054905003612b025760009050612b9f565b600080848054905090505b80821015612b56576000612b2183836133b7565b905084612b2e87836133dd565b600001541115612b4057809150612b50565b600181612b4d9190614127565b92505b50612b0d565b600082118015612b7e575083612b7886600185612b73919061509e565b6133dd565b60000154145b15612b9957600182612b90919061509e565b92505050612b9f565b81925050505b92915050565b600060019054906101000a900460ff16612bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612beb90614e1f565b60405180910390fd5b8160369081612c039190615274565b508060379081612c139190615274565b505050565b600060019054906101000a900460ff16612c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5e90614e1f565b60405180910390fd5b8161012f9081612c779190615274565b50806101309081612c889190615274565b506000801b61012d819055506000801b61012e819055505050565b6001816000016000828254019250508190555050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115612d35576000600391509150612dd3565b600060018787878760405160008152602001604052604051612d5a9493929190615346565b6020604051602081039080840390855afa158015612d7c573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612dca57600060019250925050612dd3565b80600092509250505b94509492505050565b60006004811115612df057612def61538b565b5b816004811115612e0357612e0261538b565b5b0315612f3f5760016004811115612e1d57612e1c61538b565b5b816004811115612e3057612e2f61538b565b5b03612e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6790615406565b60405180910390fd5b60026004811115612e8457612e8361538b565b5b816004811115612e9757612e9661538b565b5b03612ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ece90615472565b60405180910390fd5b60036004811115612eeb57612eea61538b565b5b816004811115612efe57612efd61538b565b5b03612f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3590615504565b60405180910390fd5b5b50565b612f4d8383836133ff565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f9757612f8a82613404565b612f92613457565b612ff5565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612fe157612fd483613404565b612fdc613457565b612ff4565b612fea83613404565b612ff382613404565b5b5b505050565b60606130208273ffffffffffffffffffffffffffffffffffffffff16601460ff16613027565b9050919050565b60606000600283600261303a91906143fd565b6130449190614127565b67ffffffffffffffff81111561305d5761305c613ac1565b5b6040519080825280601f01601f19166020018201604052801561308f5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106130c7576130c6614d7e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061312b5761312a614d7e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261316b91906143fd565b6131759190614127565b90505b6001811115613215577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106131b7576131b6614d7e565b5b1a60f81b8282815181106131ce576131cd614d7e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061320e90615524565b9050613178565b5060008414613259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325090615599565b60405180910390fd5b8091505092915050565b60008061326e6126c4565b905060008151111561328a5780805190602001209150506132cc565b600061012d5490506000801b81146132a65780925050506132cc565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470925050505b90565b6000806132da612757565b90506000815111156132f6578080519060200120915050613338565b600061012e5490506000801b8114613312578092505050613338565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470925050505b90565b613344816129f6565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606133af83836040518060600160405280602781526020016156e46027913961346b565b905092915050565b600060028284186133c891906155e8565b8284166133d59190614127565b905092915050565b600080836000528260206000200190506133f6816134f1565b91505092915050565b505050565b613454609760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061344f83610ec9565b6134fb565b50565b6134696098613464610958565b6134fb565b565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516134959190615660565b600060405180830381855af49150503d80600081146134d0576040519150601f19603f3d011682016040523d82523d6000602084013e6134d5565b606091505b50915091506134e686838387613576565b925050509392505050565b6000819050919050565b6000613505612adb565b905080613514846000016135eb565b10156135715782600001819080600181540180825580915050600190039060005260206000200160009091909190915055826001018290806001815401808255809150506001900390600052602060002001600090919091909150555b505050565b606083156135d85760008351036135d05761359085612318565b6135cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c6906156c3565b60405180910390fd5b5b8290506135e3565b6135e28383613637565b5b949350505050565b6000808280549050036136015760009050613632565b8160018380549050613613919061509e565b8154811061362457613623614d7e565b5b906000526020600020015490505b919050565b60008251111561364a5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161367e91906137e6565b60405180910390fd5b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6136d08161369b565b81146136db57600080fd5b50565b6000813590506136ed816136c7565b92915050565b60006020828403121561370957613708613691565b5b6000613717848285016136de565b91505092915050565b60008115159050919050565b61373581613720565b82525050565b6000602082019050613750600083018461372c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613790578082015181840152602081019050613775565b60008484015250505050565b6000601f19601f8301169050919050565b60006137b882613756565b6137c28185613761565b93506137d2818560208601613772565b6137db8161379c565b840191505092915050565b6000602082019050818103600083015261380081846137ad565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061383382613808565b9050919050565b61384381613828565b811461384e57600080fd5b50565b6000813590506138608161383a565b92915050565b6000819050919050565b61387981613866565b811461388457600080fd5b50565b60008135905061389681613870565b92915050565b600080604083850312156138b3576138b2613691565b5b60006138c185828601613851565b92505060206138d285828601613887565b9150509250929050565b6138e581613866565b82525050565b600060208201905061390060008301846138dc565b92915050565b60008060006060848603121561391f5761391e613691565b5b600061392d86828701613851565b935050602061393e86828701613851565b925050604061394f86828701613887565b9150509250925092565b6000819050919050565b61396c81613959565b811461397757600080fd5b50565b60008135905061398981613963565b92915050565b6000602082840312156139a5576139a4613691565b5b60006139b38482850161397a565b91505092915050565b6139c581613959565b82525050565b60006020820190506139e060008301846139bc565b92915050565b600080604083850312156139fd576139fc613691565b5b6000613a0b8582860161397a565b9250506020613a1c85828601613851565b9150509250929050565b600060ff82169050919050565b613a3c81613a26565b82525050565b6000602082019050613a576000830184613a33565b92915050565b600060208284031215613a7357613a72613691565b5b6000613a8184828501613851565b91505092915050565b600060208284031215613aa057613a9f613691565b5b6000613aae84828501613887565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613af98261379c565b810181811067ffffffffffffffff82111715613b1857613b17613ac1565b5b80604052505050565b6000613b2b613687565b9050613b378282613af0565b919050565b600067ffffffffffffffff821115613b5757613b56613ac1565b5b613b608261379c565b9050602081019050919050565b82818337600083830152505050565b6000613b8f613b8a84613b3c565b613b21565b905082815260208101848484011115613bab57613baa613abc565b5b613bb6848285613b6d565b509392505050565b600082601f830112613bd357613bd2613ab7565b5b8135613be3848260208601613b7c565b91505092915050565b60008060408385031215613c0357613c02613691565b5b6000613c1185828601613851565b925050602083013567ffffffffffffffff811115613c3257613c31613696565b5b613c3e85828601613bbe565b9150509250929050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b613c7d81613c48565b82525050565b613c8c81613828565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613cc781613866565b82525050565b6000613cd98383613cbe565b60208301905092915050565b6000602082019050919050565b6000613cfd82613c92565b613d078185613c9d565b9350613d1283613cae565b8060005b83811015613d43578151613d2a8882613ccd565b9750613d3583613ce5565b925050600181019050613d16565b5085935050505092915050565b600060e082019050613d65600083018a613c74565b8181036020830152613d7781896137ad565b90508181036040830152613d8b81886137ad565b9050613d9a60608301876138dc565b613da76080830186613c83565b613db460a08301856139bc565b81810360c0830152613dc68184613cf2565b905098975050505050505050565b613ddd81613a26565b8114613de857600080fd5b50565b600081359050613dfa81613dd4565b92915050565b600080600080600080600060e0888a031215613e1f57613e1e613691565b5b6000613e2d8a828b01613851565b9750506020613e3e8a828b01613851565b9650506040613e4f8a828b01613887565b9550506060613e608a828b01613887565b9450506080613e718a828b01613deb565b93505060a0613e828a828b0161397a565b92505060c0613e938a828b0161397a565b91505092959891949750929550565b60008060408385031215613eb957613eb8613691565b5b6000613ec785828601613851565b9250506020613ed885828601613851565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613f2957607f821691505b602082108103613f3c57613f3b613ee2565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000613f9e602f83613761565b9150613fa982613f42565b604082019050919050565b60006020820190508181036000830152613fcd81613f91565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b6000614030602c83613761565b915061403b82613fd4565b604082019050919050565b6000602082019050818103600083015261405f81614023565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b60006140c2602c83613761565b91506140cd82614066565b604082019050919050565b600060208201905081810360008301526140f1816140b5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061413282613866565b915061413d83613866565b9250828201905080821115614155576141546140f8565b5b92915050565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b60006141b7603883613761565b91506141c28261415b565b604082019050919050565b600060208201905081810360008301526141e6816141aa565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000614249602e83613761565b9150614254826141ed565b604082019050919050565b600060208201905081810360008301526142788161423c565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156142d6578086048111156142b2576142b16140f8565b5b60018516156142c15780820291505b80810290506142cf8561427f565b9450614296565b94509492505050565b6000826142ef57600190506143ab565b816142fd57600090506143ab565b8160018114614313576002811461431d5761434c565b60019150506143ab565b60ff84111561432f5761432e6140f8565b5b8360020a915084821115614346576143456140f8565b5b506143ab565b5060208310610133831016604e8410600b84101617156143815782820a90508381111561437c5761437b6140f8565b5b6143ab565b61438e848484600161428c565b925090508184048111156143a5576143a46140f8565b5b81810290505b9392505050565b60006143bd82613866565b91506143c883613a26565b92506143f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846142df565b905092915050565b600061440882613866565b915061441383613866565b925082820261442181613866565b91508282048414831517614438576144376140f8565b5b5092915050565b6000819050919050565b6000819050919050565b600061446e6144696144648461443f565b614449565b613a26565b9050919050565b61447e81614453565b82525050565b60006020820190506144996000830184614475565b92915050565b7f4549503731323a20556e696e697469616c697a65640000000000000000000000600082015250565b60006144d5601583613761565b91506144e08261449f565b602082019050919050565b60006020820190508181036000830152614504816144c8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614567602583613761565b91506145728261450b565b604082019050919050565b600060208201905081810360008301526145968161455a565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b60006145d3601d83613761565b91506145de8261459d565b602082019050919050565b60006020820190508181036000830152614602816145c6565b9050919050565b600060c08201905061461e60008301896139bc565b61462b6020830188613c83565b6146386040830187613c83565b61464560608301866138dc565b61465260808301856138dc565b61465f60a08301846138dc565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b60006146a0601e83613761565b91506146ab8261466a565b602082019050919050565b600060208201905081810360008301526146cf81614693565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614732602483613761565b915061473d826146d6565b604082019050919050565b6000602082019050818103600083015261476181614725565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006147c4602283613761565b91506147cf82614768565b604082019050919050565b600060208201905081810360008301526147f3816147b7565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614830601d83613761565b915061483b826147fa565b602082019050919050565b6000602082019050818103600083015261485f81614823565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006148c2602583613761565b91506148cd82614866565b604082019050919050565b600060208201905081810360008301526148f1816148b5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614954602383613761565b915061495f826148f8565b604082019050919050565b6000602082019050818103600083015261498381614947565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006149e6602683613761565b91506149f18261498a565b604082019050919050565b60006020820190508181036000830152614a15816149d9565b9050919050565b600081519050614a2b81613963565b92915050565b600060208284031215614a4757614a46613691565b5b6000614a5584828501614a1c565b91505092915050565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b6000614aba602e83613761565b9150614ac582614a5e565b604082019050919050565b60006020820190508181036000830152614ae981614aad565b9050919050565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b6000614b4c602983613761565b9150614b5782614af0565b604082019050919050565b60006020820190508181036000830152614b7b81614b3f565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bde602183613761565b9150614be982614b82565b604082019050919050565b60006020820190508181036000830152614c0d81614bd1565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c70602283613761565b9150614c7b82614c14565b604082019050919050565b60006020820190508181036000830152614c9f81614c63565b9050919050565b7f4552433230536e617073686f743a206964206973203000000000000000000000600082015250565b6000614cdc601683613761565b9150614ce782614ca6565b602082019050919050565b60006020820190508181036000830152614d0b81614ccf565b9050919050565b7f4552433230536e617073686f743a206e6f6e6578697374656e74206964000000600082015250565b6000614d48601d83613761565b9150614d5382614d12565b602082019050919050565b60006020820190508181036000830152614d7781614d3b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000614e09602b83613761565b9150614e1482614dad565b604082019050919050565b60006020820190508181036000830152614e3881614dfc565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000614e75601f83613761565b9150614e8082614e3f565b602082019050919050565b60006020820190508181036000830152614ea481614e68565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000614eec601783614eab565b9150614ef782614eb6565b601782019050919050565b6000614f0d82613756565b614f178185614eab565b9350614f27818560208601613772565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000614f69601183614eab565b9150614f7482614f33565b601182019050919050565b6000614f8a82614edf565b9150614f968285614f02565b9150614fa182614f5c565b9150614fad8284614f02565b91508190509392505050565b600060a082019050614fce60008301886139bc565b614fdb60208301876139bc565b614fe860408301866139bc565b614ff560608301856138dc565b6150026080830184613c83565b9695505050505050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b6000615068602d83613761565b91506150738261500c565b604082019050919050565b600060208201905081810360008301526150978161505b565b9050919050565b60006150a982613866565b91506150b483613866565b92508282039050818111156150cc576150cb6140f8565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026151347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826150f7565b61513e86836150f7565b95508019841693508086168417925050509392505050565b600061517161516c61516784613866565b614449565b613866565b9050919050565b6000819050919050565b61518b83615156565b61519f61519782615178565b848454615104565b825550505050565b600090565b6151b46151a7565b6151bf818484615182565b505050565b5b818110156151e3576151d86000826151ac565b6001810190506151c5565b5050565b601f821115615228576151f9816150d2565b615202846150e7565b81016020851015615211578190505b61522561521d856150e7565b8301826151c4565b50505b505050565b600082821c905092915050565b600061524b6000198460080261522d565b1980831691505092915050565b6000615264838361523a565b9150826002028217905092915050565b61527d82613756565b67ffffffffffffffff81111561529657615295613ac1565b5b6152a08254613f11565b6152ab8282856151e7565b600060209050601f8311600181146152de57600084156152cc578287015190505b6152d68582615258565b86555061533e565b601f1984166152ec866150d2565b60005b82811015615314578489015182556001820191506020850194506020810190506152ef565b86831015615331578489015161532d601f89168261523a565b8355505b6001600288020188555050505b505050505050565b600060808201905061535b60008301876139bc565b6153686020830186613a33565b61537560408301856139bc565b61538260608301846139bc565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006153f0601883613761565b91506153fb826153ba565b602082019050919050565b6000602082019050818103600083015261541f816153e3565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b600061545c601f83613761565b915061546782615426565b602082019050919050565b6000602082019050818103600083015261548b8161544f565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b60006154ee602283613761565b91506154f982615492565b604082019050919050565b6000602082019050818103600083015261551d816154e1565b9050919050565b600061552f82613866565b915060008203615542576155416140f8565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615583602083613761565b915061558e8261554d565b602082019050919050565b600060208201905081810360008301526155b281615576565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006155f382613866565b91506155fe83613866565b92508261560e5761560d6155b9565b5b828204905092915050565b600081519050919050565b600081905092915050565b600061563a82615619565b6156448185615624565b9350615654818560208601613772565b80840191505092915050565b600061566c828461562f565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b60006156ad601d83613761565b91506156b882615677565b602082019050919050565b600060208201905081810360008301526156dc816156a0565b905091905056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220575fe0537769aeb7a847e46dcbd75ff30362dbc19a203969a99d69453a233e3764736f6c63430008120033