| 
				
			 | 
			
			
				@@ -1,145 +0,0 @@ 
			 | 
		
	
		
			
			| 
				1
			 | 
			
				
			 | 
			
			
				-// This optional code is used to register a service worker. 
			 | 
		
	
		
			
			| 
				2
			 | 
			
				
			 | 
			
			
				-// register() is not called by default. 
			 | 
		
	
		
			
			| 
				3
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				4
			 | 
			
				
			 | 
			
			
				-// This lets the app load faster on subsequent visits in production, and gives 
			 | 
		
	
		
			
			| 
				5
			 | 
			
				
			 | 
			
			
				-// it offline capabilities. However, it also means that developers (and users) 
			 | 
		
	
		
			
			| 
				6
			 | 
			
				
			 | 
			
			
				-// will only see deployed updates on subsequent visits to a page, after all the 
			 | 
		
	
		
			
			| 
				7
			 | 
			
				
			 | 
			
			
				-// existing tabs open on the page have been closed, since previously cached 
			 | 
		
	
		
			
			| 
				8
			 | 
			
				
			 | 
			
			
				-// resources are updated in the background. 
			 | 
		
	
		
			
			| 
				9
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				10
			 | 
			
				
			 | 
			
			
				-// To learn more about the benefits of this model and instructions on how to 
			 | 
		
	
		
			
			| 
				11
			 | 
			
				
			 | 
			
			
				-// opt-in, read https://bit.ly/CRA-PWA 
			 | 
		
	
		
			
			| 
				12
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				13
			 | 
			
				
			 | 
			
			
				-const isLocalhost = Boolean( 
			 | 
		
	
		
			
			| 
				14
			 | 
			
				
			 | 
			
			
				-  window.location.hostname === 'localhost' || 
			 | 
		
	
		
			
			| 
				15
			 | 
			
				
			 | 
			
			
				-    // [::1] is the IPv6 localhost address. 
			 | 
		
	
		
			
			| 
				16
			 | 
			
				
			 | 
			
			
				-    window.location.hostname === '[::1]' || 
			 | 
		
	
		
			
			| 
				17
			 | 
			
				
			 | 
			
			
				-    // 127.0.0.0/8 are considered localhost for IPv4. 
			 | 
		
	
		
			
			| 
				18
			 | 
			
				
			 | 
			
			
				-    window.location.hostname.match( 
			 | 
		
	
		
			
			| 
				19
			 | 
			
				
			 | 
			
			
				-      /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ 
			 | 
		
	
		
			
			| 
				20
			 | 
			
				
			 | 
			
			
				-    ) 
			 | 
		
	
		
			
			| 
				21
			 | 
			
				
			 | 
			
			
				-); 
			 | 
		
	
		
			
			| 
				22
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				23
			 | 
			
				
			 | 
			
			
				-type Config = { 
			 | 
		
	
		
			
			| 
				24
			 | 
			
				
			 | 
			
			
				-  onSuccess?: (registration: ServiceWorkerRegistration) => void; 
			 | 
		
	
		
			
			| 
				25
			 | 
			
				
			 | 
			
			
				-  onUpdate?: (registration: ServiceWorkerRegistration) => void; 
			 | 
		
	
		
			
			| 
				26
			 | 
			
				
			 | 
			
			
				-}; 
			 | 
		
	
		
			
			| 
				27
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				28
			 | 
			
				
			 | 
			
			
				-export function register(config?: Config) { 
			 | 
		
	
		
			
			| 
				29
			 | 
			
				
			 | 
			
			
				-  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { 
			 | 
		
	
		
			
			| 
				30
			 | 
			
				
			 | 
			
			
				-    // The URL constructor is available in all browsers that support SW. 
			 | 
		
	
		
			
			| 
				31
			 | 
			
				
			 | 
			
			
				-    const publicUrl = new URL( 
			 | 
		
	
		
			
			| 
				32
			 | 
			
				
			 | 
			
			
				-      process.env.PUBLIC_URL, 
			 | 
		
	
		
			
			| 
				33
			 | 
			
				
			 | 
			
			
				-      window.location.href 
			 | 
		
	
		
			
			| 
				34
			 | 
			
				
			 | 
			
			
				-    ); 
			 | 
		
	
		
			
			| 
				35
			 | 
			
				
			 | 
			
			
				-    if (publicUrl.origin !== window.location.origin) { 
			 | 
		
	
		
			
			| 
				36
			 | 
			
				
			 | 
			
			
				-      // Our service worker won't work if PUBLIC_URL is on a different origin 
			 | 
		
	
		
			
			| 
				37
			 | 
			
				
			 | 
			
			
				-      // from what our page is served on. This might happen if a CDN is used to 
			 | 
		
	
		
			
			| 
				38
			 | 
			
				
			 | 
			
			
				-      // serve assets; see https://github.com/facebook/create-react-app/issues/2374 
			 | 
		
	
		
			
			| 
				39
			 | 
			
				
			 | 
			
			
				-      return; 
			 | 
		
	
		
			
			| 
				40
			 | 
			
				
			 | 
			
			
				-    } 
			 | 
		
	
		
			
			| 
				41
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				42
			 | 
			
				
			 | 
			
			
				-    window.addEventListener('load', () => { 
			 | 
		
	
		
			
			| 
				43
			 | 
			
				
			 | 
			
			
				-      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; 
			 | 
		
	
		
			
			| 
				44
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				45
			 | 
			
				
			 | 
			
			
				-      if (isLocalhost) { 
			 | 
		
	
		
			
			| 
				46
			 | 
			
				
			 | 
			
			
				-        // This is running on localhost. Let's check if a service worker still exists or not. 
			 | 
		
	
		
			
			| 
				47
			 | 
			
				
			 | 
			
			
				-        checkValidServiceWorker(swUrl, config); 
			 | 
		
	
		
			
			| 
				48
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				49
			 | 
			
				
			 | 
			
			
				-        // Add some additional logging to localhost, pointing developers to the 
			 | 
		
	
		
			
			| 
				50
			 | 
			
				
			 | 
			
			
				-        // service worker/PWA documentation. 
			 | 
		
	
		
			
			| 
				51
			 | 
			
				
			 | 
			
			
				-        navigator.serviceWorker.ready.then(() => { 
			 | 
		
	
		
			
			| 
				52
			 | 
			
				
			 | 
			
			
				-          console.log( 
			 | 
		
	
		
			
			| 
				53
			 | 
			
				
			 | 
			
			
				-            'This web app is being served cache-first by a service ' + 
			 | 
		
	
		
			
			| 
				54
			 | 
			
				
			 | 
			
			
				-              'worker. To learn more, visit https://bit.ly/CRA-PWA' 
			 | 
		
	
		
			
			| 
				55
			 | 
			
				
			 | 
			
			
				-          ); 
			 | 
		
	
		
			
			| 
				56
			 | 
			
				
			 | 
			
			
				-        }); 
			 | 
		
	
		
			
			| 
				57
			 | 
			
				
			 | 
			
			
				-      } else { 
			 | 
		
	
		
			
			| 
				58
			 | 
			
				
			 | 
			
			
				-        // Is not localhost. Just register service worker 
			 | 
		
	
		
			
			| 
				59
			 | 
			
				
			 | 
			
			
				-        registerValidSW(swUrl, config); 
			 | 
		
	
		
			
			| 
				60
			 | 
			
				
			 | 
			
			
				-      } 
			 | 
		
	
		
			
			| 
				61
			 | 
			
				
			 | 
			
			
				-    }); 
			 | 
		
	
		
			
			| 
				62
			 | 
			
				
			 | 
			
			
				-  } 
			 | 
		
	
		
			
			| 
				63
			 | 
			
				
			 | 
			
			
				-} 
			 | 
		
	
		
			
			| 
				64
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				65
			 | 
			
				
			 | 
			
			
				-function registerValidSW(swUrl: string, config?: Config) { 
			 | 
		
	
		
			
			| 
				66
			 | 
			
				
			 | 
			
			
				-  navigator.serviceWorker 
			 | 
		
	
		
			
			| 
				67
			 | 
			
				
			 | 
			
			
				-    .register(swUrl) 
			 | 
		
	
		
			
			| 
				68
			 | 
			
				
			 | 
			
			
				-    .then(registration => { 
			 | 
		
	
		
			
			| 
				69
			 | 
			
				
			 | 
			
			
				-      registration.onupdatefound = () => { 
			 | 
		
	
		
			
			| 
				70
			 | 
			
				
			 | 
			
			
				-        const installingWorker = registration.installing; 
			 | 
		
	
		
			
			| 
				71
			 | 
			
				
			 | 
			
			
				-        if (installingWorker == null) { 
			 | 
		
	
		
			
			| 
				72
			 | 
			
				
			 | 
			
			
				-          return; 
			 | 
		
	
		
			
			| 
				73
			 | 
			
				
			 | 
			
			
				-        } 
			 | 
		
	
		
			
			| 
				74
			 | 
			
				
			 | 
			
			
				-        installingWorker.onstatechange = () => { 
			 | 
		
	
		
			
			| 
				75
			 | 
			
				
			 | 
			
			
				-          if (installingWorker.state === 'installed') { 
			 | 
		
	
		
			
			| 
				76
			 | 
			
				
			 | 
			
			
				-            if (navigator.serviceWorker.controller) { 
			 | 
		
	
		
			
			| 
				77
			 | 
			
				
			 | 
			
			
				-              // At this point, the updated precached content has been fetched, 
			 | 
		
	
		
			
			| 
				78
			 | 
			
				
			 | 
			
			
				-              // but the previous service worker will still serve the older 
			 | 
		
	
		
			
			| 
				79
			 | 
			
				
			 | 
			
			
				-              // content until all client tabs are closed. 
			 | 
		
	
		
			
			| 
				80
			 | 
			
				
			 | 
			
			
				-              console.log( 
			 | 
		
	
		
			
			| 
				81
			 | 
			
				
			 | 
			
			
				-                'New content is available and will be used when all ' + 
			 | 
		
	
		
			
			| 
				82
			 | 
			
				
			 | 
			
			
				-                  'tabs for this page are closed. See https://bit.ly/CRA-PWA.' 
			 | 
		
	
		
			
			| 
				83
			 | 
			
				
			 | 
			
			
				-              ); 
			 | 
		
	
		
			
			| 
				84
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				85
			 | 
			
				
			 | 
			
			
				-              // Execute callback 
			 | 
		
	
		
			
			| 
				86
			 | 
			
				
			 | 
			
			
				-              if (config && config.onUpdate) { 
			 | 
		
	
		
			
			| 
				87
			 | 
			
				
			 | 
			
			
				-                config.onUpdate(registration); 
			 | 
		
	
		
			
			| 
				88
			 | 
			
				
			 | 
			
			
				-              } 
			 | 
		
	
		
			
			| 
				89
			 | 
			
				
			 | 
			
			
				-            } else { 
			 | 
		
	
		
			
			| 
				90
			 | 
			
				
			 | 
			
			
				-              // At this point, everything has been precached. 
			 | 
		
	
		
			
			| 
				91
			 | 
			
				
			 | 
			
			
				-              // It's the perfect time to display a 
			 | 
		
	
		
			
			| 
				92
			 | 
			
				
			 | 
			
			
				-              // "Content is cached for offline use." message. 
			 | 
		
	
		
			
			| 
				93
			 | 
			
				
			 | 
			
			
				-              console.log('Content is cached for offline use.'); 
			 | 
		
	
		
			
			| 
				94
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				95
			 | 
			
				
			 | 
			
			
				-              // Execute callback 
			 | 
		
	
		
			
			| 
				96
			 | 
			
				
			 | 
			
			
				-              if (config && config.onSuccess) { 
			 | 
		
	
		
			
			| 
				97
			 | 
			
				
			 | 
			
			
				-                config.onSuccess(registration); 
			 | 
		
	
		
			
			| 
				98
			 | 
			
				
			 | 
			
			
				-              } 
			 | 
		
	
		
			
			| 
				99
			 | 
			
				
			 | 
			
			
				-            } 
			 | 
		
	
		
			
			| 
				100
			 | 
			
				
			 | 
			
			
				-          } 
			 | 
		
	
		
			
			| 
				101
			 | 
			
				
			 | 
			
			
				-        }; 
			 | 
		
	
		
			
			| 
				102
			 | 
			
				
			 | 
			
			
				-      }; 
			 | 
		
	
		
			
			| 
				103
			 | 
			
				
			 | 
			
			
				-    }) 
			 | 
		
	
		
			
			| 
				104
			 | 
			
				
			 | 
			
			
				-    .catch(error => { 
			 | 
		
	
		
			
			| 
				105
			 | 
			
				
			 | 
			
			
				-      console.error('Error during service worker registration:', error); 
			 | 
		
	
		
			
			| 
				106
			 | 
			
				
			 | 
			
			
				-    }); 
			 | 
		
	
		
			
			| 
				107
			 | 
			
				
			 | 
			
			
				-} 
			 | 
		
	
		
			
			| 
				108
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				109
			 | 
			
				
			 | 
			
			
				-function checkValidServiceWorker(swUrl: string, config?: Config) { 
			 | 
		
	
		
			
			| 
				110
			 | 
			
				
			 | 
			
			
				-  // Check if the service worker can be found. If it can't reload the page. 
			 | 
		
	
		
			
			| 
				111
			 | 
			
				
			 | 
			
			
				-  fetch(swUrl, { 
			 | 
		
	
		
			
			| 
				112
			 | 
			
				
			 | 
			
			
				-    headers: { 'Service-Worker': 'script' } 
			 | 
		
	
		
			
			| 
				113
			 | 
			
				
			 | 
			
			
				-  }) 
			 | 
		
	
		
			
			| 
				114
			 | 
			
				
			 | 
			
			
				-    .then(response => { 
			 | 
		
	
		
			
			| 
				115
			 | 
			
				
			 | 
			
			
				-      // Ensure service worker exists, and that we really are getting a JS file. 
			 | 
		
	
		
			
			| 
				116
			 | 
			
				
			 | 
			
			
				-      const contentType = response.headers.get('content-type'); 
			 | 
		
	
		
			
			| 
				117
			 | 
			
				
			 | 
			
			
				-      if ( 
			 | 
		
	
		
			
			| 
				118
			 | 
			
				
			 | 
			
			
				-        response.status === 404 || 
			 | 
		
	
		
			
			| 
				119
			 | 
			
				
			 | 
			
			
				-        (contentType != null && contentType.indexOf('javascript') === -1) 
			 | 
		
	
		
			
			| 
				120
			 | 
			
				
			 | 
			
			
				-      ) { 
			 | 
		
	
		
			
			| 
				121
			 | 
			
				
			 | 
			
			
				-        // No service worker found. Probably a different app. Reload the page. 
			 | 
		
	
		
			
			| 
				122
			 | 
			
				
			 | 
			
			
				-        navigator.serviceWorker.ready.then(registration => { 
			 | 
		
	
		
			
			| 
				123
			 | 
			
				
			 | 
			
			
				-          registration.unregister().then(() => { 
			 | 
		
	
		
			
			| 
				124
			 | 
			
				
			 | 
			
			
				-            window.location.reload(); 
			 | 
		
	
		
			
			| 
				125
			 | 
			
				
			 | 
			
			
				-          }); 
			 | 
		
	
		
			
			| 
				126
			 | 
			
				
			 | 
			
			
				-        }); 
			 | 
		
	
		
			
			| 
				127
			 | 
			
				
			 | 
			
			
				-      } else { 
			 | 
		
	
		
			
			| 
				128
			 | 
			
				
			 | 
			
			
				-        // Service worker found. Proceed as normal. 
			 | 
		
	
		
			
			| 
				129
			 | 
			
				
			 | 
			
			
				-        registerValidSW(swUrl, config); 
			 | 
		
	
		
			
			| 
				130
			 | 
			
				
			 | 
			
			
				-      } 
			 | 
		
	
		
			
			| 
				131
			 | 
			
				
			 | 
			
			
				-    }) 
			 | 
		
	
		
			
			| 
				132
			 | 
			
				
			 | 
			
			
				-    .catch(() => { 
			 | 
		
	
		
			
			| 
				133
			 | 
			
				
			 | 
			
			
				-      console.log( 
			 | 
		
	
		
			
			| 
				134
			 | 
			
				
			 | 
			
			
				-        'No internet connection found. App is running in offline mode.' 
			 | 
		
	
		
			
			| 
				135
			 | 
			
				
			 | 
			
			
				-      ); 
			 | 
		
	
		
			
			| 
				136
			 | 
			
				
			 | 
			
			
				-    }); 
			 | 
		
	
		
			
			| 
				137
			 | 
			
				
			 | 
			
			
				-} 
			 | 
		
	
		
			
			| 
				138
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				139
			 | 
			
				
			 | 
			
			
				-export function unregister() { 
			 | 
		
	
		
			
			| 
				140
			 | 
			
				
			 | 
			
			
				-  if ('serviceWorker' in navigator) { 
			 | 
		
	
		
			
			| 
				141
			 | 
			
				
			 | 
			
			
				-    navigator.serviceWorker.ready.then(registration => { 
			 | 
		
	
		
			
			| 
				142
			 | 
			
				
			 | 
			
			
				-      registration.unregister(); 
			 | 
		
	
		
			
			| 
				143
			 | 
			
				
			 | 
			
			
				-    }); 
			 | 
		
	
		
			
			| 
				144
			 | 
			
				
			 | 
			
			
				-  } 
			 | 
		
	
		
			
			| 
				145
			 | 
			
				
			 | 
			
			
				-} 
			 |