@deriv-com/smartcharts-champion 1.3.8 → 1.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/deploy-preview.yml +1 -1
- package/.github/workflows/deploy-production.yml +1 -1
- package/.github/workflows/publish-smart-charts.yml +1 -1
- package/CHANGELOG.md +20 -3
- package/CLAUDE.md +237 -0
- package/dist/chart/flutter_bootstrap.js +1 -1
- package/dist/chart/flutter_service_worker.js +1 -1
- package/dist/chart/main.dart.js +1 -1
- package/dist/flutter-chart-adapter-3539ee.smartcharts.js +2 -0
- package/dist/{flutter-chart-adapter-038dea.smartcharts.js.map → flutter-chart-adapter-3539ee.smartcharts.js.map} +1 -1
- package/dist/smartcharts.js +1 -1
- package/dist/smartcharts.js.map +1 -1
- package/package.json +4 -4
- package/dist/flutter-chart-adapter-038dea.smartcharts.js +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,24 @@
|
|
|
1
|
-
## [1.3.
|
|
1
|
+
## [1.3.10](https://github.com/deriv-com/smartcharts-champion/compare/v1.3.9...v1.3.10) (2025-12-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### ♻️ Chores
|
|
5
|
+
|
|
6
|
+
* Added Claude.md file to the project ([ef51a7f](https://github.com/deriv-com/smartcharts-champion/commit/ef51a7f99152934fb5cf472045bf27ef5dc6212b))
|
|
7
|
+
* update node version in GitHub workflow from 20.x to 22.x ([658dbc0](https://github.com/deriv-com/smartcharts-champion/commit/658dbc08356f67e8bc452352ce927cbb70e7e77b))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### ⚙️ Continuous Integrations
|
|
11
|
+
|
|
12
|
+
* update node version in deploy preview & deploy production ([5100273](https://github.com/deriv-com/smartcharts-champion/commit/51002732858668e69cfa9534ee69883aff027f88))
|
|
13
|
+
* upgrade node version from 20.x to 22.x ([36664d8](https://github.com/deriv-com/smartcharts-champion/commit/36664d89b80721720115ea14c17910cc02648e54))
|
|
2
14
|
|
|
3
15
|
|
|
4
16
|
### 🐛 Bug Fixes
|
|
5
17
|
|
|
6
|
-
*
|
|
7
|
-
*
|
|
18
|
+
* add crosshair persistency and state management in Chart and CrosshairStore ([d18b44c](https://github.com/deriv-com/smartcharts-champion/commit/d18b44c15f98afd39f87f9839bce7b5615527d6a))
|
|
19
|
+
* change crosshair prop to boolean type ([f07074a](https://github.com/deriv-com/smartcharts-champion/commit/f07074af2bc30e399be325cb0fd0a7ec74a4aa13))
|
|
20
|
+
* ensure localStorage checks for crosshair state management ([4cf5e7f](https://github.com/deriv-com/smartcharts-champion/commit/4cf5e7fce1ae0ab796bd525cfe998607e5916627))
|
|
21
|
+
* fix the security ([a52fb77](https://github.com/deriv-com/smartcharts-champion/commit/a52fb779b61b55d870bcc94b0c305451756add16))
|
|
22
|
+
* fix the security ([325a7f6](https://github.com/deriv-com/smartcharts-champion/commit/325a7f65b9612da60bcfc9170c39e55ffd66ada2))
|
|
23
|
+
* localStorage error handling in CrosshairStore ([285bea3](https://github.com/deriv-com/smartcharts-champion/commit/285bea34583b45d7640627942d338cff8e81ede9))
|
|
24
|
+
* Race Condition with Chart Initialization ([a71402a](https://github.com/deriv-com/smartcharts-champion/commit/a71402a203c426a58a4274cdc81ec8c34c13d9f8))
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
SmartCharts is a React-based charting library published as `@deriv-com/smartcharts-champion` on npm. It provides interactive financial charts with real-time data streaming, technical indicators, drawing tools, and customizable UI components. The library uses TypeScript, MobX for state management, and integrates with a Flutter-based chart rendering engine.
|
|
8
|
+
|
|
9
|
+
## Common Development Commands
|
|
10
|
+
|
|
11
|
+
### Development
|
|
12
|
+
|
|
13
|
+
- `npm start` - Start webpack dev server for the sample app (runs on http://localhost:8080)
|
|
14
|
+
- `npm run watch '../path/to/node_modules/@deriv-com/smartcharts-champion/dist'` - Watch mode that builds directly into another project's node_modules (useful for testing library changes)
|
|
15
|
+
|
|
16
|
+
### Building
|
|
17
|
+
|
|
18
|
+
- `npm run build` - Build the library for production (outputs to `dist/`)
|
|
19
|
+
- `npm run build:app` - Build the sample app (outputs to `dist/`)
|
|
20
|
+
- Note: Both commands output `smartcharts.js` and `smartcharts.css`, but they are different files (library vs app)
|
|
21
|
+
|
|
22
|
+
### Testing
|
|
23
|
+
|
|
24
|
+
- `npm test` - Run unit tests with Mocha
|
|
25
|
+
- `npm run coverage` - Generate test coverage report
|
|
26
|
+
- Test files are located in `__tests__` directories with `.spec.ts` extension
|
|
27
|
+
- Uses Mocha + Chai + Sinon for testing
|
|
28
|
+
|
|
29
|
+
### Code Quality
|
|
30
|
+
|
|
31
|
+
- `npm run prettify` - Format code with Prettier
|
|
32
|
+
- ESLint runs automatically during webpack builds
|
|
33
|
+
- StyleLint runs automatically during webpack builds
|
|
34
|
+
- Husky pre-commit hooks run lint-staged
|
|
35
|
+
|
|
36
|
+
### Analysis
|
|
37
|
+
|
|
38
|
+
- `npm run analyze` - Run webpack-bundle-analyzer to visualize bundle size
|
|
39
|
+
|
|
40
|
+
### Translations
|
|
41
|
+
|
|
42
|
+
- `npm run translations` - Extract translation strings from the built library
|
|
43
|
+
- `npm run translations:download` - Download translations from Crowdin
|
|
44
|
+
|
|
45
|
+
## Architecture Overview
|
|
46
|
+
|
|
47
|
+
### Directory Structure
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
src/
|
|
51
|
+
├── components/ # React UI components (templates)
|
|
52
|
+
├── store/ # MobX stores (state management)
|
|
53
|
+
├── feed/ # Data feed and subscription management
|
|
54
|
+
├── binaryapi/ # Binary API integration (TradingTimes, etc.)
|
|
55
|
+
├── types/ # TypeScript type definitions
|
|
56
|
+
├── utils/ # Utility functions
|
|
57
|
+
├── hooks/ # React custom hooks
|
|
58
|
+
├── constants/ # Constants and configuration
|
|
59
|
+
├── flutter-chart/ # Flutter chart integration layer
|
|
60
|
+
└── index.ts # Library entry point
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### State Management Pattern (Mobdux)
|
|
64
|
+
|
|
65
|
+
SmartCharts uses a variation of Mobdux pattern combining MobX and Redux-like architecture. Each component consists of:
|
|
66
|
+
|
|
67
|
+
1. **Template** (`.tsx` file) - React component
|
|
68
|
+
2. **Store** (`*Store.ts` file) - MobX state management
|
|
69
|
+
|
|
70
|
+
There are three types of components:
|
|
71
|
+
|
|
72
|
+
#### 1. Main Components
|
|
73
|
+
|
|
74
|
+
- Tied directly to the main store tree
|
|
75
|
+
- Only one instance per `<SmartChart />` component
|
|
76
|
+
- Examples: `ChartTitle`, `TimePeriod`, `Views`
|
|
77
|
+
- Connection done in the `.tsx` file using `connect(mapperFunction)`
|
|
78
|
+
- Should be Stateless Functional Components (SFC)
|
|
79
|
+
|
|
80
|
+
#### 2. Subcomponents
|
|
81
|
+
|
|
82
|
+
- Multiple instances can exist in the same state tree
|
|
83
|
+
- Connected inside parent store's constructor
|
|
84
|
+
- Examples: `Menu`, `List`, `CategoricalDisplay`
|
|
85
|
+
- Store has its own `connect` method
|
|
86
|
+
- Passed as props from parent component
|
|
87
|
+
|
|
88
|
+
#### 3. Independent Components
|
|
89
|
+
|
|
90
|
+
- Not managed by main store lifecycle
|
|
91
|
+
- Manage their own lifecycle (constructor, updateProps, destructor)
|
|
92
|
+
- Can access main store but main store doesn't control them
|
|
93
|
+
- Examples: `Barrier`, `ChartMode`, `FastMarker`
|
|
94
|
+
- Connection requires both mapperFunction and store class: `connect(mapperFunction, StoreClass)`
|
|
95
|
+
|
|
96
|
+
### Key Stores
|
|
97
|
+
|
|
98
|
+
- `MainStore` - Root store that orchestrates all other stores
|
|
99
|
+
- `ChartStore` - Core chart state and operations
|
|
100
|
+
- `ChartState` - Chart configuration, settings, and layout management
|
|
101
|
+
- `ChartAdapterStore` - Flutter chart integration layer
|
|
102
|
+
- `Feed` - Data subscription and quote management
|
|
103
|
+
- `BarrierStore` - Chart barriers (price lines, shading)
|
|
104
|
+
- `DrawToolsStore` - Drawing tools and annotations
|
|
105
|
+
- `CrosshairStore` - Crosshair visibility and interaction state
|
|
106
|
+
|
|
107
|
+
### Data Flow
|
|
108
|
+
|
|
109
|
+
1. **Historical Data**: Host app provides `getQuotes` function
|
|
110
|
+
2. **Real-time Data**: Host app provides `subscribeQuotes` and `unsubscribeQuotes`
|
|
111
|
+
3. **Market Data**: Optionally passed via `chartData` prop (activeSymbols, tradingTimes)
|
|
112
|
+
4. **Chart Rendering**: TypeScript → Flutter chart layer → Canvas rendering
|
|
113
|
+
|
|
114
|
+
SmartCharts does NOT fetch data directly - it delegates to the host application.
|
|
115
|
+
|
|
116
|
+
## TypeScript Configuration
|
|
117
|
+
|
|
118
|
+
- Target: ES5
|
|
119
|
+
- Module: ES2020
|
|
120
|
+
- JSX: react-jsx
|
|
121
|
+
- Strict mode enabled
|
|
122
|
+
- Path alias: `@deriv-com/smartcharts` maps to `src/`
|
|
123
|
+
- Includes all `.ts` and `.tsx` files
|
|
124
|
+
- Excludes all `.js` and `.jsx` files
|
|
125
|
+
|
|
126
|
+
## Webpack Build Modes
|
|
127
|
+
|
|
128
|
+
The build system has two modes controlled by `BUILD_MODE` environment variable:
|
|
129
|
+
|
|
130
|
+
- `BUILD_MODE=app` - Builds the sample app (entry: `app/index.tsx`)
|
|
131
|
+
- Default (no BUILD_MODE) - Builds the library (entry: `src/index.ts`)
|
|
132
|
+
|
|
133
|
+
Library build outputs:
|
|
134
|
+
|
|
135
|
+
- UMD module format
|
|
136
|
+
- Library name: `smartcharts`
|
|
137
|
+
- Chunks: `[name]-[chunkhash:6].smartcharts.js`
|
|
138
|
+
- Assets must be copied to host application
|
|
139
|
+
|
|
140
|
+
## Working with SVGs
|
|
141
|
+
|
|
142
|
+
1. **CSS Background SVGs** - Inlined via postcss-inline-svg (used for loader)
|
|
143
|
+
2. **External SVGs** - Bundled into sprite sheet via svg-sprite-loader
|
|
144
|
+
- Can control stroke and fill color via CSS
|
|
145
|
+
- Remove stroke/fill attributes from SVG files to enable CSS control
|
|
146
|
+
- Cached by browser using shadow DOM
|
|
147
|
+
|
|
148
|
+
## Key Integration Points
|
|
149
|
+
|
|
150
|
+
### Flutter Chart
|
|
151
|
+
|
|
152
|
+
- Chart rendering is handled by Flutter web application in `chart_app/`
|
|
153
|
+
- Flutter build output is in `chart_app/build/web`
|
|
154
|
+
- TypeScript interfaces bridge to Flutter via `chartAdapter.flutterChart`
|
|
155
|
+
- Methods like `updateCrosshairVisibility()` update Flutter chart state
|
|
156
|
+
|
|
157
|
+
### Library Usage by Host Apps
|
|
158
|
+
|
|
159
|
+
- Host must copy chunks (`*.smartcharts.*`) and CSS from `dist/`
|
|
160
|
+
- Host must call `setSmartChartsPublicPath()` to configure chunk loading
|
|
161
|
+
- Host must copy `dist/chart/assets` folder
|
|
162
|
+
- Example using CopyWebpackPlugin is in README
|
|
163
|
+
|
|
164
|
+
## Component Development Guidelines
|
|
165
|
+
|
|
166
|
+
### Temporary Crosshair Disable Pattern
|
|
167
|
+
|
|
168
|
+
When UI interactions should temporarily hide the crosshair:
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
onMouseEnter = () => this.crosshairStore.setTemporaryDisabled(true);
|
|
172
|
+
onMouseLeave = () => this.crosshairStore.setTemporaryDisabled(false);
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Icon and Label UX Pattern
|
|
176
|
+
|
|
177
|
+
- Icon represents **current state**
|
|
178
|
+
- Label describes **available action**
|
|
179
|
+
- Tooltips disabled on mobile
|
|
180
|
+
|
|
181
|
+
### MobX Best Practices
|
|
182
|
+
|
|
183
|
+
- Use `makeObservable` in store constructors
|
|
184
|
+
- Wrap components with `observer` for reactivity
|
|
185
|
+
- Use computed properties for derived state
|
|
186
|
+
- Always use `isFunctionallyActive` for crosshair state (not `isEnabled` directly)
|
|
187
|
+
|
|
188
|
+
## Testing
|
|
189
|
+
|
|
190
|
+
- Test framework: Mocha with Chai assertions
|
|
191
|
+
- Test runner uses ts-node with CommonJS module compilation
|
|
192
|
+
- Test pattern: `src|app/**/__tests__/*.spec.ts`
|
|
193
|
+
- Use Sinon for mocking and spies
|
|
194
|
+
- Coverage reporting via nyc (Istanbul)
|
|
195
|
+
|
|
196
|
+
## Release Management
|
|
197
|
+
|
|
198
|
+
- Uses semantic-release for automated versioning
|
|
199
|
+
- Configuration in `release.config.cjs`
|
|
200
|
+
- Changelog generation via @semantic-release/changelog
|
|
201
|
+
- NPM publishing via @semantic-release/npm
|
|
202
|
+
- GitHub releases via @semantic-release/github
|
|
203
|
+
|
|
204
|
+
To publish manually:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
npm run build && npm publish
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Git Workflow
|
|
211
|
+
|
|
212
|
+
- Main branch: `master`
|
|
213
|
+
- Husky pre-commit hooks enforce lint-staged rules
|
|
214
|
+
- Conventional commits enforced via commitlint
|
|
215
|
+
- Use `npm run commit` for guided commit messages
|
|
216
|
+
|
|
217
|
+
## Translation System
|
|
218
|
+
|
|
219
|
+
- All user-facing strings must be wrapped in `t.translate()`
|
|
220
|
+
- Translation keys support interpolation: `t.translate('[currency] [amount] payout', { currency: 'USD', amount: 43.12 })`
|
|
221
|
+
- Change language: `t.setLanguage('fr', callback)`
|
|
222
|
+
- Translations managed via Crowdin
|
|
223
|
+
|
|
224
|
+
## Important Notes
|
|
225
|
+
|
|
226
|
+
- **Node version**: >=18.0.0
|
|
227
|
+
- **NPM version**: >=9.0.0
|
|
228
|
+
- Library exports are in `src/index.ts` - this defines the public API
|
|
229
|
+
- The `id` prop enables persistence of indicators, symbol, and layout to localStorage
|
|
230
|
+
- Chart state persistence uses key pattern: `layout-{id}`
|
|
231
|
+
- Component-specific documentation available in `docs/` directory
|
|
232
|
+
|
|
233
|
+
## Reference Documentation
|
|
234
|
+
|
|
235
|
+
- [Crosshair Maintainer's Guide](docs/CROSSHAIR_MAINTAINERS_GUIDE.md) - Comprehensive guide for crosshair functionality
|
|
236
|
+
- [SmartChart Guide](docs/SmartChart-Guide.md) - Usage guide
|
|
237
|
+
- [README.md](README.md) - Complete API documentation and usage examples
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var e={hasImageCodecs:!(typeof ImageDecoder>"u"||"Google Inc."!==navigator.vendor&&"Edg/"!==navigator.agent),hasChromiumBreakIterators:typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",supportsWasmGC:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,95,1,120,0])),crossOriginIsolated:window.crossOriginIsolated};function t(...e){return new URL(r(...e),document.baseURI).toString()}function r(...e){return e.filter(e=>!!e).map((e,t)=>0===t?i(e):function(e){let t=0;for(;t<e.length&&"/"===e.charAt(t);)t++;return e.substring(t)}(i(e))).filter(e=>e.length).join("/")}function i(e){let t=e.length;for(;t>0&&"/"===e.charAt(t-1);)t--;return e.substring(0,t)}var n=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:r=t("main.dart.js"),onEntrypointLoaded:i,nonce:n}=e||{};return this._loadJSEntrypoint(r,i,n)}async load(e,r,i,n,a){a??=e=>{e.initializeEngine(i).then(e=>e.runApp())};let{entryPointBaseUrl:o}=i;if("dart2wasm"===e.compileTarget)return this._loadWasmEntrypoint(e,r,o,a);{let r=t(o,e.mainJsPath??"main.dart.js");return this._loadJSEntrypoint(r,a,n)}}didCreateEngineInitializer(e){"function"==typeof this._didCreateEngineInitializerResolve&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),"function"==typeof this._onEntrypointLoaded&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,t,r){let i="function"==typeof t;if(!this._scriptLoaded){this._scriptLoaded=!0;let n=this._createScriptTag(e,r);if(!i)return new Promise((e,t)=>{console.debug("Injecting <script> tag. Using Promises. Use the callback approach instead!"),this._didCreateEngineInitializerResolve=e,n.addEventListener("error",t),document.head.append(n)});console.debug("Injecting <script> tag. Using callback."),this._onEntrypointLoaded=t,document.head.append(n)}}async _loadWasmEntrypoint(e,r,i,n){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=n;let{mainWasmPath:a,jsSupportRuntimePath:o}=e,s=t(i,a),l=t(i,o);null!=this._ttPolicy&&(l=this._ttPolicy.createScriptURL(l));let c,d=WebAssembly.compileStreaming(fetch(s)),u=await import(l);c="skwasm"===e.renderer?(async()=>{let e=await r.skwasm;return window._flutter_skwasmInstance=e,{skwasm:e.wasmExports,skwasmWrapper:e,ffi:{memory:e.wasmMemory}}})():{};let p=await u.instantiate(d,c);await u.invoke(p)}}_createScriptTag(e,t){let r=document.createElement("script");r.type="application/javascript",t&&(r.nonce=t);let i=e;return null!=this._ttPolicy&&(i=this._ttPolicy.createScriptURL(e)),r.src=i,r}};async function a(e,t,r){if(t<0)return e;let i,n=new Promise((e,n)=>{i=setTimeout(()=>{n(new Error(`${r} took more than ${t}ms to resolve. Moving on.`,{cause:a}))},t)});return Promise.race([e,n]).finally(()=>{clearTimeout(i)})}var o=class{setTrustedTypesPolicy(e){this._ttPolicy=e}loadServiceWorker(e){if(!e)return console.debug("Null serviceWorker configuration. Skipping."),Promise.resolve();if(!("serviceWorker"in navigator)){let e="Service Worker API unavailable.";return window.isSecureContext||(e+="\nThe current context is NOT secure.",e+="\nRead more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts"),Promise.reject(new Error(e))}let{serviceWorkerVersion:r,serviceWorkerUrl:i=t(`flutter_service_worker.js?v=${r}`),timeoutMillis:n=4e3}=e,o=i;return null!=this._ttPolicy&&(o=this._ttPolicy.createScriptURL(o)),a(navigator.serviceWorker.register(o).then(e=>this._getNewServiceWorker(e,r)).then(this._waitForServiceWorkerActivation),n,"prepareServiceWorker")}async _getNewServiceWorker(e,t){if(!e.active&&(e.installing||e.waiting))return console.debug("Installing/Activating first service worker."),e.installing||e.waiting;if(e.active.scriptURL.endsWith(t))return console.debug("Loading from existing service worker."),e.active;{let t=await e.update();return console.debug("Updating service worker."),t.installing||t.waiting||t.active}}async _waitForServiceWorkerActivation(e){if(!e||"activated"===e.state){if(e)return void console.debug("Service worker already active.");throw new Error("Cannot activate a null service worker!")}return new Promise((t,r)=>{e.addEventListener("statechange",()=>{"activated"===e.state&&(console.debug("Activated new service worker."),t())})})}},s=class{constructor(e,t="flutter-js"){let r=e||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(t,{createScriptURL:function(e){if(e.startsWith("blob:"))return e;let i=new URL(e,window.location),n=i.pathname.split("/").pop();if(r.some(e=>e.test(n)))return i.toString();console.error("URL rejected by TrustedTypes policy",t,":",e,"(download prevented)")}}))}},l=e=>{let t=WebAssembly.compileStreaming(fetch(e));return(e,r)=>((async()=>{let i=await t,n=await WebAssembly.instantiate(i,e);r(n,i)})(),{})};window._flutter||(window._flutter={}),window._flutter.loader||(window._flutter.loader=new class{async loadEntrypoint(e){let{serviceWorker:t,...r}=e||{},i=new s,a=new o;a.setTrustedTypesPolicy(i.policy),await a.loadServiceWorker(t).catch(e=>{console.warn("Exception while loading service worker:",e)});let l=new n;return l.setTrustedTypesPolicy(i.policy),this.didCreateEngineInitializer=l.didCreateEngineInitializer.bind(l),l.loadEntrypoint(r)}async load({serviceWorkerSettings:i,onEntrypointLoaded:a,nonce:c,config:d}={}){d??={};let u=_flutter.buildConfig;if(!u)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let p=u.builds.find(t=>!("dart2wasm"===t.compileTarget&&!e.supportsWasmGC||d.renderer&&!((e,t)=>"auto"===e.renderer?"canvaskit"==t||"html"==t:e.renderer==t)(t,d.renderer))&&(t=>"skwasm"!==t||e.crossOriginIsolated&&e.hasChromiumBreakIterators&&e.hasImageCodecs&&e.supportsWasmGC)(t.renderer));if(!p)throw"FlutterLoader could not find a build compatible with configuration and environment.";let w={};w.flutterTT=new s,i&&(w.serviceWorkerLoader=new o,w.serviceWorkerLoader.setTrustedTypesPolicy(w.flutterTT.policy),await w.serviceWorkerLoader.loadServiceWorker(i).catch(e=>{console.warn("Exception while loading service worker:",e)}));let m=function(e,t){return e.canvasKitBaseUrl?e.canvasKitBaseUrl:t.engineRevision&&!t.useLocalCanvasKit?r("https://www.gstatic.com/flutter-canvaskit",t.engineRevision):"canvaskit"}(d,u);"canvaskit"===p.renderer?w.canvasKit=((e,r,i,n)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let a=i.hasChromiumBreakIterators&&i.hasImageCodecs;if(!a&&"chromium"==r.canvasKitVariant)throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let o=a&&"full"!==r.canvasKitVariant,s=n;o&&(s=t(s,"chromium"));let c=t(s,"canvaskit.js");e.flutterTT.policy&&(c=e.flutterTT.policy.createScriptURL(c));let d=l(t(s,"canvaskit.wasm")),u=await import(c);return window.flutterCanvasKit=await u.default({instantiateWasm:d}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded))(w,d,e,m):"skwasm"===p.renderer&&(w.skwasm=(async(e,r,i,n)=>{let a=t(n,"skwasm.js"),o=a;e.flutterTT.policy&&(o=e.flutterTT.policy.createScriptURL(o));let s=l(t(n,"skwasm.wasm"));return await(await import(o)).default({instantiateWasm:s,locateFile:(e,t)=>{let r=t+e;return r.endsWith(".worker.js")?URL.createObjectURL(new Blob([`importScripts('${r}');`],{type:"application/javascript"})):r},mainScriptUrlOrBlob:a})})(w,0,0,m));let v=new n;return v.setTrustedTypesPolicy(w.flutterTT.policy),this.didCreateEngineInitializer=v.didCreateEngineInitializer.bind(v),v.load(p,w,d,c,a)}})})(),window._flutter||(window._flutter={}),_flutter.buildConfig={engineRevision:"c9b9d5780da342eb3f0f5e439a7db06f7d112575",builds:[{compileTarget:"dart2js",renderer:"html",mainJsPath:"main.dart.js"}]},_flutter.loader.load({serviceWorkerSettings:{serviceWorkerVersion:"
|
|
1
|
+
(()=>{var e={hasImageCodecs:!(typeof ImageDecoder>"u"||"Google Inc."!==navigator.vendor&&"Edg/"!==navigator.agent),hasChromiumBreakIterators:typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",supportsWasmGC:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,95,1,120,0])),crossOriginIsolated:window.crossOriginIsolated};function t(...e){return new URL(r(...e),document.baseURI).toString()}function r(...e){return e.filter(e=>!!e).map((e,t)=>0===t?i(e):function(e){let t=0;for(;t<e.length&&"/"===e.charAt(t);)t++;return e.substring(t)}(i(e))).filter(e=>e.length).join("/")}function i(e){let t=e.length;for(;t>0&&"/"===e.charAt(t-1);)t--;return e.substring(0,t)}var n=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:r=t("main.dart.js"),onEntrypointLoaded:i,nonce:n}=e||{};return this._loadJSEntrypoint(r,i,n)}async load(e,r,i,n,a){a??=e=>{e.initializeEngine(i).then(e=>e.runApp())};let{entryPointBaseUrl:o}=i;if("dart2wasm"===e.compileTarget)return this._loadWasmEntrypoint(e,r,o,a);{let r=t(o,e.mainJsPath??"main.dart.js");return this._loadJSEntrypoint(r,a,n)}}didCreateEngineInitializer(e){"function"==typeof this._didCreateEngineInitializerResolve&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),"function"==typeof this._onEntrypointLoaded&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,t,r){let i="function"==typeof t;if(!this._scriptLoaded){this._scriptLoaded=!0;let n=this._createScriptTag(e,r);if(!i)return new Promise((e,t)=>{console.debug("Injecting <script> tag. Using Promises. Use the callback approach instead!"),this._didCreateEngineInitializerResolve=e,n.addEventListener("error",t),document.head.append(n)});console.debug("Injecting <script> tag. Using callback."),this._onEntrypointLoaded=t,document.head.append(n)}}async _loadWasmEntrypoint(e,r,i,n){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=n;let{mainWasmPath:a,jsSupportRuntimePath:o}=e,s=t(i,a),l=t(i,o);null!=this._ttPolicy&&(l=this._ttPolicy.createScriptURL(l));let c,d=WebAssembly.compileStreaming(fetch(s)),u=await import(l);c="skwasm"===e.renderer?(async()=>{let e=await r.skwasm;return window._flutter_skwasmInstance=e,{skwasm:e.wasmExports,skwasmWrapper:e,ffi:{memory:e.wasmMemory}}})():{};let p=await u.instantiate(d,c);await u.invoke(p)}}_createScriptTag(e,t){let r=document.createElement("script");r.type="application/javascript",t&&(r.nonce=t);let i=e;return null!=this._ttPolicy&&(i=this._ttPolicy.createScriptURL(e)),r.src=i,r}};async function a(e,t,r){if(t<0)return e;let i,n=new Promise((e,n)=>{i=setTimeout(()=>{n(new Error(`${r} took more than ${t}ms to resolve. Moving on.`,{cause:a}))},t)});return Promise.race([e,n]).finally(()=>{clearTimeout(i)})}var o=class{setTrustedTypesPolicy(e){this._ttPolicy=e}loadServiceWorker(e){if(!e)return console.debug("Null serviceWorker configuration. Skipping."),Promise.resolve();if(!("serviceWorker"in navigator)){let e="Service Worker API unavailable.";return window.isSecureContext||(e+="\nThe current context is NOT secure.",e+="\nRead more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts"),Promise.reject(new Error(e))}let{serviceWorkerVersion:r,serviceWorkerUrl:i=t(`flutter_service_worker.js?v=${r}`),timeoutMillis:n=4e3}=e,o=i;return null!=this._ttPolicy&&(o=this._ttPolicy.createScriptURL(o)),a(navigator.serviceWorker.register(o).then(e=>this._getNewServiceWorker(e,r)).then(this._waitForServiceWorkerActivation),n,"prepareServiceWorker")}async _getNewServiceWorker(e,t){if(!e.active&&(e.installing||e.waiting))return console.debug("Installing/Activating first service worker."),e.installing||e.waiting;if(e.active.scriptURL.endsWith(t))return console.debug("Loading from existing service worker."),e.active;{let t=await e.update();return console.debug("Updating service worker."),t.installing||t.waiting||t.active}}async _waitForServiceWorkerActivation(e){if(!e||"activated"===e.state){if(e)return void console.debug("Service worker already active.");throw new Error("Cannot activate a null service worker!")}return new Promise((t,r)=>{e.addEventListener("statechange",()=>{"activated"===e.state&&(console.debug("Activated new service worker."),t())})})}},s=class{constructor(e,t="flutter-js"){let r=e||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(t,{createScriptURL:function(e){if(e.startsWith("blob:"))return e;let i=new URL(e,window.location),n=i.pathname.split("/").pop();if(r.some(e=>e.test(n)))return i.toString();console.error("URL rejected by TrustedTypes policy",t,":",e,"(download prevented)")}}))}},l=e=>{let t=WebAssembly.compileStreaming(fetch(e));return(e,r)=>((async()=>{let i=await t,n=await WebAssembly.instantiate(i,e);r(n,i)})(),{})};window._flutter||(window._flutter={}),window._flutter.loader||(window._flutter.loader=new class{async loadEntrypoint(e){let{serviceWorker:t,...r}=e||{},i=new s,a=new o;a.setTrustedTypesPolicy(i.policy),await a.loadServiceWorker(t).catch(e=>{console.warn("Exception while loading service worker:",e)});let l=new n;return l.setTrustedTypesPolicy(i.policy),this.didCreateEngineInitializer=l.didCreateEngineInitializer.bind(l),l.loadEntrypoint(r)}async load({serviceWorkerSettings:i,onEntrypointLoaded:a,nonce:c,config:d}={}){d??={};let u=_flutter.buildConfig;if(!u)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let p=u.builds.find(t=>!("dart2wasm"===t.compileTarget&&!e.supportsWasmGC||d.renderer&&!((e,t)=>"auto"===e.renderer?"canvaskit"==t||"html"==t:e.renderer==t)(t,d.renderer))&&(t=>"skwasm"!==t||e.crossOriginIsolated&&e.hasChromiumBreakIterators&&e.hasImageCodecs&&e.supportsWasmGC)(t.renderer));if(!p)throw"FlutterLoader could not find a build compatible with configuration and environment.";let w={};w.flutterTT=new s,i&&(w.serviceWorkerLoader=new o,w.serviceWorkerLoader.setTrustedTypesPolicy(w.flutterTT.policy),await w.serviceWorkerLoader.loadServiceWorker(i).catch(e=>{console.warn("Exception while loading service worker:",e)}));let m=function(e,t){return e.canvasKitBaseUrl?e.canvasKitBaseUrl:t.engineRevision&&!t.useLocalCanvasKit?r("https://www.gstatic.com/flutter-canvaskit",t.engineRevision):"canvaskit"}(d,u);"canvaskit"===p.renderer?w.canvasKit=((e,r,i,n)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let a=i.hasChromiumBreakIterators&&i.hasImageCodecs;if(!a&&"chromium"==r.canvasKitVariant)throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let o=a&&"full"!==r.canvasKitVariant,s=n;o&&(s=t(s,"chromium"));let c=t(s,"canvaskit.js");e.flutterTT.policy&&(c=e.flutterTT.policy.createScriptURL(c));let d=l(t(s,"canvaskit.wasm")),u=await import(c);return window.flutterCanvasKit=await u.default({instantiateWasm:d}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded))(w,d,e,m):"skwasm"===p.renderer&&(w.skwasm=(async(e,r,i,n)=>{let a=t(n,"skwasm.js"),o=a;e.flutterTT.policy&&(o=e.flutterTT.policy.createScriptURL(o));let s=l(t(n,"skwasm.wasm"));return await(await import(o)).default({instantiateWasm:s,locateFile:(e,t)=>{let r=t+e;return r.endsWith(".worker.js")?URL.createObjectURL(new Blob([`importScripts('${r}');`],{type:"application/javascript"})):r},mainScriptUrlOrBlob:a})})(w,0,0,m));let v=new n;return v.setTrustedTypesPolicy(w.flutterTT.policy),this.didCreateEngineInitializer=v.didCreateEngineInitializer.bind(v),v.load(p,w,d,c,a)}})})(),window._flutter||(window._flutter={}),_flutter.buildConfig={engineRevision:"c9b9d5780da342eb3f0f5e439a7db06f7d112575",builds:[{compileTarget:"dart2js",renderer:"html",mainJsPath:"main.dart.js"}]},_flutter.loader.load({serviceWorkerSettings:{serviceWorkerVersion:"1301399031"}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const MANIFEST="flutter-app-manifest",TEMP="flutter-temp-cache",CACHE_NAME="flutter-app-cache",RESOURCES={"flutter.js":"f393d3c16b631f36852323de8e583132","manifest.json":"a06b13fcde5dfd1e240278072e116d12","index.html":"9458eeb11833b83f255b35b90fc4fec1","/":"9458eeb11833b83f255b35b90fc4fec1","assets/shaders/ink_sparkle.frag":"ecc85a2e95f5e9f53123dcaf8cb9b6ce","assets/AssetManifest.bin.json":"c29b161ad32814a02d8fd4f6311b9362","assets/fonts/IBMPlexSans-Bold.woff2":"19210a59bf50a6ba73fa97433170b4cf","assets/fonts/IBMPlexSans-Regular.woff2":"4bb247144b2962b752857093491454e7","assets/fonts/MaterialIcons-Regular.otf":"e7069dfd19b331be16bed984668fe080","assets/NOTICES":"f2f295fcde21b2b29cac32a02aa91755","assets/packages/deriv_chart/assets/icons/icon_placeholder.png":"23e9167e0fd2be2b618b589ed8401a1a","assets/packages/deriv_chart/assets/icons/symbols/cryltcusd.png":"d961cacac37de35b0c6f9d4fc55b7a1a","assets/packages/deriv_chart/assets/icons/symbols/otc_spc.png":"88a8304d175de2a69aea8e3a14072ec2","assets/packages/deriv_chart/assets/icons/symbols/stprng3.png":"115ea1648f1be8b5bb8d0a2db9d18c87","assets/packages/deriv_chart/assets/icons/symbols/crash900.png":"29db0d9e0d030a327586822c236e4f80","assets/packages/deriv_chart/assets/icons/symbols/jd10.png":"5827fe4e43bff971d2c3291e207ee8d7","assets/packages/deriv_chart/assets/icons/symbols/cryethusd.png":"d4520def9dba50f3758cbe869db8ce0f","assets/packages/deriv_chart/assets/icons/symbols/otc_dji.png":"faa508c0bfd406385ab03605d881b3c6","assets/packages/deriv_chart/assets/icons/symbols/jd75.png":"9b1491e264dff3e6331059975fa69d4b","assets/packages/deriv_chart/assets/icons/symbols/dshusd.png":"d5e83cc9d822d803830d238f28357b9b","assets/packages/deriv_chart/assets/icons/symbols/frxnzdjpy.png":"f7e9bdd69b05f1e03f0639d159d00a71","assets/packages/deriv_chart/assets/icons/symbols/frxeuraud.png":"74165ef668f66beabacb69e6e475b43d","assets/packages/deriv_chart/assets/icons/symbols/boom1000.png":"658219fb4846c9733a1aaf1b6196eafd","assets/packages/deriv_chart/assets/icons/symbols/1hz10v.png":"33928dfb84047f43a7f4a1c4965fdc47","assets/packages/deriv_chart/assets/icons/symbols/btcusd.png":"822ecfb1d3138c3b30c08d8de090c3b5","assets/packages/deriv_chart/assets/icons/symbols/zecusd.png":"0585b34fb4febfffa9d61cb1c95e9f55","assets/packages/deriv_chart/assets/icons/symbols/bchusd.png":"1433535ddc1ae0fec062c6cc8e5840d6","assets/packages/deriv_chart/assets/icons/symbols/frxusdchf.png":"73c02e4807d10f708314a493f0e68a95","assets/packages/deriv_chart/assets/icons/symbols/stprng.png":"7b0a1573c077dbdd99ab250b97ad6baf","assets/packages/deriv_chart/assets/icons/symbols/rdbear.png":"9f8e0320e8ece5613c760e5f19a8ed8e","assets/packages/deriv_chart/assets/icons/symbols/eosusd.png":"c1ab7f666c4bc67dfa6cccf9746165d1","assets/packages/deriv_chart/assets/icons/symbols/boom900.png":"cd9ee7eb5a89465bbde2ff06ddfbf160","assets/packages/deriv_chart/assets/icons/symbols/frxeurgbp.png":"64f2f86f9299d5408e355711023eca39","assets/packages/deriv_chart/assets/icons/symbols/frxxptusd.png":"547157baf2cb6a7e59dceb47e7a64af7","assets/packages/deriv_chart/assets/icons/symbols/frxeurcad.png":"dbfeb90340a097fac57fe24e439d57d8","assets/packages/deriv_chart/assets/icons/symbols/boom300n.png":"99ef1bfce27f82daddd9afd1b369c869","assets/packages/deriv_chart/assets/icons/symbols/1hz100v.png":"748c68b512a4829ed27c6a2091007188","assets/packages/deriv_chart/assets/icons/symbols/otc_sx5e.png":"32025efa989108bf7a08050d8319aa1d","assets/packages/deriv_chart/assets/icons/symbols/frxaudchf.png":"774fdfbacb2fb4d90515ce21b60d6df2","assets/packages/deriv_chart/assets/icons/symbols/otc_ndx.png":"024822877caaae778907d7e0a8bd23cc","assets/packages/deriv_chart/assets/icons/symbols/xrpusd.png":"3c1edf55f4b1e20ac79ef9eeb0171545","assets/packages/deriv_chart/assets/icons/symbols/otc_gdaxi.png":"795474c76bbb1467d97e98ab728e4d29","assets/packages/deriv_chart/assets/icons/symbols/frxeurusd.png":"87d65825df117aa6320059e251870c85","assets/packages/deriv_chart/assets/icons/symbols/crash1000.png":"c395945dc308c217c0297de8456b99ba","assets/packages/deriv_chart/assets/icons/symbols/crybchusd.png":"e61eedb43a2f79f2c2c8b4c892c5f5fc","assets/packages/deriv_chart/assets/icons/symbols/1hz200v.png":"07beabc8c1e3db87cc1a85a1c95d0aee","assets/packages/deriv_chart/assets/icons/symbols/boom500.png":"528b46320ba6105fe33d26fe3449c915","assets/packages/deriv_chart/assets/icons/symbols/wldgbp.png":"4959c5698faf8daf0ce9704ffd5ab1eb","assets/packages/deriv_chart/assets/icons/symbols/cryeosusd.png":"43ae4baee03d269a0b9fb525781173b9","assets/packages/deriv_chart/assets/icons/symbols/1hz300v.png":"866689205aabb376470a4e98a2be9736","assets/packages/deriv_chart/assets/icons/symbols/1hz25v.png":"15ac231c2c2bb0fa05dd91bb5e242799","assets/packages/deriv_chart/assets/icons/symbols/frxaudcad.png":"827bb3e47b0e64ddbf1bb5ae61a01033","assets/packages/deriv_chart/assets/icons/symbols/frxusdmxn.png":"f08040e1eefd9b94d74982301d7e4713","assets/packages/deriv_chart/assets/icons/symbols/1hz50v.png":"40eb9bc93e6e7feedbd74bfcf1683109","assets/packages/deriv_chart/assets/icons/symbols/r_50.png":"1d4f5fe7ecf5377a2e02235452917745","assets/packages/deriv_chart/assets/icons/symbols/otc_n225.png":"580d5ca62d48d9b7e345c4b1c7d3ddba","assets/packages/deriv_chart/assets/icons/symbols/otc_hsi.png":"188c16a5fd0aaf5549cb4b699cebd56d","assets/packages/deriv_chart/assets/icons/symbols/frxaudusd.png":"028051074b041db767963ab238dc3cd1","assets/packages/deriv_chart/assets/icons/symbols/crash500.png":"39f28e0d0a27526cf64341020c9cd9e9","assets/packages/deriv_chart/assets/icons/symbols/frxgbpnzd.png":"cb7dd4cdb203d45e80e4faaf5e940217","assets/packages/deriv_chart/assets/icons/symbols/otc_ftse.png":"73b5bf8e5ec68efee95e5db958098f79","assets/packages/deriv_chart/assets/icons/symbols/wldaud.png":"8b616a51d3c5a4bcc380fba175e00c41","assets/packages/deriv_chart/assets/icons/symbols/otc_fchi.png":"ab5ad3ff51b8cd40b533f36731b31dc9","assets/packages/deriv_chart/assets/icons/symbols/wldusd.png":"3b8ed9884c5d71e58676115ee69a0810","assets/packages/deriv_chart/assets/icons/symbols/frxbrousd.png":"db8cdc3fb067e7ede3c34671f4729c06","assets/packages/deriv_chart/assets/icons/symbols/jd25.png":"cd01e3e8b4b6c125df94e0d264da0b22","assets/packages/deriv_chart/assets/icons/symbols/jd100.png":"7f92baac7278160fe76f6f4048205ee8","assets/packages/deriv_chart/assets/icons/symbols/boom600.png":"e7d0fe0010a9abf09b36d61a7f24a807","assets/packages/deriv_chart/assets/icons/symbols/frxgbpusd.png":"8e568a6f779c412f5cd1baf6c3e3aa5a","assets/packages/deriv_chart/assets/icons/symbols/frxusdnok.png":"d957fdfa55248112e72ee6eb0ad166b7","assets/packages/deriv_chart/assets/icons/symbols/crash300n.png":"811fe625af9befa1eb3116fe170da9d5","assets/packages/deriv_chart/assets/icons/symbols/ltcusd.png":"49c0bf02c99cc70f164329d4c794b884","assets/packages/deriv_chart/assets/icons/symbols/frxaudjpy.png":"605d3cdb4e33aa0730a52749583e2d62","assets/packages/deriv_chart/assets/icons/symbols/frxgbpaud.png":"b093bacf9b6b37256cbb7454d5c0c618","assets/packages/deriv_chart/assets/icons/symbols/cryxmrusd.png":"272edb110a2628fc60d2fb0bd237cc50","assets/packages/deriv_chart/assets/icons/symbols/xmrusd.png":"ecdce25fe2272992147875c80aa5564c","assets/packages/deriv_chart/assets/icons/symbols/frxeurnzd.png":"5e6997f168d3f146c492d0eed9503b0b","assets/packages/deriv_chart/assets/icons/symbols/otc_aex.png":"64a73c5aaa260a3602a1ca15dea3dd20","assets/packages/deriv_chart/assets/icons/symbols/r_75.png":"f4eb1ee786942ebbb7e848110908f7fb","assets/packages/deriv_chart/assets/icons/symbols/rdbull.png":"12af5d77b14beee08abe5e393c1a7ad7","assets/packages/deriv_chart/assets/icons/symbols/frxgbpjpy.png":"42bb921c4580882c07be30471ae97372","assets/packages/deriv_chart/assets/icons/symbols/1hz250v.png":"29cf175d192812b50c29135b62663d12","assets/packages/deriv_chart/assets/icons/symbols/crybtcusd.png":"02fb37d758a94ce064225cc50345ea93","assets/packages/deriv_chart/assets/icons/symbols/otc_ssmi.png":"1561a92a36989a64f85c7221384c4957","assets/packages/deriv_chart/assets/icons/symbols/frxgbpcad.png":"be914c3dd3192d404b79e5f7d3f943f9","assets/packages/deriv_chart/assets/icons/symbols/frxxauusd.png":"cbb4e956663bc0b6b98c57d1cac9068e","assets/packages/deriv_chart/assets/icons/symbols/crybnbusd.png":"372740ee2ae319f26fde7ef7a81ac359","assets/packages/deriv_chart/assets/icons/symbols/frxxpdusd.png":"a0e35bd0c63db9ba0c421a236a06e76a","assets/packages/deriv_chart/assets/icons/symbols/stprng4.png":"59f21b9ca82cd242c7babc32f829584b","assets/packages/deriv_chart/assets/icons/symbols/cryzecusd.png":"ea36d64aa57f4e1d44bc9c5ce9284ad9","assets/packages/deriv_chart/assets/icons/symbols/cryxrpusd.png":"5d0c030de1adb482f7796945ae149117","assets/packages/deriv_chart/assets/icons/symbols/1hz75v.png":"00e0249936eeb2d0b6bef1eef367e1bd","assets/packages/deriv_chart/assets/icons/symbols/frxnzdusd.png":"bc348f3842a0451f56bd8bb3e734204b","assets/packages/deriv_chart/assets/icons/symbols/jd150.png":"3e60df618ae2f598dd50e0488b075861","assets/packages/deriv_chart/assets/icons/symbols/frxusdpln.png":"d980230b5ea98c9b5d002a3cb8c84c13","assets/packages/deriv_chart/assets/icons/symbols/bnbusd.png":"3d5b95e1f0195528fc798ea8be00ca14","assets/packages/deriv_chart/assets/icons/symbols/jd50.png":"8e492b906a94357dbf50db14385c527a","assets/packages/deriv_chart/assets/icons/symbols/r_10.png":"1b9cb2c68df961025c42572a2034add9","assets/packages/deriv_chart/assets/icons/symbols/frxgbpchf.png":"226b953b636290e10055d14bca9b5bc0","assets/packages/deriv_chart/assets/icons/symbols/wldxau.png":"b2ce679571222597252272b0e06ce6fc","assets/packages/deriv_chart/assets/icons/symbols/frxxagusd.png":"3e87df9dd6cc2fc9cfc9871e0c624465","assets/packages/deriv_chart/assets/icons/symbols/frxaudnzd.png":"8a0984ff7646f0d9b97496bb4e8099a8","assets/packages/deriv_chart/assets/icons/symbols/jd200.png":"71c8b672dafa03ff61e437067bda3145","assets/packages/deriv_chart/assets/icons/symbols/ethusd.png":"bcdd0cd2cfcaa223c3d4ccef318fd503","assets/packages/deriv_chart/assets/icons/symbols/wldeur.png":"a03b5ef547219641244d7951fe0717b3","assets/packages/deriv_chart/assets/icons/symbols/frxusdsek.png":"de4d5275c29f934ade5b7528186aafa2","assets/packages/deriv_chart/assets/icons/symbols/otc_as51.png":"2d461c07e758cec3817d4981d7dcbb4f","assets/packages/deriv_chart/assets/icons/symbols/frxusdcad.png":"e8c3bf13c091879e68111700e9ec74e6","assets/packages/deriv_chart/assets/icons/symbols/1hz150v.png":"3740f1b30922d9b1bcf242484e1f6756","assets/packages/deriv_chart/assets/icons/symbols/crydshusd.png":"d1b4a516dbf4bf2a01f781e4bdd340af","assets/packages/deriv_chart/assets/icons/symbols/stprng2.png":"52ef0246327a78ba16cadeebb0e72218","assets/packages/deriv_chart/assets/icons/symbols/crash600.png":"5b1df8ebe581015213efb91483eb3a4a","assets/packages/deriv_chart/assets/icons/symbols/r_100.png":"5ae8eea5b3daa45c76ce1caf01d2acfc","assets/packages/deriv_chart/assets/icons/symbols/frxusdjpy.png":"2a27170f100f619036d79e164566e005","assets/packages/deriv_chart/assets/icons/symbols/frxgbpnok.png":"b8c7d9f5574f84e68351fb8a139408f0","assets/packages/deriv_chart/assets/icons/symbols/frxeurchf.png":"1a66826ef57b967efeb3e67673609eac","assets/packages/deriv_chart/assets/icons/symbols/r_25.png":"8ca61698280cfcf332914b2a47626b38","assets/packages/deriv_chart/assets/icons/symbols/frxeurjpy.png":"aeb0d0b3064206ade4551fb584fa28aa","assets/packages/deriv_chart/assets/icons/symbols/stprng5.png":"f5dc31bfa50f73421d15d43555d61906","assets/packages/deriv_chart/assets/fonts/quill_icons.ttf":"03494ad65f94a60634d32c3ab65fa178","assets/FontManifest.json":"84fa087dba170bffc9f3713aeebe836c","assets/AssetManifest.bin":"d7b436aa92de7ddda07c1129b0a82161","assets/AssetManifest.json":"6bb85219f59197eca57320f5729bffea","canvaskit/chromium/canvaskit.wasm":"b1ac05b29c127d86df4bcfbf50dd902a","canvaskit/chromium/canvaskit.js":"671c6b4f8fcc199dcc551c7bb125f239","canvaskit/chromium/canvaskit.js.symbols":"a012ed99ccba193cf96bb2643003f6fc","canvaskit/skwasm.worker.js":"89990e8c92bcb123999aa81f7e203b1c","canvaskit/skwasm.js":"694fda5704053957c2594de355805228","canvaskit/canvaskit.wasm":"1f237a213d7370cf95f443d896176460","canvaskit/canvaskit.js":"66177750aff65a66cb07bb44b8c6422b","canvaskit/skwasm.wasm":"9f0c0c02b82a910d12ce0543ec130e60","canvaskit/canvaskit.js.symbols":"48c83a2ce573d9692e8d970e288d75f7","canvaskit/skwasm.js.symbols":"262f4827a1317abb59d71d6c587a93e2","favicon.png":"5dcef449791fa27946b3d35ad8803796","flutter_bootstrap.js":"5b2e04d8e2b4ca167fa75edb24f22813","version.json":"1756499d77011c0be564a414e567db76","main.dart.js":"0f2a6b62b3115acb559d6a70be05919a"},CORE=["main.dart.js","index.html","flutter_bootstrap.js","assets/AssetManifest.bin.json","assets/FontManifest.json"];async function downloadOffline(){var s=[],a=await caches.open(CACHE_NAME),e={};for(var c of await a.keys()){var t=c.url.substring(origin.length+1);""==t&&(t="/"),e[t]=!0}for(var d of Object.keys(RESOURCES))e[d]||s.push(d);return a.addAll(s)}function onlineFirst(s){return s.respondWith(fetch(s.request).then(a=>caches.open(CACHE_NAME).then(e=>(e.put(s.request,a.clone()),a))).catch(a=>caches.open(CACHE_NAME).then(e=>e.match(s.request).then(s=>{if(null!=s)return s;throw a}))))}self.addEventListener("install",s=>(self.skipWaiting(),s.waitUntil(caches.open(TEMP).then(s=>s.addAll(CORE.map(s=>new Request(s,{cache:"reload"}))))))),self.addEventListener("activate",function(s){return s.waitUntil(async function(){try{var s=await caches.open(CACHE_NAME),a=await caches.open(TEMP),e=await caches.open(MANIFEST),c=await e.match("manifest");if(!c){for(var t of(await caches.delete(CACHE_NAME),s=await caches.open(CACHE_NAME),await a.keys())){var d=await a.match(t);await s.put(t,d)}return await caches.delete(TEMP),await e.put("manifest",new Response(JSON.stringify(RESOURCES))),void self.clients.claim()}var b=await c.json(),r=self.location.origin;for(var t of await s.keys()){var n=t.url.substring(r.length+1);""==n&&(n="/"),RESOURCES[n]&&RESOURCES[n]==b[n]||await s.delete(t)}for(var t of await a.keys())d=await a.match(t),await s.put(t,d);return await caches.delete(TEMP),await e.put("manifest",new Response(JSON.stringify(RESOURCES))),void self.clients.claim()}catch(s){console.error("Failed to upgrade service worker: "+s),await caches.delete(CACHE_NAME),await caches.delete(TEMP),await caches.delete(MANIFEST)}}())}),self.addEventListener("fetch",s=>{if("GET"===s.request.method){var a=self.location.origin,e=s.request.url.substring(a.length+1);if(-1!=e.indexOf("?v=")&&(e=e.split("?v=")[0]),(s.request.url==a||s.request.url.startsWith(a+"/#")||""==e)&&(e="/"),RESOURCES[e])return"/"==e?onlineFirst(s):void s.respondWith(caches.open(CACHE_NAME).then(a=>a.match(s.request).then(e=>e||fetch(s.request).then(e=>(e&&Boolean(e.ok)&&a.put(s.request,e.clone()),e)))))}}),self.addEventListener("message",s=>{"skipWaiting"!==s.data?"downloadOffline"!==s.data||downloadOffline():self.skipWaiting()});
|
|
1
|
+
"use strict";const MANIFEST="flutter-app-manifest",TEMP="flutter-temp-cache",CACHE_NAME="flutter-app-cache",RESOURCES={"flutter.js":"f393d3c16b631f36852323de8e583132","manifest.json":"a06b13fcde5dfd1e240278072e116d12","index.html":"c30a00d1b55dd61373bbf768d8519698","/":"c30a00d1b55dd61373bbf768d8519698","assets/shaders/ink_sparkle.frag":"ecc85a2e95f5e9f53123dcaf8cb9b6ce","assets/AssetManifest.bin.json":"c29b161ad32814a02d8fd4f6311b9362","assets/fonts/IBMPlexSans-Bold.woff2":"19210a59bf50a6ba73fa97433170b4cf","assets/fonts/IBMPlexSans-Regular.woff2":"4bb247144b2962b752857093491454e7","assets/fonts/MaterialIcons-Regular.otf":"e7069dfd19b331be16bed984668fe080","assets/NOTICES":"f2f295fcde21b2b29cac32a02aa91755","assets/packages/deriv_chart/assets/icons/icon_placeholder.png":"23e9167e0fd2be2b618b589ed8401a1a","assets/packages/deriv_chart/assets/icons/symbols/cryltcusd.png":"d961cacac37de35b0c6f9d4fc55b7a1a","assets/packages/deriv_chart/assets/icons/symbols/otc_spc.png":"88a8304d175de2a69aea8e3a14072ec2","assets/packages/deriv_chart/assets/icons/symbols/stprng3.png":"115ea1648f1be8b5bb8d0a2db9d18c87","assets/packages/deriv_chart/assets/icons/symbols/crash900.png":"29db0d9e0d030a327586822c236e4f80","assets/packages/deriv_chart/assets/icons/symbols/jd10.png":"5827fe4e43bff971d2c3291e207ee8d7","assets/packages/deriv_chart/assets/icons/symbols/cryethusd.png":"d4520def9dba50f3758cbe869db8ce0f","assets/packages/deriv_chart/assets/icons/symbols/otc_dji.png":"faa508c0bfd406385ab03605d881b3c6","assets/packages/deriv_chart/assets/icons/symbols/jd75.png":"9b1491e264dff3e6331059975fa69d4b","assets/packages/deriv_chart/assets/icons/symbols/dshusd.png":"d5e83cc9d822d803830d238f28357b9b","assets/packages/deriv_chart/assets/icons/symbols/frxnzdjpy.png":"f7e9bdd69b05f1e03f0639d159d00a71","assets/packages/deriv_chart/assets/icons/symbols/frxeuraud.png":"74165ef668f66beabacb69e6e475b43d","assets/packages/deriv_chart/assets/icons/symbols/boom1000.png":"658219fb4846c9733a1aaf1b6196eafd","assets/packages/deriv_chart/assets/icons/symbols/1hz10v.png":"33928dfb84047f43a7f4a1c4965fdc47","assets/packages/deriv_chart/assets/icons/symbols/btcusd.png":"822ecfb1d3138c3b30c08d8de090c3b5","assets/packages/deriv_chart/assets/icons/symbols/zecusd.png":"0585b34fb4febfffa9d61cb1c95e9f55","assets/packages/deriv_chart/assets/icons/symbols/bchusd.png":"1433535ddc1ae0fec062c6cc8e5840d6","assets/packages/deriv_chart/assets/icons/symbols/frxusdchf.png":"73c02e4807d10f708314a493f0e68a95","assets/packages/deriv_chart/assets/icons/symbols/stprng.png":"7b0a1573c077dbdd99ab250b97ad6baf","assets/packages/deriv_chart/assets/icons/symbols/rdbear.png":"9f8e0320e8ece5613c760e5f19a8ed8e","assets/packages/deriv_chart/assets/icons/symbols/eosusd.png":"c1ab7f666c4bc67dfa6cccf9746165d1","assets/packages/deriv_chart/assets/icons/symbols/boom900.png":"cd9ee7eb5a89465bbde2ff06ddfbf160","assets/packages/deriv_chart/assets/icons/symbols/frxeurgbp.png":"64f2f86f9299d5408e355711023eca39","assets/packages/deriv_chart/assets/icons/symbols/frxxptusd.png":"547157baf2cb6a7e59dceb47e7a64af7","assets/packages/deriv_chart/assets/icons/symbols/frxeurcad.png":"dbfeb90340a097fac57fe24e439d57d8","assets/packages/deriv_chart/assets/icons/symbols/boom300n.png":"99ef1bfce27f82daddd9afd1b369c869","assets/packages/deriv_chart/assets/icons/symbols/1hz100v.png":"748c68b512a4829ed27c6a2091007188","assets/packages/deriv_chart/assets/icons/symbols/otc_sx5e.png":"32025efa989108bf7a08050d8319aa1d","assets/packages/deriv_chart/assets/icons/symbols/frxaudchf.png":"774fdfbacb2fb4d90515ce21b60d6df2","assets/packages/deriv_chart/assets/icons/symbols/otc_ndx.png":"024822877caaae778907d7e0a8bd23cc","assets/packages/deriv_chart/assets/icons/symbols/xrpusd.png":"3c1edf55f4b1e20ac79ef9eeb0171545","assets/packages/deriv_chart/assets/icons/symbols/otc_gdaxi.png":"795474c76bbb1467d97e98ab728e4d29","assets/packages/deriv_chart/assets/icons/symbols/frxeurusd.png":"87d65825df117aa6320059e251870c85","assets/packages/deriv_chart/assets/icons/symbols/crash1000.png":"c395945dc308c217c0297de8456b99ba","assets/packages/deriv_chart/assets/icons/symbols/crybchusd.png":"e61eedb43a2f79f2c2c8b4c892c5f5fc","assets/packages/deriv_chart/assets/icons/symbols/1hz200v.png":"07beabc8c1e3db87cc1a85a1c95d0aee","assets/packages/deriv_chart/assets/icons/symbols/boom500.png":"528b46320ba6105fe33d26fe3449c915","assets/packages/deriv_chart/assets/icons/symbols/wldgbp.png":"4959c5698faf8daf0ce9704ffd5ab1eb","assets/packages/deriv_chart/assets/icons/symbols/cryeosusd.png":"43ae4baee03d269a0b9fb525781173b9","assets/packages/deriv_chart/assets/icons/symbols/1hz300v.png":"866689205aabb376470a4e98a2be9736","assets/packages/deriv_chart/assets/icons/symbols/1hz25v.png":"15ac231c2c2bb0fa05dd91bb5e242799","assets/packages/deriv_chart/assets/icons/symbols/frxaudcad.png":"827bb3e47b0e64ddbf1bb5ae61a01033","assets/packages/deriv_chart/assets/icons/symbols/frxusdmxn.png":"f08040e1eefd9b94d74982301d7e4713","assets/packages/deriv_chart/assets/icons/symbols/1hz50v.png":"40eb9bc93e6e7feedbd74bfcf1683109","assets/packages/deriv_chart/assets/icons/symbols/r_50.png":"1d4f5fe7ecf5377a2e02235452917745","assets/packages/deriv_chart/assets/icons/symbols/otc_n225.png":"580d5ca62d48d9b7e345c4b1c7d3ddba","assets/packages/deriv_chart/assets/icons/symbols/otc_hsi.png":"188c16a5fd0aaf5549cb4b699cebd56d","assets/packages/deriv_chart/assets/icons/symbols/frxaudusd.png":"028051074b041db767963ab238dc3cd1","assets/packages/deriv_chart/assets/icons/symbols/crash500.png":"39f28e0d0a27526cf64341020c9cd9e9","assets/packages/deriv_chart/assets/icons/symbols/frxgbpnzd.png":"cb7dd4cdb203d45e80e4faaf5e940217","assets/packages/deriv_chart/assets/icons/symbols/otc_ftse.png":"73b5bf8e5ec68efee95e5db958098f79","assets/packages/deriv_chart/assets/icons/symbols/wldaud.png":"8b616a51d3c5a4bcc380fba175e00c41","assets/packages/deriv_chart/assets/icons/symbols/otc_fchi.png":"ab5ad3ff51b8cd40b533f36731b31dc9","assets/packages/deriv_chart/assets/icons/symbols/wldusd.png":"3b8ed9884c5d71e58676115ee69a0810","assets/packages/deriv_chart/assets/icons/symbols/frxbrousd.png":"db8cdc3fb067e7ede3c34671f4729c06","assets/packages/deriv_chart/assets/icons/symbols/jd25.png":"cd01e3e8b4b6c125df94e0d264da0b22","assets/packages/deriv_chart/assets/icons/symbols/jd100.png":"7f92baac7278160fe76f6f4048205ee8","assets/packages/deriv_chart/assets/icons/symbols/boom600.png":"e7d0fe0010a9abf09b36d61a7f24a807","assets/packages/deriv_chart/assets/icons/symbols/frxgbpusd.png":"8e568a6f779c412f5cd1baf6c3e3aa5a","assets/packages/deriv_chart/assets/icons/symbols/frxusdnok.png":"d957fdfa55248112e72ee6eb0ad166b7","assets/packages/deriv_chart/assets/icons/symbols/crash300n.png":"811fe625af9befa1eb3116fe170da9d5","assets/packages/deriv_chart/assets/icons/symbols/ltcusd.png":"49c0bf02c99cc70f164329d4c794b884","assets/packages/deriv_chart/assets/icons/symbols/frxaudjpy.png":"605d3cdb4e33aa0730a52749583e2d62","assets/packages/deriv_chart/assets/icons/symbols/frxgbpaud.png":"b093bacf9b6b37256cbb7454d5c0c618","assets/packages/deriv_chart/assets/icons/symbols/cryxmrusd.png":"272edb110a2628fc60d2fb0bd237cc50","assets/packages/deriv_chart/assets/icons/symbols/xmrusd.png":"ecdce25fe2272992147875c80aa5564c","assets/packages/deriv_chart/assets/icons/symbols/frxeurnzd.png":"5e6997f168d3f146c492d0eed9503b0b","assets/packages/deriv_chart/assets/icons/symbols/otc_aex.png":"64a73c5aaa260a3602a1ca15dea3dd20","assets/packages/deriv_chart/assets/icons/symbols/r_75.png":"f4eb1ee786942ebbb7e848110908f7fb","assets/packages/deriv_chart/assets/icons/symbols/rdbull.png":"12af5d77b14beee08abe5e393c1a7ad7","assets/packages/deriv_chart/assets/icons/symbols/frxgbpjpy.png":"42bb921c4580882c07be30471ae97372","assets/packages/deriv_chart/assets/icons/symbols/1hz250v.png":"29cf175d192812b50c29135b62663d12","assets/packages/deriv_chart/assets/icons/symbols/crybtcusd.png":"02fb37d758a94ce064225cc50345ea93","assets/packages/deriv_chart/assets/icons/symbols/otc_ssmi.png":"1561a92a36989a64f85c7221384c4957","assets/packages/deriv_chart/assets/icons/symbols/frxgbpcad.png":"be914c3dd3192d404b79e5f7d3f943f9","assets/packages/deriv_chart/assets/icons/symbols/frxxauusd.png":"cbb4e956663bc0b6b98c57d1cac9068e","assets/packages/deriv_chart/assets/icons/symbols/crybnbusd.png":"372740ee2ae319f26fde7ef7a81ac359","assets/packages/deriv_chart/assets/icons/symbols/frxxpdusd.png":"a0e35bd0c63db9ba0c421a236a06e76a","assets/packages/deriv_chart/assets/icons/symbols/stprng4.png":"59f21b9ca82cd242c7babc32f829584b","assets/packages/deriv_chart/assets/icons/symbols/cryzecusd.png":"ea36d64aa57f4e1d44bc9c5ce9284ad9","assets/packages/deriv_chart/assets/icons/symbols/cryxrpusd.png":"5d0c030de1adb482f7796945ae149117","assets/packages/deriv_chart/assets/icons/symbols/1hz75v.png":"00e0249936eeb2d0b6bef1eef367e1bd","assets/packages/deriv_chart/assets/icons/symbols/frxnzdusd.png":"bc348f3842a0451f56bd8bb3e734204b","assets/packages/deriv_chart/assets/icons/symbols/jd150.png":"3e60df618ae2f598dd50e0488b075861","assets/packages/deriv_chart/assets/icons/symbols/frxusdpln.png":"d980230b5ea98c9b5d002a3cb8c84c13","assets/packages/deriv_chart/assets/icons/symbols/bnbusd.png":"3d5b95e1f0195528fc798ea8be00ca14","assets/packages/deriv_chart/assets/icons/symbols/jd50.png":"8e492b906a94357dbf50db14385c527a","assets/packages/deriv_chart/assets/icons/symbols/r_10.png":"1b9cb2c68df961025c42572a2034add9","assets/packages/deriv_chart/assets/icons/symbols/frxgbpchf.png":"226b953b636290e10055d14bca9b5bc0","assets/packages/deriv_chart/assets/icons/symbols/wldxau.png":"b2ce679571222597252272b0e06ce6fc","assets/packages/deriv_chart/assets/icons/symbols/frxxagusd.png":"3e87df9dd6cc2fc9cfc9871e0c624465","assets/packages/deriv_chart/assets/icons/symbols/frxaudnzd.png":"8a0984ff7646f0d9b97496bb4e8099a8","assets/packages/deriv_chart/assets/icons/symbols/jd200.png":"71c8b672dafa03ff61e437067bda3145","assets/packages/deriv_chart/assets/icons/symbols/ethusd.png":"bcdd0cd2cfcaa223c3d4ccef318fd503","assets/packages/deriv_chart/assets/icons/symbols/wldeur.png":"a03b5ef547219641244d7951fe0717b3","assets/packages/deriv_chart/assets/icons/symbols/frxusdsek.png":"de4d5275c29f934ade5b7528186aafa2","assets/packages/deriv_chart/assets/icons/symbols/otc_as51.png":"2d461c07e758cec3817d4981d7dcbb4f","assets/packages/deriv_chart/assets/icons/symbols/frxusdcad.png":"e8c3bf13c091879e68111700e9ec74e6","assets/packages/deriv_chart/assets/icons/symbols/1hz150v.png":"3740f1b30922d9b1bcf242484e1f6756","assets/packages/deriv_chart/assets/icons/symbols/crydshusd.png":"d1b4a516dbf4bf2a01f781e4bdd340af","assets/packages/deriv_chart/assets/icons/symbols/stprng2.png":"52ef0246327a78ba16cadeebb0e72218","assets/packages/deriv_chart/assets/icons/symbols/crash600.png":"5b1df8ebe581015213efb91483eb3a4a","assets/packages/deriv_chart/assets/icons/symbols/r_100.png":"5ae8eea5b3daa45c76ce1caf01d2acfc","assets/packages/deriv_chart/assets/icons/symbols/frxusdjpy.png":"2a27170f100f619036d79e164566e005","assets/packages/deriv_chart/assets/icons/symbols/frxgbpnok.png":"b8c7d9f5574f84e68351fb8a139408f0","assets/packages/deriv_chart/assets/icons/symbols/frxeurchf.png":"1a66826ef57b967efeb3e67673609eac","assets/packages/deriv_chart/assets/icons/symbols/r_25.png":"8ca61698280cfcf332914b2a47626b38","assets/packages/deriv_chart/assets/icons/symbols/frxeurjpy.png":"aeb0d0b3064206ade4551fb584fa28aa","assets/packages/deriv_chart/assets/icons/symbols/stprng5.png":"f5dc31bfa50f73421d15d43555d61906","assets/packages/deriv_chart/assets/fonts/quill_icons.ttf":"03494ad65f94a60634d32c3ab65fa178","assets/FontManifest.json":"84fa087dba170bffc9f3713aeebe836c","assets/AssetManifest.bin":"d7b436aa92de7ddda07c1129b0a82161","assets/AssetManifest.json":"6bb85219f59197eca57320f5729bffea","canvaskit/chromium/canvaskit.wasm":"b1ac05b29c127d86df4bcfbf50dd902a","canvaskit/chromium/canvaskit.js":"671c6b4f8fcc199dcc551c7bb125f239","canvaskit/chromium/canvaskit.js.symbols":"a012ed99ccba193cf96bb2643003f6fc","canvaskit/skwasm.worker.js":"89990e8c92bcb123999aa81f7e203b1c","canvaskit/skwasm.js":"694fda5704053957c2594de355805228","canvaskit/canvaskit.wasm":"1f237a213d7370cf95f443d896176460","canvaskit/canvaskit.js":"66177750aff65a66cb07bb44b8c6422b","canvaskit/skwasm.wasm":"9f0c0c02b82a910d12ce0543ec130e60","canvaskit/canvaskit.js.symbols":"48c83a2ce573d9692e8d970e288d75f7","canvaskit/skwasm.js.symbols":"262f4827a1317abb59d71d6c587a93e2","favicon.png":"5dcef449791fa27946b3d35ad8803796","flutter_bootstrap.js":"c9fa38e038b7bd877152f08685d821e9","version.json":"1756499d77011c0be564a414e567db76","main.dart.js":"34b3dd36c7b86f6db5207960471d0d81"},CORE=["main.dart.js","index.html","flutter_bootstrap.js","assets/AssetManifest.bin.json","assets/FontManifest.json"];async function downloadOffline(){var s=[],a=await caches.open(CACHE_NAME),e={};for(var c of await a.keys()){var t=c.url.substring(origin.length+1);""==t&&(t="/"),e[t]=!0}for(var d of Object.keys(RESOURCES))e[d]||s.push(d);return a.addAll(s)}function onlineFirst(s){return s.respondWith(fetch(s.request).then(a=>caches.open(CACHE_NAME).then(e=>(e.put(s.request,a.clone()),a))).catch(a=>caches.open(CACHE_NAME).then(e=>e.match(s.request).then(s=>{if(null!=s)return s;throw a}))))}self.addEventListener("install",s=>(self.skipWaiting(),s.waitUntil(caches.open(TEMP).then(s=>s.addAll(CORE.map(s=>new Request(s,{cache:"reload"}))))))),self.addEventListener("activate",function(s){return s.waitUntil(async function(){try{var s=await caches.open(CACHE_NAME),a=await caches.open(TEMP),e=await caches.open(MANIFEST),c=await e.match("manifest");if(!c){for(var t of(await caches.delete(CACHE_NAME),s=await caches.open(CACHE_NAME),await a.keys())){var d=await a.match(t);await s.put(t,d)}return await caches.delete(TEMP),await e.put("manifest",new Response(JSON.stringify(RESOURCES))),void self.clients.claim()}var b=await c.json(),r=self.location.origin;for(var t of await s.keys()){var n=t.url.substring(r.length+1);""==n&&(n="/"),RESOURCES[n]&&RESOURCES[n]==b[n]||await s.delete(t)}for(var t of await a.keys())d=await a.match(t),await s.put(t,d);return await caches.delete(TEMP),await e.put("manifest",new Response(JSON.stringify(RESOURCES))),void self.clients.claim()}catch(s){console.error("Failed to upgrade service worker: "+s),await caches.delete(CACHE_NAME),await caches.delete(TEMP),await caches.delete(MANIFEST)}}())}),self.addEventListener("fetch",s=>{if("GET"===s.request.method){var a=self.location.origin,e=s.request.url.substring(a.length+1);if(-1!=e.indexOf("?v=")&&(e=e.split("?v=")[0]),(s.request.url==a||s.request.url.startsWith(a+"/#")||""==e)&&(e="/"),RESOURCES[e])return"/"==e?onlineFirst(s):void s.respondWith(caches.open(CACHE_NAME).then(a=>a.match(s.request).then(e=>e||fetch(s.request).then(e=>(e&&Boolean(e.ok)&&a.put(s.request,e.clone()),e)))))}}),self.addEventListener("message",s=>{"skipWaiting"!==s.data?"downloadOffline"!==s.data||downloadOffline():self.skipWaiting()});
|