'use strict'; 
 | 
var shared = require('../internals/shared'); 
 | 
var getBuiltIn = require('../internals/get-built-in'); 
 | 
var uncurryThis = require('../internals/function-uncurry-this'); 
 | 
var isSymbol = require('../internals/is-symbol'); 
 | 
var wellKnownSymbol = require('../internals/well-known-symbol'); 
 | 
  
 | 
var Symbol = getBuiltIn('Symbol'); 
 | 
var $isWellKnownSymbol = Symbol.isWellKnownSymbol; 
 | 
var getOwnPropertyNames = getBuiltIn('Object', 'getOwnPropertyNames'); 
 | 
var thisSymbolValue = uncurryThis(Symbol.prototype.valueOf); 
 | 
var WellKnownSymbolsStore = shared('wks'); 
 | 
  
 | 
for (var i = 0, symbolKeys = getOwnPropertyNames(Symbol), symbolKeysLength = symbolKeys.length; i < symbolKeysLength; i++) { 
 | 
  // some old engines throws on access to some keys like `arguments` or `caller` 
 | 
  try { 
 | 
    var symbolKey = symbolKeys[i]; 
 | 
    if (isSymbol(Symbol[symbolKey])) wellKnownSymbol(symbolKey); 
 | 
  } catch (error) { /* empty */ } 
 | 
} 
 | 
  
 | 
// `Symbol.isWellKnownSymbol` method 
 | 
// https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol 
 | 
// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected 
 | 
module.exports = function isWellKnownSymbol(value) { 
 | 
  if ($isWellKnownSymbol && $isWellKnownSymbol(value)) return true; 
 | 
  try { 
 | 
    var symbol = thisSymbolValue(value); 
 | 
    for (var j = 0, keys = getOwnPropertyNames(WellKnownSymbolsStore), keysLength = keys.length; j < keysLength; j++) { 
 | 
      // eslint-disable-next-line eqeqeq -- polyfilled symbols case 
 | 
      if (WellKnownSymbolsStore[keys[j]] == symbol) return true; 
 | 
    } 
 | 
  } catch (error) { /* empty */ } 
 | 
  return false; 
 | 
}; 
 |