"use strict";
/**
 * @license Angular v12.0.0-next.0
 * (c) 2010-2020 Google LLC. https://angular.io/
 * License: MIT
 */!function(n){"function"==typeof define&&define.amd?define(n):n()}((function(){
/**
     * @license
     * Copyright Google LLC All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
Zone.__load_patch("jsonp",(function(n,o,e){o[o.__symbol__("jsonp")]=function c(t){if(t&&t.jsonp&&t.sendFuncName){var a=function(){};[t.successFuncName,t.failedFuncName].forEach((function(o){o&&(n[o]?e.patchMethod(n,o,(function(o){return function(c,t){var a=n[e.symbol("jsonTask")];return a?(a.callback=o,a.invoke.apply(c,t)):o.apply(c,t)}})):Object.defineProperty(n,o,{configurable:!0,enumerable:!0,get:function(){return function(){var c=n[e.symbol("jsonpTask")],t=n[e.symbol("jsonp"+o+"callback")];return c?(t&&(c.callback=t),n[e.symbol("jsonpTask")]=void 0,c.invoke.apply(this,arguments)):t?t.apply(this,arguments):null}},set:function(n){this[e.symbol("jsonp"+o+"callback")]=n}}))})),e.patchMethod(t.jsonp,t.sendFuncName,(function(c){return function(t,s){n[e.symbol("jsonpTask")]=o.current.scheduleMacroTask("jsonp",a,{},(function(n){return c.apply(t,s)}),a)}}))}}}))}));