function $AdfSafariAgent$$($version$$42$$, $domWindow$$45$$) {
  this.Init($version$$42$$, $domWindow$$45$$)
}
$goog$exportSymbol$$("AdfSafariAgent", $AdfSafariAgent$$);
$AdfObject$$.$createSubclass$($AdfSafariAgent$$, $AdfAgent$$);
$AdfSafariAgent$$.prototype.Init = function $$AdfSafariAgent$$$$Init$($version$$43$$, $domWindow$$46$$) {
  $AdfSafariAgent$$.$superclass$.Init.call(this, $AdfAgent$$.$WEBKIT_PLATFORM$, $AdfAgent$$.$guessOS$(), $version$$43$$, $domWindow$$46$$)
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.Init", {Init:$AdfSafariAgent$$.prototype.Init});
$AdfSafariAgent$$.prototype.$getWindowScrollWidth$ = function $$AdfSafariAgent$$$$$getWindowScrollWidth$$($domWindow$$47$$) {
  return $domWindow$$47$$.document.body.scrollWidth
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.getWindowScrollWidth", {$getWindowScrollWidth$:$AdfSafariAgent$$.prototype.$getWindowScrollWidth$});
$AdfSafariAgent$$.prototype.$getWindowScrollHeight$ = function $$AdfSafariAgent$$$$$getWindowScrollHeight$$($domWindow$$48$$) {
  return $domWindow$$48$$.document.body.scrollHeight
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.getWindowScrollHeight", {$getWindowScrollHeight$:$AdfSafariAgent$$.prototype.$getWindowScrollHeight$});
$AdfSafariAgent$$.prototype.$getBrowserViewportScrollTop$ = function $$AdfSafariAgent$$$$$getBrowserViewportScrollTop$$() {
  var $agentName$$4$$ = navigator.userAgent, $domDoc$$4$$ = this.$getDomDocument$();
  return-1 != $agentName$$4$$.indexOf("Chrome") && 61 <= $AdfSafariAgent$$.$__getAgentVersion$($agentName$$4$$) ? $domDoc$$4$$.documentElement.scrollTop : -1 != $agentName$$4$$.indexOf("Safari") && 13 <= $AdfSafariAgent$$.$__getAgentVersion$($agentName$$4$$) ? this.$getDomWindow$().pageYOffset : $domDoc$$4$$.body.scrollTop
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.getBrowserViewportScrollTop", {$getBrowserViewportScrollTop$:$AdfSafariAgent$$.prototype.$getBrowserViewportScrollTop$});
$AdfSafariAgent$$.prototype.$getBrowserViewportScrollLeft$ = function $$AdfSafariAgent$$$$$getBrowserViewportScrollLeft$$() {
  var $agentName$$5$$ = navigator.userAgent, $domDoc$$5$$ = this.$getDomDocument$();
  return-1 != $agentName$$5$$.indexOf("Chrome") && 61 <= $AdfSafariAgent$$.$__getAgentVersion$($agentName$$5$$) ? $domDoc$$5$$.documentElement.scrollLeft : -1 != $agentName$$5$$.indexOf("Safari") && 13 <= $AdfSafariAgent$$.$__getAgentVersion$($agentName$$5$$) ? this.$getDomWindow$().pageXOffset : $domDoc$$5$$.body.scrollLeft
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.getBrowserViewportScrollLeft", {$getBrowserViewportScrollLeft$:$AdfSafariAgent$$.prototype.$getBrowserViewportScrollLeft$});
$AdfSafariAgent$$.prototype.$InitClass$ = function $$AdfSafariAgent$$$$$InitClass$$() {
  var $modifierDisplayStrings$$2$$ = [];
  $modifierDisplayStrings$$2$$[$AdfKeyStroke$$.$CTRL_MASK$] = "Ctrl";
  $modifierDisplayStrings$$2$$[$AdfKeyStroke$$.$SHIFT_MASK$] = "Shift";
  $modifierDisplayStrings$$2$$[$AdfKeyStroke$$.$ALT_MASK$] = "Option";
  $modifierDisplayStrings$$2$$[$AdfKeyStroke$$.$META_MASK$] = "Cmd";
  this.$_MODIFIER_DISPLAY_NAMES$ = $modifierDisplayStrings$$2$$
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.InitClass", {$InitClass$:$AdfSafariAgent$$.prototype.$InitClass$});
$AdfSafariAgent$$.prototype.$CreateDefaultLogWriter$ = $JSCompiler_identityFn$$();
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.CreateDefaultLogWriter", {$CreateDefaultLogWriter$:$AdfSafariAgent$$.prototype.$CreateDefaultLogWriter$});
$AdfSafariAgent$$.prototype.$CreateNativeLogWriter$ = function $$AdfSafariAgent$$$$$CreateNativeLogWriter$$() {
  var $domWindow$$51$$ = this.$getDomWindow$();
  return $domWindow$$51$$.console ? new $AdfSafariLogWriter$$($domWindow$$51$$, new $AdfAlertLogWriter$$) : new $AdfAlertLogWriter$$
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.CreateNativeLogWriter", {$CreateNativeLogWriter$:$AdfSafariAgent$$.prototype.$CreateNativeLogWriter$});
$AdfSafariAgent$$.prototype.execScript = function $$AdfSafariAgent$$$$execScript$($ownerWindow$$2$$, $scriptText$$3$$) {
  var $document$$8$$ = $ownerWindow$$2$$.document, $scriptParent$$ = $document$$8$$.body;
  if($scriptParent$$ == $JSCompiler_alias_NULL$$) {
    with($ownerWindow$$2$$) {
      $ownerWindow$$2$$.eval($scriptText$$3$$)
    }
  }else {
    var $scriptElem$$ = $document$$8$$.createElement("script");
    $scriptElem$$.setAttribute("type", "text/javascript");
    $scriptElem$$.appendChild($document$$8$$.createTextNode($scriptText$$3$$));
    $scriptParent$$.appendChild($scriptElem$$);
    $scriptParent$$.removeChild($scriptElem$$)
  }
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.execScript", {execScript:$AdfSafariAgent$$.prototype.execScript});
$AdfSafariAgent$$.prototype.$disableUserSelect$ = function $$AdfSafariAgent$$$$$disableUserSelect$$($element$$130$$) {
  $element$$130$$.style.setProperty("-webkit-user-select", "none")
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.disableUserSelect", {$disableUserSelect$:$AdfSafariAgent$$.prototype.$disableUserSelect$});
$AdfSafariAgent$$.prototype.$enableUserSelect$ = function $$AdfSafariAgent$$$$$enableUserSelect$$($element$$131$$) {
  $element$$131$$.style.setProperty("-webkit-user-select", "")
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.enableUserSelect", {$enableUserSelect$:$AdfSafariAgent$$.prototype.$enableUserSelect$});
$AdfSafariAgent$$.prototype.$getBoxSizing$ = function $$AdfSafariAgent$$$$$getBoxSizing$$($element$$132$$, $currentStyle$$11$$) {
  $currentStyle$$11$$ || ($currentStyle$$11$$ = this.getComputedStyle($element$$132$$));
  return $currentStyle$$11$$.getPropertyValue("-webkit-box-sizing")
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.getBoxSizing", {$getBoxSizing$:$AdfSafariAgent$$.prototype.$getBoxSizing$});
$AdfSafariAgent$$.prototype.$getModifierDisplayName$ = function $$AdfSafariAgent$$$$$getModifierDisplayName$$($modifier$$1$$) {
  return this.$getOs$() != $AdfAgent$$.$MAC_OS$ ? $AdfSafariAgent$$.$superclass$.$getModifierDisplayName$.call(this, $modifier$$1$$) : $AdfSafariAgent$$.$_MODIFIER_DISPLAY_NAMES$[$modifier$$1$$]
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.getModifierDisplayName", {$getModifierDisplayName$:$AdfSafariAgent$$.prototype.$getModifierDisplayName$});
$AdfSafariAgent$$.prototype.$isSessionStorageEnabled$ = function $$AdfSafariAgent$$$$$isSessionStorageEnabled$$() {
  if(this.$_isSessionStorageEnabled$ === $JSCompiler_alias_VOID$$) {
    try {
      sessionStorage.setItem("_adfTestKey", "on"), sessionStorage.removeItem("_adfTestKey"), this.$_isSessionStorageEnabled$ = $JSCompiler_alias_TRUE$$
    }catch($e$$69$$) {
      "QUOTA_EXCEEDED_ERR" === $e$$69$$.name && 22 == $e$$69$$.code ? $AdfLogger$$.$LOGGER$.fine("Access to sessionStorage has been disabled because 'private browsing' is enabled. As a result user activity monitoring has been disabled. Name: " + $e$$69$$.name + ", Message: " + $e$$69$$.message) : $AdfLogger$$.$LOGGER$.fine("Access to sessionStorage failed for some unexpected reason. As a result user activity monitoring has been disabled. Name: " + $e$$69$$.name + ", Message: " + $e$$69$$.message), 
      this.$_isSessionStorageEnabled$ = $JSCompiler_alias_FALSE$$
    }
  }
  return this.$_isSessionStorageEnabled$
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.isSessionStorageEnabled", {$isSessionStorageEnabled$:$AdfSafariAgent$$.prototype.$isSessionStorageEnabled$});
$AdfSafariAgent$$.prototype.$CreateUIInputEvent$ = function $$AdfSafariAgent$$$$$CreateUIInputEvent$$($component$$202$$, $type$$100$$, $nativeEvent$$20$$) {
  return new $AdfSafariUIInputEvent$$($component$$202$$, $type$$100$$, $nativeEvent$$20$$)
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.CreateUIInputEvent", {$CreateUIInputEvent$:$AdfSafariAgent$$.prototype.$CreateUIInputEvent$});
$AdfSafariAgent$$.prototype.$cloneEvent$ = function $$AdfSafariAgent$$$$$cloneEvent$$($event$$70$$, $newTarget$$10$$) {
  var $eventType$$29$$ = $event$$70$$.type;
  if("load" == $eventType$$29$$) {
    if(-1 == navigator.userAgent.toLowerCase().indexOf("chrome")) {
      return $AdfSafariAgent$$.$superclass$.$cloneEvent$.call(this, $event$$70$$, $newTarget$$10$$)
    }
    var $targetNode$$12$$ = $newTarget$$10$$ ? $newTarget$$10$$ : $event$$70$$.target, $targetDocument$$9$$ = $targetNode$$12$$.ownerDocument, $newEvent$$10$$ = $targetDocument$$9$$.createEvent("Event");
    $newEvent$$10$$.initEvent("click", $JSCompiler_alias_FALSE$$, $JSCompiler_alias_FALSE$$);
    $targetDocument$$9$$.addEventListener($eventType$$29$$, this.stopPropagation, $JSCompiler_alias_TRUE$$);
    $targetNode$$12$$.dispatchEvent($newEvent$$10$$);
    $targetDocument$$9$$.removeEventListener($eventType$$29$$, this.stopPropagation, $JSCompiler_alias_TRUE$$);
    return $newEvent$$10$$
  }
  return $AdfSafariAgent$$.$superclass$.$cloneEvent$.call(this, $event$$70$$, $newTarget$$10$$)
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.cloneEvent", {$cloneEvent$:$AdfSafariAgent$$.prototype.$cloneEvent$});
$AdfSafariAgent$$.prototype.slice = function $$AdfSafariAgent$$$$slice$($file$$5$$, $startByte$$4$$, $stopByte$$4$$) {
  if(!("undefined" === typeof Blob || "undefined" === typeof Blob.prototype.slice && "undefined" === typeof Blob.prototype.webkitSlice)) {
    if($file$$5$$ == $JSCompiler_alias_NULL$$) {
      return $JSCompiler_alias_NULL$$
    }
    if($file$$5$$.slice) {
      return $file$$5$$.slice($startByte$$4$$, $stopByte$$4$$)
    }
    if($file$$5$$.webkitSlice) {
      return $file$$5$$.webkitSlice($startByte$$4$$, $stopByte$$4$$)
    }
  }
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.slice", {slice:$AdfSafariAgent$$.prototype.slice});
$AdfSafariAgent$$.$__getAgentVersion$ = function $$AdfSafariAgent$$$$__getAgentVersion$$($userAgent$$17$$) {
  var $version$$44$$;
  -1 != $userAgent$$17$$.indexOf("Chrome/") ? $version$$44$$ = $AdfAgent$$.$__parseFloatVersion$($userAgent$$17$$, /Chrome\/(\d+([.]\d+)*)/) : -1 != $userAgent$$17$$.indexOf("Version/") && ($version$$44$$ = $AdfAgent$$.$__parseFloatVersion$($userAgent$$17$$, /Version\/(\d+([.]\d+)*)/));
  return $version$$44$$
};
$AdfSafariAgent$$.$__getSupported$ = function $$AdfSafariAgent$$$$__getSupported$$($userAgent$$18$$, $version$$45$$) {
  var $supported$$2$$ = $JSCompiler_alias_TRUE$$;
  -1 != $userAgent$$18$$.indexOf("Chrome/") ? $version$$45$$ < $AdfAgent$$.$_MIN_CHROME_VERSION$ && ($supported$$2$$ = $JSCompiler_alias_FALSE$$) : -1 != $userAgent$$18$$.indexOf("Version/") && $version$$45$$ < $AdfAgent$$.$_MIN_SAFARI_VERSION$ && ($supported$$2$$ = $JSCompiler_alias_FALSE$$);
  return $supported$$2$$
};
$AdfSafariAgent$$.$__getSpecificAgentClassName$ = function $$AdfSafariAgent$$$$__getSpecificAgentClassName$$($userAgent$$19$$) {
  return-1 == $userAgent$$19$$.indexOf("Mobile") && -1 == $userAgent$$19$$.indexOf("Android") && -1 == $userAgent$$19$$.indexOf("iPhone") ? "AdfSafariAgent" : "AdfSafariMobileAgent"
};
$AdfSafariAgent$$.prototype.$createTouchMoveManager$ = function $$AdfSafariAgent$$$$$createTouchMoveManager$$($element$$133$$, $handlerCallback$$3$$, $touchCount$$3$$) {
  return new $AdfSafariTouchMoveManager$$($element$$133$$, $handlerCallback$$3$$, $touchCount$$3$$)
};
$AdfObject$$.$exportPrototypeSymbol$("AdfSafariAgent.prototype.createTouchMoveManager", {$createTouchMoveManager$:$AdfSafariAgent$$.prototype.$createTouchMoveManager$});
