@angular/core
Advanced tools
Comparing version 19.1.7 to 19.1.8
{ | ||
"name": "@angular/core", | ||
"version": "19.1.7", | ||
"version": "19.1.8", | ||
"description": "Angular - the core framework", | ||
@@ -5,0 +5,0 @@ "author": "angular", |
/** | ||
* @license Angular v19.1.7 | ||
* @license Angular v19.1.8 | ||
* (c) 2010-2024 Google LLC. https://angular.io/ | ||
@@ -4,0 +4,0 @@ * License: MIT |
/** | ||
* @license Angular v19.1.7 | ||
* @license Angular v19.1.8 | ||
* (c) 2010-2024 Google LLC. https://angular.io/ | ||
@@ -4,0 +4,0 @@ * License: MIT |
/** | ||
* @license Angular v19.1.7 | ||
* @license Angular v19.1.8 | ||
* (c) 2010-2024 Google LLC. https://angular.io/ | ||
@@ -4,0 +4,0 @@ * License: MIT |
'use strict'; | ||
/** | ||
* @license Angular v19.1.7 | ||
* @license Angular v19.1.8 | ||
* (c) 2010-2024 Google LLC. https://angular.io/ | ||
@@ -12,4 +12,4 @@ * License: MIT | ||
var schematics = require('@angular-devkit/schematics'); | ||
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js'); | ||
var apply_import_manager = require('./apply_import_manager-3220dafc.js'); | ||
var project_tsconfig_paths = require('./project_tsconfig_paths-6c9cde78.js'); | ||
var apply_import_manager = require('./apply_import_manager-0648daae.js'); | ||
require('os'); | ||
@@ -16,0 +16,0 @@ var ts = require('typescript'); |
'use strict'; | ||
/** | ||
* @license Angular v19.1.7 | ||
* @license Angular v19.1.8 | ||
* (c) 2010-2024 Google LLC. https://angular.io/ | ||
@@ -13,6 +13,6 @@ * License: MIT | ||
var p = require('path'); | ||
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js'); | ||
var compiler_host = require('./compiler_host-833d3812.js'); | ||
var project_tsconfig_paths = require('./project_tsconfig_paths-6c9cde78.js'); | ||
var compiler_host = require('./compiler_host-9208f64f.js'); | ||
var ts = require('typescript'); | ||
var imports = require('./imports-abe29092.js'); | ||
var imports = require('./imports-31a38653.js'); | ||
require('@angular-devkit/core'); | ||
@@ -19,0 +19,0 @@ require('./checker-2bdbb582.js'); |
'use strict'; | ||
/** | ||
* @license Angular v19.1.7 | ||
* @license Angular v19.1.8 | ||
* (c) 2010-2024 Google LLC. https://angular.io/ | ||
@@ -20,3 +20,3 @@ * License: MIT | ||
*/ | ||
new checker.Version('19.1.7'); | ||
new checker.Version('19.1.8'); | ||
@@ -23,0 +23,0 @@ var LogLevel; |
'use strict'; | ||
/** | ||
* @license Angular v19.1.7 | ||
* @license Angular v19.1.8 | ||
* (c) 2010-2024 Google LLC. https://angular.io/ | ||
@@ -13,7 +13,7 @@ * License: MIT | ||
var p = require('path'); | ||
var compiler_host = require('./compiler_host-833d3812.js'); | ||
var compiler_host = require('./compiler_host-9208f64f.js'); | ||
var ts = require('typescript'); | ||
var nodes = require('./nodes-a9f0b985.js'); | ||
var imports = require('./imports-abe29092.js'); | ||
var leading_space = require('./leading_space-d190b83b.js'); | ||
var nodes = require('./nodes-88c2157f.js'); | ||
var imports = require('./imports-31a38653.js'); | ||
var leading_space = require('./leading_space-6e7a8ec6.js'); | ||
require('./checker-2bdbb582.js'); | ||
@@ -20,0 +20,0 @@ require('os'); |
'use strict'; | ||
/** | ||
* @license Angular v19.1.7 | ||
* @license Angular v19.1.8 | ||
* (c) 2010-2024 Google LLC. https://angular.io/ | ||
@@ -12,4 +12,4 @@ * License: MIT | ||
var schematics = require('@angular-devkit/schematics'); | ||
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js'); | ||
var apply_import_manager = require('./apply_import_manager-3220dafc.js'); | ||
var project_tsconfig_paths = require('./project_tsconfig_paths-6c9cde78.js'); | ||
var apply_import_manager = require('./apply_import_manager-0648daae.js'); | ||
require('os'); | ||
@@ -20,3 +20,3 @@ var ts = require('typescript'); | ||
require('path'); | ||
var index = require('./index-be586082.js'); | ||
var index = require('./index-4f59e07e.js'); | ||
require('@angular-devkit/core'); | ||
@@ -23,0 +23,0 @@ require('node:path/posix'); |
'use strict'; | ||
/** | ||
* @license Angular v19.1.7 | ||
* @license Angular v19.1.8 | ||
* (c) 2010-2024 Google LLC. https://angular.io/ | ||
@@ -13,6 +13,6 @@ * License: MIT | ||
var p = require('path'); | ||
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js'); | ||
var compiler_host = require('./compiler_host-833d3812.js'); | ||
var project_tsconfig_paths = require('./project_tsconfig_paths-6c9cde78.js'); | ||
var compiler_host = require('./compiler_host-9208f64f.js'); | ||
var ts = require('typescript'); | ||
var imports = require('./imports-abe29092.js'); | ||
var imports = require('./imports-31a38653.js'); | ||
require('@angular-devkit/core'); | ||
@@ -19,0 +19,0 @@ require('./checker-2bdbb582.js'); |
'use strict'; | ||
/** | ||
* @license Angular v19.1.7 | ||
* @license Angular v19.1.8 | ||
* (c) 2010-2024 Google LLC. https://angular.io/ | ||
@@ -13,6 +13,6 @@ * License: MIT | ||
var p = require('path'); | ||
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js'); | ||
var compiler_host = require('./compiler_host-833d3812.js'); | ||
var project_tsconfig_paths = require('./project_tsconfig_paths-6c9cde78.js'); | ||
var compiler_host = require('./compiler_host-9208f64f.js'); | ||
var ts = require('typescript'); | ||
var imports = require('./imports-abe29092.js'); | ||
var imports = require('./imports-31a38653.js'); | ||
require('@angular-devkit/core'); | ||
@@ -19,0 +19,0 @@ require('./checker-2bdbb582.js'); |
'use strict'; | ||
/** | ||
* @license Angular v19.1.7 | ||
* @license Angular v19.1.8 | ||
* (c) 2010-2024 Google LLC. https://angular.io/ | ||
@@ -14,4 +14,4 @@ * License: MIT | ||
var p = require('path'); | ||
var compiler_host = require('./compiler_host-833d3812.js'); | ||
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js'); | ||
var compiler_host = require('./compiler_host-9208f64f.js'); | ||
var project_tsconfig_paths = require('./project_tsconfig_paths-6c9cde78.js'); | ||
var ts = require('typescript'); | ||
@@ -18,0 +18,0 @@ var checker = require('./checker-2bdbb582.js'); |
'use strict'; | ||
/** | ||
* @license Angular v19.1.7 | ||
* @license Angular v19.1.8 | ||
* (c) 2010-2024 Google LLC. https://angular.io/ | ||
@@ -12,4 +12,4 @@ * License: MIT | ||
var schematics = require('@angular-devkit/schematics'); | ||
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js'); | ||
var apply_import_manager = require('./apply_import_manager-3220dafc.js'); | ||
var project_tsconfig_paths = require('./project_tsconfig_paths-6c9cde78.js'); | ||
var apply_import_manager = require('./apply_import_manager-0648daae.js'); | ||
require('os'); | ||
@@ -20,5 +20,5 @@ var ts = require('typescript'); | ||
require('path'); | ||
var migrate_ts_type_references = require('./migrate_ts_type_references-d2b2e8f1.js'); | ||
var migrate_ts_type_references = require('./migrate_ts_type_references-8541f425.js'); | ||
var assert = require('assert'); | ||
var index = require('./index-be586082.js'); | ||
var index = require('./index-4f59e07e.js'); | ||
require('@angular-devkit/core'); | ||
@@ -29,3 +29,3 @@ require('node:path/posix'); | ||
require('url'); | ||
require('./leading_space-d190b83b.js'); | ||
require('./leading_space-6e7a8ec6.js'); | ||
@@ -32,0 +32,0 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } |
'use strict'; | ||
/** | ||
* @license Angular v19.1.7 | ||
* @license Angular v19.1.8 | ||
* (c) 2010-2024 Google LLC. https://angular.io/ | ||
@@ -15,5 +15,5 @@ * License: MIT | ||
var outputMigration = require('./output-migration.js'); | ||
require('./project_tsconfig_paths-e9ccccbf.js'); | ||
require('./project_tsconfig_paths-6c9cde78.js'); | ||
require('@angular-devkit/core'); | ||
require('./apply_import_manager-3220dafc.js'); | ||
require('./apply_import_manager-0648daae.js'); | ||
require('node:path/posix'); | ||
@@ -28,6 +28,6 @@ require('os'); | ||
require('./program-f43dcb10.js'); | ||
require('./migrate_ts_type_references-d2b2e8f1.js'); | ||
require('./migrate_ts_type_references-8541f425.js'); | ||
require('assert'); | ||
require('./index-be586082.js'); | ||
require('./leading_space-d190b83b.js'); | ||
require('./index-4f59e07e.js'); | ||
require('./leading_space-6e7a8ec6.js'); | ||
@@ -34,0 +34,0 @@ function migrate(options) { |
/** | ||
* @license Angular v19.1.7 | ||
* @license Angular v19.1.8 | ||
* (c) 2010-2024 Google LLC. https://angular.io/ | ||
@@ -195,2 +195,38 @@ * License: MIT | ||
/** | ||
* Fake equivalent of `NavigationHistoryEntry`. | ||
*/ | ||
declare class FakeNavigationHistoryEntry implements NavigationHistoryEntry { | ||
readonly url: string | null; | ||
readonly sameDocument: boolean; | ||
readonly id: string; | ||
readonly key: string; | ||
readonly index: number; | ||
private readonly state; | ||
private readonly historyState; | ||
ondispose: ((this: NavigationHistoryEntry, ev: Event) => any) | null; | ||
constructor(url: string | null, { id, key, index, sameDocument, state, historyState, }: { | ||
id: string; | ||
key: string; | ||
index: number; | ||
sameDocument: boolean; | ||
historyState: unknown; | ||
state?: unknown; | ||
}); | ||
getState(): unknown; | ||
getHistoryState(): unknown; | ||
addEventListener(type: string, callback: EventListenerOrEventListenerObject, options?: AddEventListenerOptions | boolean): void; | ||
removeEventListener(type: string, callback: EventListenerOrEventListenerObject, options?: EventListenerOptions | boolean): void; | ||
dispatchEvent(event: Event): boolean; | ||
} | ||
/** | ||
* Fake equivalent of the `NavigationResult` interface with | ||
* `FakeNavigationHistoryEntry`. | ||
*/ | ||
declare interface FakeNavigationResult extends NavigationResult { | ||
readonly committed: Promise<FakeNavigationHistoryEntry>; | ||
readonly finished: Promise<FakeNavigationHistoryEntry>; | ||
} | ||
/** | ||
* Flushes any pending microtasks and simulates the asynchronous passage of time for the timers in | ||
@@ -279,2 +315,133 @@ * the `fakeAsync` zone by | ||
declare class NavigateEvent extends Event { | ||
constructor(type: string, eventInit?: NavigateEventInit); | ||
readonly navigationType: NavigationTypeString; | ||
readonly canIntercept: boolean; | ||
readonly userInitiated: boolean; | ||
readonly hashChange: boolean; | ||
readonly destination: NavigationDestination; | ||
readonly signal: AbortSignal; | ||
readonly formData: FormData | null; | ||
readonly downloadRequest: string | null; | ||
readonly info?: unknown; | ||
intercept(options?: NavigationInterceptOptions): void; | ||
scroll(): void; | ||
} | ||
declare interface NavigateEventInit extends EventInit { | ||
navigationType?: NavigationTypeString; | ||
canIntercept?: boolean; | ||
userInitiated?: boolean; | ||
hashChange?: boolean; | ||
destination: NavigationDestination; | ||
signal: AbortSignal; | ||
formData?: FormData | null; | ||
downloadRequest?: string | null; | ||
info?: unknown; | ||
} | ||
declare class Navigation extends EventTarget { | ||
entries(): NavigationHistoryEntry[]; | ||
readonly currentEntry: NavigationHistoryEntry | null; | ||
updateCurrentEntry(options: NavigationUpdateCurrentEntryOptions): void; | ||
readonly transition: NavigationTransition | null; | ||
readonly canGoBack: boolean; | ||
readonly canGoForward: boolean; | ||
navigate(url: string, options?: NavigationNavigateOptions): NavigationResult; | ||
reload(options?: NavigationReloadOptions): NavigationResult; | ||
traverseTo(key: string, options?: NavigationOptions): NavigationResult; | ||
back(options?: NavigationOptions): NavigationResult; | ||
forward(options?: NavigationOptions): NavigationResult; | ||
onnavigate: ((this: Navigation, ev: NavigateEvent) => any) | null; | ||
onnavigatesuccess: ((this: Navigation, ev: Event) => any) | null; | ||
onnavigateerror: ((this: Navigation, ev: ErrorEvent) => any) | null; | ||
oncurrententrychange: ((this: Navigation, ev: NavigationCurrentEntryChangeEvent) => any) | null; | ||
addEventListener<K extends keyof NavigationEventMap>(type: K, listener: (this: Navigation, ev: NavigationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; | ||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; | ||
removeEventListener<K extends keyof NavigationEventMap>(type: K, listener: (this: Navigation, ev: NavigationEventMap[K]) => any, options?: boolean | EventListenerOptions): void; | ||
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; | ||
} | ||
declare class NavigationCurrentEntryChangeEvent extends Event { | ||
constructor(type: string, eventInit?: NavigationCurrentEntryChangeEventInit); | ||
readonly navigationType: NavigationTypeString | null; | ||
readonly from: NavigationHistoryEntry; | ||
} | ||
declare interface NavigationCurrentEntryChangeEventInit extends EventInit { | ||
navigationType?: NavigationTypeString | null; | ||
from: NavigationHistoryEntry; | ||
} | ||
declare class NavigationDestination { | ||
readonly url: string; | ||
readonly key: string | null; | ||
readonly id: string | null; | ||
readonly index: number; | ||
readonly sameDocument: boolean; | ||
getState(): unknown; | ||
} | ||
declare interface NavigationEventMap { | ||
navigate: NavigateEvent; | ||
navigatesuccess: Event; | ||
navigateerror: ErrorEvent; | ||
currententrychange: NavigationCurrentEntryChangeEvent; | ||
} | ||
declare class NavigationHistoryEntry extends EventTarget { | ||
readonly key: string; | ||
readonly id: string; | ||
readonly url: string | null; | ||
readonly index: number; | ||
readonly sameDocument: boolean; | ||
getState(): unknown; | ||
ondispose: ((this: NavigationHistoryEntry, ev: Event) => any) | null; | ||
addEventListener<K extends keyof NavigationHistoryEntryEventMap>(type: K, listener: (this: NavigationHistoryEntry, ev: NavigationHistoryEntryEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; | ||
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; | ||
removeEventListener<K extends keyof NavigationHistoryEntryEventMap>(type: K, listener: (this: NavigationHistoryEntry, ev: NavigationHistoryEntryEventMap[K]) => any, options?: boolean | EventListenerOptions): void; | ||
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; | ||
} | ||
declare interface NavigationHistoryEntryEventMap { | ||
dispose: Event; | ||
} | ||
declare interface NavigationInterceptOptions { | ||
handler?: () => Promise<void>; | ||
focusReset?: 'after-transition' | 'manual'; | ||
scroll?: 'after-transition' | 'manual'; | ||
} | ||
declare interface NavigationNavigateOptions extends NavigationOptions { | ||
state?: unknown; | ||
history?: 'auto' | 'push' | 'replace'; | ||
} | ||
declare interface NavigationOptions { | ||
info?: unknown; | ||
} | ||
declare interface NavigationReloadOptions extends NavigationOptions { | ||
state?: unknown; | ||
} | ||
declare interface NavigationResult { | ||
committed: Promise<NavigationHistoryEntry>; | ||
finished: Promise<NavigationHistoryEntry>; | ||
} | ||
declare class NavigationTransition { | ||
readonly navigationType: NavigationTypeString; | ||
readonly from: NavigationHistoryEntry; | ||
readonly finished: Promise<void>; | ||
} | ||
declare type NavigationTypeString = 'reload' | 'push' | 'replace' | 'traverse'; | ||
declare interface NavigationUpdateCurrentEntryOptions { | ||
state: unknown; | ||
} | ||
/** | ||
@@ -562,2 +729,131 @@ * Clears out the shared fake async zone for a test. | ||
/** | ||
* Fake implementation of user agent history and navigation behavior. This is a | ||
* high-fidelity implementation of browser behavior that attempts to emulate | ||
* things like traversal delay. | ||
*/ | ||
export declare class ɵFakeNavigation implements Navigation { | ||
private readonly window; | ||
/** | ||
* The fake implementation of an entries array. Only same-document entries | ||
* allowed. | ||
*/ | ||
private readonly entriesArr; | ||
/** | ||
* The current active entry index into `entriesArr`. | ||
*/ | ||
private currentEntryIndex; | ||
/** | ||
* The current navigate event. | ||
*/ | ||
private navigateEvent; | ||
/** | ||
* A Map of pending traversals, so that traversals to the same entry can be | ||
* re-used. | ||
*/ | ||
private readonly traversalQueue; | ||
/** | ||
* A Promise that resolves when the previous traversals have finished. Used to | ||
* simulate the cross-process communication necessary for traversals. | ||
*/ | ||
private nextTraversal; | ||
/** | ||
* A prospective current active entry index, which includes unresolved | ||
* traversals. Used by `go` to determine where navigations are intended to go. | ||
*/ | ||
private prospectiveEntryIndex; | ||
/** | ||
* A test-only option to make traversals synchronous, rather than emulate | ||
* cross-process communication. | ||
*/ | ||
private synchronousTraversals; | ||
/** Whether to allow a call to setInitialEntryForTesting. */ | ||
private canSetInitialEntry; | ||
/** `EventTarget` to dispatch events. */ | ||
private eventTarget; | ||
/** The next unique id for created entries. Replace recreates this id. */ | ||
private nextId; | ||
/** The next unique key for created entries. Replace inherits this id. */ | ||
private nextKey; | ||
/** Whether this fake is disposed. */ | ||
private disposed; | ||
/** Equivalent to `navigation.currentEntry`. */ | ||
get currentEntry(): FakeNavigationHistoryEntry; | ||
get canGoBack(): boolean; | ||
get canGoForward(): boolean; | ||
constructor(window: Window, startURL: `http${string}`); | ||
/** | ||
* Sets the initial entry. | ||
*/ | ||
setInitialEntryForTesting(url: `http${string}`, options?: { | ||
historyState: unknown; | ||
state?: unknown; | ||
}): void; | ||
/** Returns whether the initial entry is still eligible to be set. */ | ||
canSetInitialEntryForTesting(): boolean; | ||
/** | ||
* Sets whether to emulate traversals as synchronous rather than | ||
* asynchronous. | ||
*/ | ||
setSynchronousTraversalsForTesting(synchronousTraversals: boolean): void; | ||
/** Equivalent to `navigation.entries()`. */ | ||
entries(): FakeNavigationHistoryEntry[]; | ||
/** Equivalent to `navigation.navigate()`. */ | ||
navigate(url: string, options?: NavigationNavigateOptions): FakeNavigationResult; | ||
/** Equivalent to `history.pushState()`. */ | ||
pushState(data: unknown, title: string, url?: string): void; | ||
/** Equivalent to `history.replaceState()`. */ | ||
replaceState(data: unknown, title: string, url?: string): void; | ||
private pushOrReplaceState; | ||
/** Equivalent to `navigation.traverseTo()`. */ | ||
traverseTo(key: string, options?: NavigationOptions): FakeNavigationResult; | ||
/** Equivalent to `navigation.back()`. */ | ||
back(options?: NavigationOptions): FakeNavigationResult; | ||
/** Equivalent to `navigation.forward()`. */ | ||
forward(options?: NavigationOptions): FakeNavigationResult; | ||
/** | ||
* Equivalent to `history.go()`. | ||
* Note that this method does not actually work precisely to how Chrome | ||
* does, instead choosing a simpler model with less unexpected behavior. | ||
* Chrome has a few edge case optimizations, for instance with repeated | ||
* `back(); forward()` chains it collapses certain traversals. | ||
*/ | ||
go(direction: number): void; | ||
/** Runs a traversal synchronously or asynchronously */ | ||
private runTraversal; | ||
/** Equivalent to `navigation.addEventListener()`. */ | ||
addEventListener(type: string, callback: EventListenerOrEventListenerObject, options?: AddEventListenerOptions | boolean): void; | ||
/** Equivalent to `navigation.removeEventListener()`. */ | ||
removeEventListener(type: string, callback: EventListenerOrEventListenerObject, options?: EventListenerOptions | boolean): void; | ||
/** Equivalent to `navigation.dispatchEvent()` */ | ||
dispatchEvent(event: Event): boolean; | ||
/** Cleans up resources. */ | ||
dispose(): void; | ||
/** Returns whether this fake is disposed. */ | ||
isDisposed(): boolean; | ||
/** Implementation for all navigations and traversals. */ | ||
private userAgentNavigate; | ||
/** Implementation to commit a navigation. */ | ||
private userAgentCommit; | ||
/** Implementation for a push or replace navigation. */ | ||
private userAgentPushOrReplace; | ||
/** Implementation for a traverse navigation. */ | ||
private userAgentTraverse; | ||
/** Utility method for finding entries with the given `key`. */ | ||
private findEntry; | ||
set onnavigate(_handler: ((this: Navigation, ev: NavigateEvent) => any) | null); | ||
get onnavigate(): ((this: Navigation, ev: NavigateEvent) => any) | null; | ||
set oncurrententrychange(_handler: // tslint:disable-next-line:no-any | ||
((this: Navigation, ev: NavigationCurrentEntryChangeEvent) => any) | null); | ||
get oncurrententrychange(): // tslint:disable-next-line:no-any | ||
((this: Navigation, ev: NavigationCurrentEntryChangeEvent) => any) | null; | ||
set onnavigatesuccess(_handler: ((this: Navigation, ev: Event) => any) | null); | ||
get onnavigatesuccess(): ((this: Navigation, ev: Event) => any) | null; | ||
set onnavigateerror(_handler: ((this: Navigation, ev: ErrorEvent) => any) | null); | ||
get onnavigateerror(): ((this: Navigation, ev: ErrorEvent) => any) | null; | ||
get transition(): NavigationTransition | null; | ||
updateCurrentEntry(_options: NavigationUpdateCurrentEntryOptions): void; | ||
reload(_options?: NavigationReloadOptions): NavigationResult; | ||
} | ||
export declare class ɵMetadataOverrider { | ||
@@ -564,0 +860,0 @@ private _references; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
10108075
148818
11
19
3
114