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