|  | 'use strict'; | 
						
						
							|  | 
 | 
						
						
							|  | var reflectGetProto = require('./Reflect.getPrototypeOf'); | 
						
						
							|  | var originalGetProto = require('./Object.getPrototypeOf'); | 
						
						
							|  | 
 | 
						
						
							|  | var getDunderProto = require('dunder-proto/get'); | 
						
						
							|  | 
 | 
						
						
							|  | /** @type {import('.')} */ | 
						
						
							|  | module.exports = reflectGetProto | 
						
						
							|  | 	? function getProto(O) { | 
						
						
							|  | 		// @ts-expect-error TS can't narrow inside a closure, for some reason | 
						
						
							|  | 		return reflectGetProto(O); | 
						
						
							|  | 	} | 
						
						
							|  | 	: originalGetProto | 
						
						
							|  | 		? function getProto(O) { | 
						
						
							|  | 			if (!O || (typeof O !== 'object' && typeof O !== 'function')) { | 
						
						
							|  | 				throw new TypeError('getProto: not an object'); | 
						
						
							|  | 			} | 
						
						
							|  | 			// @ts-expect-error TS can't narrow inside a closure, for some reason | 
						
						
							|  | 			return originalGetProto(O); | 
						
						
							|  | 		} | 
						
						
							|  | 		: getDunderProto | 
						
						
							|  | 			? function getProto(O) { | 
						
						
							|  | 				// @ts-expect-error TS can't narrow inside a closure, for some reason | 
						
						
							|  | 				return getDunderProto(O); | 
						
						
							|  | 			} | 
						
						
							|  | 			: null;
 |