claude-coach 0.0.1 → 0.0.2

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/README.md CHANGED
@@ -21,7 +21,7 @@ First, [download the latest skill from GitHub Releases](https://github.com/felix
21
21
 
22
22
  ### Creating a plan
23
23
 
24
- Prompt Claude with something like this:
24
+ Use the most capable model available to you (as I'm writing this, that's Opus 4.5). Prompt Claude with something like this:
25
25
 
26
26
  > Help me create a training plan for the Ironman 70.3 Oceanside on March 29th 2026 using the "coach" skill.
27
27
 
@@ -0,0 +1,105 @@
1
+ -- Core activity data
2
+ CREATE TABLE IF NOT EXISTS activities (
3
+ id INTEGER PRIMARY KEY, -- Strava activity ID
4
+ name TEXT,
5
+ sport_type TEXT, -- Run, Ride, Swim, etc.
6
+ start_date TEXT, -- ISO 8601 UTC
7
+ elapsed_time INTEGER, -- seconds
8
+ moving_time INTEGER, -- seconds
9
+ distance REAL, -- meters
10
+ total_elevation_gain REAL, -- meters
11
+ average_speed REAL, -- m/s
12
+ max_speed REAL, -- m/s
13
+ average_heartrate REAL,
14
+ max_heartrate REAL,
15
+ average_watts REAL, -- cycling/running power
16
+ max_watts REAL,
17
+ weighted_average_watts REAL, -- normalized power
18
+ kilojoules REAL,
19
+ suffer_score INTEGER, -- Strava's relative effort
20
+ average_cadence REAL,
21
+ calories REAL,
22
+ description TEXT,
23
+ workout_type INTEGER, -- 0=default, 1=race, 2=workout, 3=long run
24
+ gear_id TEXT,
25
+ raw_json TEXT, -- full Strava response as JSON
26
+ synced_at TEXT DEFAULT (datetime('now'))
27
+ );
28
+
29
+ -- Time-series streams (HR, power, pace over time)
30
+ CREATE TABLE IF NOT EXISTS streams (
31
+ activity_id INTEGER PRIMARY KEY,
32
+ time_data TEXT, -- JSON array: seconds from start
33
+ distance_data TEXT, -- JSON array: cumulative meters
34
+ heartrate_data TEXT, -- JSON array
35
+ watts_data TEXT, -- JSON array
36
+ cadence_data TEXT, -- JSON array
37
+ altitude_data TEXT, -- JSON array
38
+ velocity_data TEXT, -- JSON array: m/s
39
+ FOREIGN KEY (activity_id) REFERENCES activities(id)
40
+ );
41
+
42
+ -- Athlete profile
43
+ CREATE TABLE IF NOT EXISTS athlete (
44
+ id INTEGER PRIMARY KEY,
45
+ firstname TEXT,
46
+ lastname TEXT,
47
+ weight REAL, -- kg
48
+ ftp INTEGER, -- functional threshold power (watts)
49
+ max_heartrate INTEGER,
50
+ raw_json TEXT,
51
+ updated_at TEXT DEFAULT (datetime('now'))
52
+ );
53
+
54
+ -- Training goals
55
+ CREATE TABLE IF NOT EXISTS goals (
56
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
57
+ event_name TEXT, -- "Ironman 70.3 Oceanside"
58
+ event_date TEXT, -- ISO 8601
59
+ event_type TEXT, -- triathlon, marathon, ultra, century
60
+ notes TEXT, -- constraints, injuries, etc.
61
+ created_at TEXT DEFAULT (datetime('now'))
62
+ );
63
+
64
+ -- Sync metadata
65
+ CREATE TABLE IF NOT EXISTS sync_log (
66
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
67
+ started_at TEXT,
68
+ completed_at TEXT,
69
+ activities_synced INTEGER,
70
+ status TEXT -- success, failed, partial
71
+ );
72
+
73
+ -- Indexes for common queries
74
+ CREATE INDEX IF NOT EXISTS idx_activities_date ON activities(start_date);
75
+ CREATE INDEX IF NOT EXISTS idx_activities_sport ON activities(sport_type);
76
+ CREATE INDEX IF NOT EXISTS idx_activities_sport_date ON activities(sport_type, start_date);
77
+
78
+ -- Useful views
79
+ DROP VIEW IF EXISTS weekly_volume;
80
+ CREATE VIEW weekly_volume AS
81
+ SELECT
82
+ strftime('%Y-W%W', start_date) AS week,
83
+ sport_type,
84
+ COUNT(*) AS sessions,
85
+ ROUND(SUM(moving_time) / 3600.0, 1) AS hours,
86
+ ROUND(SUM(distance) / 1000.0, 1) AS km,
87
+ ROUND(AVG(average_heartrate), 0) AS avg_hr,
88
+ ROUND(AVG(suffer_score), 0) AS avg_effort
89
+ FROM activities
90
+ GROUP BY week, sport_type
91
+ ORDER BY week DESC, sport_type;
92
+
93
+ DROP VIEW IF EXISTS recent_activities;
94
+ CREATE VIEW recent_activities AS
95
+ SELECT
96
+ date(start_date) AS date,
97
+ sport_type,
98
+ name,
99
+ moving_time / 60 AS minutes,
100
+ ROUND(distance / 1000.0, 1) AS km,
101
+ ROUND(average_heartrate, 0) AS hr,
102
+ suffer_score
103
+ FROM activities
104
+ ORDER BY start_date DESC
105
+ LIMIT 50;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-coach",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "author": "Felix Rieseberg <felix@felixrieseberg.com> (https://felixrieseberg.com)",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -11,12 +11,13 @@
11
11
  "bin",
12
12
  "dist/**/*.js",
13
13
  "dist/**/*.d.ts",
14
+ "dist/**/*.sql",
14
15
  "templates"
15
16
  ],
16
17
  "scripts": {
17
18
  "start": "tsx src/cli.ts",
18
19
  "build": "npm run build:ts && npm run build:viewer && npm run build:skill",
19
- "build:ts": "tsc",
20
+ "build:ts": "tsc && cp src/db/schema.sql dist/db/",
20
21
  "build:viewer": "vite build --config vite.config.viewer.ts",
21
22
  "build:skill": "mkdir -p dist && cd skill && zip -r ../dist/coach-skill.zip . -x '*.DS_Store' && echo 'Skill packaged to dist/coach-skill.zip'",
22
23
  "dev": "tsx watch src/cli.ts",
@@ -35,7 +35,7 @@ ${a.join(`
35
35
  `)+`\r
36
36
  `+"END:VCALENDAR"}var vt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Hl(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Tt(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Mt={exports:{}};var Aa;function jl(){return Aa||(Aa=1,(function(e,s){(function(t){e.exports=t()})(function(){return(function t(a,i,n){function l(c,v){if(!i[c]){if(!a[c]){var y=typeof Tt=="function"&&Tt;if(!v&&y)return y(c,!0);if(o)return o(c,!0);var b=new Error("Cannot find module '"+c+"'");throw b.code="MODULE_NOT_FOUND",b}var m=i[c]={exports:{}};a[c][0].call(m.exports,function(C){var p=a[c][1][C];return l(p||C)},m,m.exports,t,a,i,n)}return i[c].exports}for(var o=typeof Tt=="function"&&Tt,u=0;u<n.length;u++)l(n[u]);return l})({1:[function(t,a,i){var n=t("./utils"),l=t("./support"),o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";i.encode=function(u){for(var c,v,y,b,m,C,p,d=[],h=0,w=u.length,k=w,x=n.getTypeOf(u)!=="string";h<u.length;)k=w-h,y=x?(c=u[h++],v=h<w?u[h++]:0,h<w?u[h++]:0):(c=u.charCodeAt(h++),v=h<w?u.charCodeAt(h++):0,h<w?u.charCodeAt(h++):0),b=c>>2,m=(3&c)<<4|v>>4,C=1<k?(15&v)<<2|y>>6:64,p=2<k?63&y:64,d.push(o.charAt(b)+o.charAt(m)+o.charAt(C)+o.charAt(p));return d.join("")},i.decode=function(u){var c,v,y,b,m,C,p=0,d=0,h="data:";if(u.substr(0,h.length)===h)throw new Error("Invalid base64 input, it looks like a data url.");var w,k=3*(u=u.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(u.charAt(u.length-1)===o.charAt(64)&&k--,u.charAt(u.length-2)===o.charAt(64)&&k--,k%1!=0)throw new Error("Invalid base64 input, bad content length.");for(w=l.uint8array?new Uint8Array(0|k):new Array(0|k);p<u.length;)c=o.indexOf(u.charAt(p++))<<2|(b=o.indexOf(u.charAt(p++)))>>4,v=(15&b)<<4|(m=o.indexOf(u.charAt(p++)))>>2,y=(3&m)<<6|(C=o.indexOf(u.charAt(p++))),w[d++]=c,m!==64&&(w[d++]=v),C!==64&&(w[d++]=y);return w}},{"./support":30,"./utils":32}],2:[function(t,a,i){var n=t("./external"),l=t("./stream/DataWorker"),o=t("./stream/Crc32Probe"),u=t("./stream/DataLengthProbe");function c(v,y,b,m,C){this.compressedSize=v,this.uncompressedSize=y,this.crc32=b,this.compression=m,this.compressedContent=C}c.prototype={getContentWorker:function(){var v=new l(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new u("data_length")),y=this;return v.on("end",function(){if(this.streamInfo.data_length!==y.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),v},getCompressedWorker:function(){return new l(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},c.createWorkerFrom=function(v,y,b){return v.pipe(new o).pipe(new u("uncompressedSize")).pipe(y.compressWorker(b)).pipe(new u("compressedSize")).withStreamInfo("compression",y)},a.exports=c},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(t,a,i){var n=t("./stream/GenericWorker");i.STORE={magic:"\0\0",compressWorker:function(){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}},i.DEFLATE=t("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(t,a,i){var n=t("./utils"),l=(function(){for(var o,u=[],c=0;c<256;c++){o=c;for(var v=0;v<8;v++)o=1&o?3988292384^o>>>1:o>>>1;u[c]=o}return u})();a.exports=function(o,u){return o!==void 0&&o.length?n.getTypeOf(o)!=="string"?(function(c,v,y,b){var m=l,C=b+y;c^=-1;for(var p=b;p<C;p++)c=c>>>8^m[255&(c^v[p])];return-1^c})(0|u,o,o.length,0):(function(c,v,y,b){var m=l,C=b+y;c^=-1;for(var p=b;p<C;p++)c=c>>>8^m[255&(c^v.charCodeAt(p))];return-1^c})(0|u,o,o.length,0):0}},{"./utils":32}],5:[function(t,a,i){i.base64=!1,i.binary=!1,i.dir=!1,i.createFolders=!0,i.date=null,i.compression=null,i.compressionOptions=null,i.comment=null,i.unixPermissions=null,i.dosPermissions=null},{}],6:[function(t,a,i){var n=null;n=typeof Promise<"u"?Promise:t("lie"),a.exports={Promise:n}},{lie:37}],7:[function(t,a,i){var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",l=t("pako"),o=t("./utils"),u=t("./stream/GenericWorker"),c=n?"uint8array":"array";function v(y,b){u.call(this,"FlateWorker/"+y),this._pako=null,this._pakoAction=y,this._pakoOptions=b,this.meta={}}i.magic="\b\0",o.inherits(v,u),v.prototype.processChunk=function(y){this.meta=y.meta,this._pako===null&&this._createPako(),this._pako.push(o.transformTo(c,y.data),!1)},v.prototype.flush=function(){u.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},v.prototype.cleanUp=function(){u.prototype.cleanUp.call(this),this._pako=null},v.prototype._createPako=function(){this._pako=new l[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var y=this;this._pako.onData=function(b){y.push({data:b,meta:y.meta})}},i.compressWorker=function(y){return new v("Deflate",y)},i.uncompressWorker=function(){return new v("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(t,a,i){function n(m,C){var p,d="";for(p=0;p<C;p++)d+=String.fromCharCode(255&m),m>>>=8;return d}function l(m,C,p,d,h,w){var k,x,_=m.file,W=m.compression,P=w!==c.utf8encode,H=o.transformTo("string",w(_.name)),z=o.transformTo("string",c.utf8encode(_.name)),Z=_.comment,ne=o.transformTo("string",w(Z)),F=o.transformTo("string",c.utf8encode(Z)),G=z.length!==_.name.length,f=F.length!==Z.length,q="",pe="",O="",le=_.dir,Y=_.date,ie={crc32:0,compressedSize:0,uncompressedSize:0};C&&!p||(ie.crc32=m.crc32,ie.compressedSize=m.compressedSize,ie.uncompressedSize=m.uncompressedSize);var E=0;C&&(E|=8),P||!G&&!f||(E|=2048);var I=0,$=0;le&&(I|=16),h==="UNIX"?($=798,I|=(function(V,be){var ge=V;return V||(ge=be?16893:33204),(65535&ge)<<16})(_.unixPermissions,le)):($=20,I|=(function(V){return 63&(V||0)})(_.dosPermissions)),k=Y.getUTCHours(),k<<=6,k|=Y.getUTCMinutes(),k<<=5,k|=Y.getUTCSeconds()/2,x=Y.getUTCFullYear()-1980,x<<=4,x|=Y.getUTCMonth()+1,x<<=5,x|=Y.getUTCDate(),G&&(pe=n(1,1)+n(v(H),4)+z,q+="up"+n(pe.length,2)+pe),f&&(O=n(1,1)+n(v(ne),4)+F,q+="uc"+n(O.length,2)+O);var X="";return X+=`
37
37
  \0`,X+=n(E,2),X+=W.magic,X+=n(k,2),X+=n(x,2),X+=n(ie.crc32,4),X+=n(ie.compressedSize,4),X+=n(ie.uncompressedSize,4),X+=n(H.length,2),X+=n(q.length,2),{fileRecord:y.LOCAL_FILE_HEADER+X+H+q,dirRecord:y.CENTRAL_FILE_HEADER+n($,2)+X+n(ne.length,2)+"\0\0\0\0"+n(I,4)+n(d,4)+H+q+ne}}var o=t("../utils"),u=t("../stream/GenericWorker"),c=t("../utf8"),v=t("../crc32"),y=t("../signature");function b(m,C,p,d){u.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=C,this.zipPlatform=p,this.encodeFileName=d,this.streamFiles=m,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}o.inherits(b,u),b.prototype.push=function(m){var C=m.meta.percent||0,p=this.entriesCount,d=this._sources.length;this.accumulate?this.contentBuffer.push(m):(this.bytesWritten+=m.data.length,u.prototype.push.call(this,{data:m.data,meta:{currentFile:this.currentFile,percent:p?(C+100*(p-d-1))/p:100}}))},b.prototype.openedSource=function(m){this.currentSourceOffset=this.bytesWritten,this.currentFile=m.file.name;var C=this.streamFiles&&!m.file.dir;if(C){var p=l(m,C,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:p.fileRecord,meta:{percent:0}})}else this.accumulate=!0},b.prototype.closedSource=function(m){this.accumulate=!1;var C=this.streamFiles&&!m.file.dir,p=l(m,C,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(p.dirRecord),C)this.push({data:(function(d){return y.DATA_DESCRIPTOR+n(d.crc32,4)+n(d.compressedSize,4)+n(d.uncompressedSize,4)})(m),meta:{percent:100}});else for(this.push({data:p.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},b.prototype.flush=function(){for(var m=this.bytesWritten,C=0;C<this.dirRecords.length;C++)this.push({data:this.dirRecords[C],meta:{percent:100}});var p=this.bytesWritten-m,d=(function(h,w,k,x,_){var W=o.transformTo("string",_(x));return y.CENTRAL_DIRECTORY_END+"\0\0\0\0"+n(h,2)+n(h,2)+n(w,4)+n(k,4)+n(W.length,2)+W})(this.dirRecords.length,p,m,this.zipComment,this.encodeFileName);this.push({data:d,meta:{percent:100}})},b.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},b.prototype.registerPrevious=function(m){this._sources.push(m);var C=this;return m.on("data",function(p){C.processChunk(p)}),m.on("end",function(){C.closedSource(C.previous.streamInfo),C._sources.length?C.prepareNextSource():C.end()}),m.on("error",function(p){C.error(p)}),this},b.prototype.resume=function(){return!!u.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},b.prototype.error=function(m){var C=this._sources;if(!u.prototype.error.call(this,m))return!1;for(var p=0;p<C.length;p++)try{C[p].error(m)}catch{}return!0},b.prototype.lock=function(){u.prototype.lock.call(this);for(var m=this._sources,C=0;C<m.length;C++)m[C].lock()},a.exports=b},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(t,a,i){var n=t("../compressions"),l=t("./ZipFileWorker");i.generateWorker=function(o,u,c){var v=new l(u.streamFiles,c,u.platform,u.encodeFileName),y=0;try{o.forEach(function(b,m){y++;var C=(function(w,k){var x=w||k,_=n[x];if(!_)throw new Error(x+" is not a valid compression method !");return _})(m.options.compression,u.compression),p=m.options.compressionOptions||u.compressionOptions||{},d=m.dir,h=m.date;m._compressWorker(C,p).withStreamInfo("file",{name:b,dir:d,date:h,comment:m.comment||"",unixPermissions:m.unixPermissions,dosPermissions:m.dosPermissions}).pipe(v)}),v.entriesCount=y}catch(b){v.error(b)}return v}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(t,a,i){function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var l=new n;for(var o in this)typeof this[o]!="function"&&(l[o]=this[o]);return l}}(n.prototype=t("./object")).loadAsync=t("./load"),n.support=t("./support"),n.defaults=t("./defaults"),n.version="3.10.1",n.loadAsync=function(l,o){return new n().loadAsync(l,o)},n.external=t("./external"),a.exports=n},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(t,a,i){var n=t("./utils"),l=t("./external"),o=t("./utf8"),u=t("./zipEntries"),c=t("./stream/Crc32Probe"),v=t("./nodejsUtils");function y(b){return new l.Promise(function(m,C){var p=b.decompressed.getContentWorker().pipe(new c);p.on("error",function(d){C(d)}).on("end",function(){p.streamInfo.crc32!==b.decompressed.crc32?C(new Error("Corrupted zip : CRC32 mismatch")):m()}).resume()})}a.exports=function(b,m){var C=this;return m=n.extend(m||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:o.utf8decode}),v.isNode&&v.isStream(b)?l.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):n.prepareContent("the loaded zip file",b,!0,m.optimizedBinaryString,m.base64).then(function(p){var d=new u(m);return d.load(p),d}).then(function(p){var d=[l.Promise.resolve(p)],h=p.files;if(m.checkCRC32)for(var w=0;w<h.length;w++)d.push(y(h[w]));return l.Promise.all(d)}).then(function(p){for(var d=p.shift(),h=d.files,w=0;w<h.length;w++){var k=h[w],x=k.fileNameStr,_=n.resolve(k.fileNameStr);C.file(_,k.decompressed,{binary:!0,optimizedBinaryString:!0,date:k.date,dir:k.dir,comment:k.fileCommentStr.length?k.fileCommentStr:null,unixPermissions:k.unixPermissions,dosPermissions:k.dosPermissions,createFolders:m.createFolders}),k.dir||(C.file(_).unsafeOriginalName=x)}return d.zipComment.length&&(C.comment=d.zipComment),C})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(t,a,i){var n=t("../utils"),l=t("../stream/GenericWorker");function o(u,c){l.call(this,"Nodejs stream input adapter for "+u),this._upstreamEnded=!1,this._bindStream(c)}n.inherits(o,l),o.prototype._bindStream=function(u){var c=this;(this._stream=u).pause(),u.on("data",function(v){c.push({data:v,meta:{percent:0}})}).on("error",function(v){c.isPaused?this.generatedError=v:c.error(v)}).on("end",function(){c.isPaused?c._upstreamEnded=!0:c.end()})},o.prototype.pause=function(){return!!l.prototype.pause.call(this)&&(this._stream.pause(),!0)},o.prototype.resume=function(){return!!l.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},a.exports=o},{"../stream/GenericWorker":28,"../utils":32}],13:[function(t,a,i){var n=t("readable-stream").Readable;function l(o,u,c){n.call(this,u),this._helper=o;var v=this;o.on("data",function(y,b){v.push(y)||v._helper.pause(),c&&c(b)}).on("error",function(y){v.emit("error",y)}).on("end",function(){v.push(null)})}t("../utils").inherits(l,n),l.prototype._read=function(){this._helper.resume()},a.exports=l},{"../utils":32,"readable-stream":16}],14:[function(t,a,i){a.exports={isNode:typeof Buffer<"u",newBufferFrom:function(n,l){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(n,l);if(typeof n=="number")throw new Error('The "data" argument must not be a number');return new Buffer(n,l)},allocBuffer:function(n){if(Buffer.alloc)return Buffer.alloc(n);var l=new Buffer(n);return l.fill(0),l},isBuffer:function(n){return Buffer.isBuffer(n)},isStream:function(n){return n&&typeof n.on=="function"&&typeof n.pause=="function"&&typeof n.resume=="function"}}},{}],15:[function(t,a,i){function n(_,W,P){var H,z=o.getTypeOf(W),Z=o.extend(P||{},v);Z.date=Z.date||new Date,Z.compression!==null&&(Z.compression=Z.compression.toUpperCase()),typeof Z.unixPermissions=="string"&&(Z.unixPermissions=parseInt(Z.unixPermissions,8)),Z.unixPermissions&&16384&Z.unixPermissions&&(Z.dir=!0),Z.dosPermissions&&16&Z.dosPermissions&&(Z.dir=!0),Z.dir&&(_=h(_)),Z.createFolders&&(H=d(_))&&w.call(this,H,!0);var ne=z==="string"&&Z.binary===!1&&Z.base64===!1;P&&P.binary!==void 0||(Z.binary=!ne),(W instanceof y&&W.uncompressedSize===0||Z.dir||!W||W.length===0)&&(Z.base64=!1,Z.binary=!0,W="",Z.compression="STORE",z="string");var F=null;F=W instanceof y||W instanceof u?W:C.isNode&&C.isStream(W)?new p(_,W):o.prepareContent(_,W,Z.binary,Z.optimizedBinaryString,Z.base64);var G=new b(_,F,Z);this.files[_]=G}var l=t("./utf8"),o=t("./utils"),u=t("./stream/GenericWorker"),c=t("./stream/StreamHelper"),v=t("./defaults"),y=t("./compressedObject"),b=t("./zipObject"),m=t("./generate"),C=t("./nodejsUtils"),p=t("./nodejs/NodejsStreamInputAdapter"),d=function(_){_.slice(-1)==="/"&&(_=_.substring(0,_.length-1));var W=_.lastIndexOf("/");return 0<W?_.substring(0,W):""},h=function(_){return _.slice(-1)!=="/"&&(_+="/"),_},w=function(_,W){return W=W!==void 0?W:v.createFolders,_=h(_),this.files[_]||n.call(this,_,null,{dir:!0,createFolders:W}),this.files[_]};function k(_){return Object.prototype.toString.call(_)==="[object RegExp]"}var x={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(_){var W,P,H;for(W in this.files)H=this.files[W],(P=W.slice(this.root.length,W.length))&&W.slice(0,this.root.length)===this.root&&_(P,H)},filter:function(_){var W=[];return this.forEach(function(P,H){_(P,H)&&W.push(H)}),W},file:function(_,W,P){if(arguments.length!==1)return _=this.root+_,n.call(this,_,W,P),this;if(k(_)){var H=_;return this.filter(function(Z,ne){return!ne.dir&&H.test(Z)})}var z=this.files[this.root+_];return z&&!z.dir?z:null},folder:function(_){if(!_)return this;if(k(_))return this.filter(function(z,Z){return Z.dir&&_.test(z)});var W=this.root+_,P=w.call(this,W),H=this.clone();return H.root=P.name,H},remove:function(_){_=this.root+_;var W=this.files[_];if(W||(_.slice(-1)!=="/"&&(_+="/"),W=this.files[_]),W&&!W.dir)delete this.files[_];else for(var P=this.filter(function(z,Z){return Z.name.slice(0,_.length)===_}),H=0;H<P.length;H++)delete this.files[P[H].name];return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(_){var W,P={};try{if((P=o.extend(_||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:l.utf8encode})).type=P.type.toLowerCase(),P.compression=P.compression.toUpperCase(),P.type==="binarystring"&&(P.type="string"),!P.type)throw new Error("No output type specified.");o.checkSupport(P.type),P.platform!=="darwin"&&P.platform!=="freebsd"&&P.platform!=="linux"&&P.platform!=="sunos"||(P.platform="UNIX"),P.platform==="win32"&&(P.platform="DOS");var H=P.comment||this.comment||"";W=m.generateWorker(this,P,H)}catch(z){(W=new u("error")).error(z)}return new c(W,P.type||"string",P.mimeType)},generateAsync:function(_,W){return this.generateInternalStream(_).accumulate(W)},generateNodeStream:function(_,W){return(_=_||{}).type||(_.type="nodebuffer"),this.generateInternalStream(_).toNodejsStream(W)}};a.exports=x},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(t,a,i){a.exports=t("stream")},{stream:void 0}],17:[function(t,a,i){var n=t("./DataReader");function l(o){n.call(this,o);for(var u=0;u<this.data.length;u++)o[u]=255&o[u]}t("../utils").inherits(l,n),l.prototype.byteAt=function(o){return this.data[this.zero+o]},l.prototype.lastIndexOfSignature=function(o){for(var u=o.charCodeAt(0),c=o.charCodeAt(1),v=o.charCodeAt(2),y=o.charCodeAt(3),b=this.length-4;0<=b;--b)if(this.data[b]===u&&this.data[b+1]===c&&this.data[b+2]===v&&this.data[b+3]===y)return b-this.zero;return-1},l.prototype.readAndCheckSignature=function(o){var u=o.charCodeAt(0),c=o.charCodeAt(1),v=o.charCodeAt(2),y=o.charCodeAt(3),b=this.readData(4);return u===b[0]&&c===b[1]&&v===b[2]&&y===b[3]},l.prototype.readData=function(o){if(this.checkOffset(o),o===0)return[];var u=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,u},a.exports=l},{"../utils":32,"./DataReader":18}],18:[function(t,a,i){var n=t("../utils");function l(o){this.data=o,this.length=o.length,this.index=0,this.zero=0}l.prototype={checkOffset:function(o){this.checkIndex(this.index+o)},checkIndex:function(o){if(this.length<this.zero+o||o<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+o+"). Corrupted zip ?")},setIndex:function(o){this.checkIndex(o),this.index=o},skip:function(o){this.setIndex(this.index+o)},byteAt:function(){},readInt:function(o){var u,c=0;for(this.checkOffset(o),u=this.index+o-1;u>=this.index;u--)c=(c<<8)+this.byteAt(u);return this.index+=o,c},readString:function(o){return n.transformTo("string",this.readData(o))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var o=this.readInt(4);return new Date(Date.UTC(1980+(o>>25&127),(o>>21&15)-1,o>>16&31,o>>11&31,o>>5&63,(31&o)<<1))}},a.exports=l},{"../utils":32}],19:[function(t,a,i){var n=t("./Uint8ArrayReader");function l(o){n.call(this,o)}t("../utils").inherits(l,n),l.prototype.readData=function(o){this.checkOffset(o);var u=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,u},a.exports=l},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,a,i){var n=t("./DataReader");function l(o){n.call(this,o)}t("../utils").inherits(l,n),l.prototype.byteAt=function(o){return this.data.charCodeAt(this.zero+o)},l.prototype.lastIndexOfSignature=function(o){return this.data.lastIndexOf(o)-this.zero},l.prototype.readAndCheckSignature=function(o){return o===this.readData(4)},l.prototype.readData=function(o){this.checkOffset(o);var u=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,u},a.exports=l},{"../utils":32,"./DataReader":18}],21:[function(t,a,i){var n=t("./ArrayReader");function l(o){n.call(this,o)}t("../utils").inherits(l,n),l.prototype.readData=function(o){if(this.checkOffset(o),o===0)return new Uint8Array(0);var u=this.data.subarray(this.zero+this.index,this.zero+this.index+o);return this.index+=o,u},a.exports=l},{"../utils":32,"./ArrayReader":17}],22:[function(t,a,i){var n=t("../utils"),l=t("../support"),o=t("./ArrayReader"),u=t("./StringReader"),c=t("./NodeBufferReader"),v=t("./Uint8ArrayReader");a.exports=function(y){var b=n.getTypeOf(y);return n.checkSupport(b),b!=="string"||l.uint8array?b==="nodebuffer"?new c(y):l.uint8array?new v(n.transformTo("uint8array",y)):new o(n.transformTo("array",y)):new u(y)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,a,i){i.LOCAL_FILE_HEADER="PK",i.CENTRAL_FILE_HEADER="PK",i.CENTRAL_DIRECTORY_END="PK",i.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",i.ZIP64_CENTRAL_DIRECTORY_END="PK",i.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(t,a,i){var n=t("./GenericWorker"),l=t("../utils");function o(u){n.call(this,"ConvertWorker to "+u),this.destType=u}l.inherits(o,n),o.prototype.processChunk=function(u){this.push({data:l.transformTo(this.destType,u.data),meta:u.meta})},a.exports=o},{"../utils":32,"./GenericWorker":28}],25:[function(t,a,i){var n=t("./GenericWorker"),l=t("../crc32");function o(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}t("../utils").inherits(o,n),o.prototype.processChunk=function(u){this.streamInfo.crc32=l(u.data,this.streamInfo.crc32||0),this.push(u)},a.exports=o},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,a,i){var n=t("../utils"),l=t("./GenericWorker");function o(u){l.call(this,"DataLengthProbe for "+u),this.propName=u,this.withStreamInfo(u,0)}n.inherits(o,l),o.prototype.processChunk=function(u){if(u){var c=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=c+u.data.length}l.prototype.processChunk.call(this,u)},a.exports=o},{"../utils":32,"./GenericWorker":28}],27:[function(t,a,i){var n=t("../utils"),l=t("./GenericWorker");function o(u){l.call(this,"DataWorker");var c=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,u.then(function(v){c.dataIsReady=!0,c.data=v,c.max=v&&v.length||0,c.type=n.getTypeOf(v),c.isPaused||c._tickAndRepeat()},function(v){c.error(v)})}n.inherits(o,l),o.prototype.cleanUp=function(){l.prototype.cleanUp.call(this),this.data=null},o.prototype.resume=function(){return!!l.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},o.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},o.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var u=null,c=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":u=this.data.substring(this.index,c);break;case"uint8array":u=this.data.subarray(this.index,c);break;case"array":case"nodebuffer":u=this.data.slice(this.index,c)}return this.index=c,this.push({data:u,meta:{percent:this.max?this.index/this.max*100:0}})},a.exports=o},{"../utils":32,"./GenericWorker":28}],28:[function(t,a,i){function n(l){this.name=l||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(l){this.emit("data",l)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(l){this.emit("error",l)}return!0},error:function(l){return!this.isFinished&&(this.isPaused?this.generatedError=l:(this.isFinished=!0,this.emit("error",l),this.previous&&this.previous.error(l),this.cleanUp()),!0)},on:function(l,o){return this._listeners[l].push(o),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(l,o){if(this._listeners[l])for(var u=0;u<this._listeners[l].length;u++)this._listeners[l][u].call(this,o)},pipe:function(l){return l.registerPrevious(this)},registerPrevious:function(l){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=l.streamInfo,this.mergeStreamInfo(),this.previous=l;var o=this;return l.on("data",function(u){o.processChunk(u)}),l.on("end",function(){o.end()}),l.on("error",function(u){o.error(u)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var l=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),l=!0),this.previous&&this.previous.resume(),!l},flush:function(){},processChunk:function(l){this.push(l)},withStreamInfo:function(l,o){return this.extraStreamInfo[l]=o,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var l in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,l)&&(this.streamInfo[l]=this.extraStreamInfo[l])},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var l="Worker "+this.name;return this.previous?this.previous+" -> "+l:l}},a.exports=n},{}],29:[function(t,a,i){var n=t("../utils"),l=t("./ConvertWorker"),o=t("./GenericWorker"),u=t("../base64"),c=t("../support"),v=t("../external"),y=null;if(c.nodestream)try{y=t("../nodejs/NodejsStreamOutputAdapter")}catch{}function b(C,p){return new v.Promise(function(d,h){var w=[],k=C._internalType,x=C._outputType,_=C._mimeType;C.on("data",function(W,P){w.push(W),p&&p(P)}).on("error",function(W){w=[],h(W)}).on("end",function(){try{var W=(function(P,H,z){switch(P){case"blob":return n.newBlob(n.transformTo("arraybuffer",H),z);case"base64":return u.encode(H);default:return n.transformTo(P,H)}})(x,(function(P,H){var z,Z=0,ne=null,F=0;for(z=0;z<H.length;z++)F+=H[z].length;switch(P){case"string":return H.join("");case"array":return Array.prototype.concat.apply([],H);case"uint8array":for(ne=new Uint8Array(F),z=0;z<H.length;z++)ne.set(H[z],Z),Z+=H[z].length;return ne;case"nodebuffer":return Buffer.concat(H);default:throw new Error("concat : unsupported type '"+P+"'")}})(k,w),_);d(W)}catch(P){h(P)}w=[]}).resume()})}function m(C,p,d){var h=p;switch(p){case"blob":case"arraybuffer":h="uint8array";break;case"base64":h="string"}try{this._internalType=h,this._outputType=p,this._mimeType=d,n.checkSupport(h),this._worker=C.pipe(new l(h)),C.lock()}catch(w){this._worker=new o("error"),this._worker.error(w)}}m.prototype={accumulate:function(C){return b(this,C)},on:function(C,p){var d=this;return C==="data"?this._worker.on(C,function(h){p.call(d,h.data,h.meta)}):this._worker.on(C,function(){n.delay(p,arguments,d)}),this},resume:function(){return n.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(C){if(n.checkSupport("nodestream"),this._outputType!=="nodebuffer")throw new Error(this._outputType+" is not supported by this method");return new y(this,{objectMode:this._outputType!=="nodebuffer"},C)}},a.exports=m},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(t,a,i){if(i.base64=!0,i.array=!0,i.string=!0,i.arraybuffer=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u",i.nodebuffer=typeof Buffer<"u",i.uint8array=typeof Uint8Array<"u",typeof ArrayBuffer>"u")i.blob=!1;else{var n=new ArrayBuffer(0);try{i.blob=new Blob([n],{type:"application/zip"}).size===0}catch{try{var l=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);l.append(n),i.blob=l.getBlob("application/zip").size===0}catch{i.blob=!1}}}try{i.nodestream=!!t("readable-stream").Readable}catch{i.nodestream=!1}},{"readable-stream":16}],31:[function(t,a,i){for(var n=t("./utils"),l=t("./support"),o=t("./nodejsUtils"),u=t("./stream/GenericWorker"),c=new Array(256),v=0;v<256;v++)c[v]=252<=v?6:248<=v?5:240<=v?4:224<=v?3:192<=v?2:1;c[254]=c[254]=1;function y(){u.call(this,"utf-8 decode"),this.leftOver=null}function b(){u.call(this,"utf-8 encode")}i.utf8encode=function(m){return l.nodebuffer?o.newBufferFrom(m,"utf-8"):(function(C){var p,d,h,w,k,x=C.length,_=0;for(w=0;w<x;w++)(64512&(d=C.charCodeAt(w)))==55296&&w+1<x&&(64512&(h=C.charCodeAt(w+1)))==56320&&(d=65536+(d-55296<<10)+(h-56320),w++),_+=d<128?1:d<2048?2:d<65536?3:4;for(p=l.uint8array?new Uint8Array(_):new Array(_),w=k=0;k<_;w++)(64512&(d=C.charCodeAt(w)))==55296&&w+1<x&&(64512&(h=C.charCodeAt(w+1)))==56320&&(d=65536+(d-55296<<10)+(h-56320),w++),d<128?p[k++]=d:(d<2048?p[k++]=192|d>>>6:(d<65536?p[k++]=224|d>>>12:(p[k++]=240|d>>>18,p[k++]=128|d>>>12&63),p[k++]=128|d>>>6&63),p[k++]=128|63&d);return p})(m)},i.utf8decode=function(m){return l.nodebuffer?n.transformTo("nodebuffer",m).toString("utf-8"):(function(C){var p,d,h,w,k=C.length,x=new Array(2*k);for(p=d=0;p<k;)if((h=C[p++])<128)x[d++]=h;else if(4<(w=c[h]))x[d++]=65533,p+=w-1;else{for(h&=w===2?31:w===3?15:7;1<w&&p<k;)h=h<<6|63&C[p++],w--;1<w?x[d++]=65533:h<65536?x[d++]=h:(h-=65536,x[d++]=55296|h>>10&1023,x[d++]=56320|1023&h)}return x.length!==d&&(x.subarray?x=x.subarray(0,d):x.length=d),n.applyFromCharCode(x)})(m=n.transformTo(l.uint8array?"uint8array":"array",m))},n.inherits(y,u),y.prototype.processChunk=function(m){var C=n.transformTo(l.uint8array?"uint8array":"array",m.data);if(this.leftOver&&this.leftOver.length){if(l.uint8array){var p=C;(C=new Uint8Array(p.length+this.leftOver.length)).set(this.leftOver,0),C.set(p,this.leftOver.length)}else C=this.leftOver.concat(C);this.leftOver=null}var d=(function(w,k){var x;for((k=k||w.length)>w.length&&(k=w.length),x=k-1;0<=x&&(192&w[x])==128;)x--;return x<0||x===0?k:x+c[w[x]]>k?x:k})(C),h=C;d!==C.length&&(l.uint8array?(h=C.subarray(0,d),this.leftOver=C.subarray(d,C.length)):(h=C.slice(0,d),this.leftOver=C.slice(d,C.length))),this.push({data:i.utf8decode(h),meta:m.meta})},y.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:i.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},i.Utf8DecodeWorker=y,n.inherits(b,u),b.prototype.processChunk=function(m){this.push({data:i.utf8encode(m.data),meta:m.meta})},i.Utf8EncodeWorker=b},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,a,i){var n=t("./support"),l=t("./base64"),o=t("./nodejsUtils"),u=t("./external");function c(p){return p}function v(p,d){for(var h=0;h<p.length;++h)d[h]=255&p.charCodeAt(h);return d}t("setimmediate"),i.newBlob=function(p,d){i.checkSupport("blob");try{return new Blob([p],{type:d})}catch{try{var h=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return h.append(p),h.getBlob(d)}catch{throw new Error("Bug : can't construct the Blob.")}}};var y={stringifyByChunk:function(p,d,h){var w=[],k=0,x=p.length;if(x<=h)return String.fromCharCode.apply(null,p);for(;k<x;)d==="array"||d==="nodebuffer"?w.push(String.fromCharCode.apply(null,p.slice(k,Math.min(k+h,x)))):w.push(String.fromCharCode.apply(null,p.subarray(k,Math.min(k+h,x)))),k+=h;return w.join("")},stringifyByChar:function(p){for(var d="",h=0;h<p.length;h++)d+=String.fromCharCode(p[h]);return d},applyCanBeUsed:{uint8array:(function(){try{return n.uint8array&&String.fromCharCode.apply(null,new Uint8Array(1)).length===1}catch{return!1}})(),nodebuffer:(function(){try{return n.nodebuffer&&String.fromCharCode.apply(null,o.allocBuffer(1)).length===1}catch{return!1}})()}};function b(p){var d=65536,h=i.getTypeOf(p),w=!0;if(h==="uint8array"?w=y.applyCanBeUsed.uint8array:h==="nodebuffer"&&(w=y.applyCanBeUsed.nodebuffer),w)for(;1<d;)try{return y.stringifyByChunk(p,h,d)}catch{d=Math.floor(d/2)}return y.stringifyByChar(p)}function m(p,d){for(var h=0;h<p.length;h++)d[h]=p[h];return d}i.applyFromCharCode=b;var C={};C.string={string:c,array:function(p){return v(p,new Array(p.length))},arraybuffer:function(p){return C.string.uint8array(p).buffer},uint8array:function(p){return v(p,new Uint8Array(p.length))},nodebuffer:function(p){return v(p,o.allocBuffer(p.length))}},C.array={string:b,array:c,arraybuffer:function(p){return new Uint8Array(p).buffer},uint8array:function(p){return new Uint8Array(p)},nodebuffer:function(p){return o.newBufferFrom(p)}},C.arraybuffer={string:function(p){return b(new Uint8Array(p))},array:function(p){return m(new Uint8Array(p),new Array(p.byteLength))},arraybuffer:c,uint8array:function(p){return new Uint8Array(p)},nodebuffer:function(p){return o.newBufferFrom(new Uint8Array(p))}},C.uint8array={string:b,array:function(p){return m(p,new Array(p.length))},arraybuffer:function(p){return p.buffer},uint8array:c,nodebuffer:function(p){return o.newBufferFrom(p)}},C.nodebuffer={string:b,array:function(p){return m(p,new Array(p.length))},arraybuffer:function(p){return C.nodebuffer.uint8array(p).buffer},uint8array:function(p){return m(p,new Uint8Array(p.length))},nodebuffer:c},i.transformTo=function(p,d){if(d=d||"",!p)return d;i.checkSupport(p);var h=i.getTypeOf(d);return C[h][p](d)},i.resolve=function(p){for(var d=p.split("/"),h=[],w=0;w<d.length;w++){var k=d[w];k==="."||k===""&&w!==0&&w!==d.length-1||(k===".."?h.pop():h.push(k))}return h.join("/")},i.getTypeOf=function(p){return typeof p=="string"?"string":Object.prototype.toString.call(p)==="[object Array]"?"array":n.nodebuffer&&o.isBuffer(p)?"nodebuffer":n.uint8array&&p instanceof Uint8Array?"uint8array":n.arraybuffer&&p instanceof ArrayBuffer?"arraybuffer":void 0},i.checkSupport=function(p){if(!n[p.toLowerCase()])throw new Error(p+" is not supported by this platform")},i.MAX_VALUE_16BITS=65535,i.MAX_VALUE_32BITS=-1,i.pretty=function(p){var d,h,w="";for(h=0;h<(p||"").length;h++)w+="\\x"+((d=p.charCodeAt(h))<16?"0":"")+d.toString(16).toUpperCase();return w},i.delay=function(p,d,h){setImmediate(function(){p.apply(h||null,d||[])})},i.inherits=function(p,d){function h(){}h.prototype=d.prototype,p.prototype=new h},i.extend=function(){var p,d,h={};for(p=0;p<arguments.length;p++)for(d in arguments[p])Object.prototype.hasOwnProperty.call(arguments[p],d)&&h[d]===void 0&&(h[d]=arguments[p][d]);return h},i.prepareContent=function(p,d,h,w,k){return u.Promise.resolve(d).then(function(x){return n.blob&&(x instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(x))!==-1)&&typeof FileReader<"u"?new u.Promise(function(_,W){var P=new FileReader;P.onload=function(H){_(H.target.result)},P.onerror=function(H){W(H.target.error)},P.readAsArrayBuffer(x)}):x}).then(function(x){var _=i.getTypeOf(x);return _?(_==="arraybuffer"?x=i.transformTo("uint8array",x):_==="string"&&(k?x=l.decode(x):h&&w!==!0&&(x=(function(W){return v(W,n.uint8array?new Uint8Array(W.length):new Array(W.length))})(x))),x):u.Promise.reject(new Error("Can't read the data of '"+p+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,setimmediate:54}],33:[function(t,a,i){var n=t("./reader/readerFor"),l=t("./utils"),o=t("./signature"),u=t("./zipEntry"),c=t("./support");function v(y){this.files=[],this.loadOptions=y}v.prototype={checkSignature:function(y){if(!this.reader.readAndCheckSignature(y)){this.reader.index-=4;var b=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+l.pretty(b)+", expected "+l.pretty(y)+")")}},isSignature:function(y,b){var m=this.reader.index;this.reader.setIndex(y);var C=this.reader.readString(4)===b;return this.reader.setIndex(m),C},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var y=this.reader.readData(this.zipCommentLength),b=c.uint8array?"uint8array":"array",m=l.transformTo(b,y);this.zipComment=this.loadOptions.decodeFileName(m)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var y,b,m,C=this.zip64EndOfCentralSize-44;0<C;)y=this.reader.readInt(2),b=this.reader.readInt(4),m=this.reader.readData(b),this.zip64ExtensibleData[y]={id:y,length:b,value:m}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var y,b;for(y=0;y<this.files.length;y++)b=this.files[y],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(o.LOCAL_FILE_HEADER),b.readLocalPart(this.reader),b.handleUTF8(),b.processAttributes()},readCentralDir:function(){var y;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(o.CENTRAL_FILE_HEADER);)(y=new u({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(y);if(this.centralDirRecords!==this.files.length&&this.centralDirRecords!==0&&this.files.length===0)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var y=this.reader.lastIndexOfSignature(o.CENTRAL_DIRECTORY_END);if(y<0)throw this.isSignature(0,o.LOCAL_FILE_HEADER)?new Error("Corrupted zip: can't find end of central directory"):new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(y);var b=y;if(this.checkSignature(o.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===l.MAX_VALUE_16BITS||this.diskWithCentralDirStart===l.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===l.MAX_VALUE_16BITS||this.centralDirRecords===l.MAX_VALUE_16BITS||this.centralDirSize===l.MAX_VALUE_32BITS||this.centralDirOffset===l.MAX_VALUE_32BITS){if(this.zip64=!0,(y=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(y),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,o.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var m=this.centralDirOffset+this.centralDirSize;this.zip64&&(m+=20,m+=12+this.zip64EndOfCentralSize);var C=b-m;if(0<C)this.isSignature(b,o.CENTRAL_FILE_HEADER)||(this.reader.zero=C);else if(C<0)throw new Error("Corrupted zip: missing "+Math.abs(C)+" bytes.")},prepareReader:function(y){this.reader=n(y)},load:function(y){this.prepareReader(y),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},a.exports=v},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(t,a,i){var n=t("./reader/readerFor"),l=t("./utils"),o=t("./compressedObject"),u=t("./crc32"),c=t("./utf8"),v=t("./compressions"),y=t("./support");function b(m,C){this.options=m,this.loadOptions=C}b.prototype={isEncrypted:function(){return(1&this.bitFlag)==1},useUTF8:function(){return(2048&this.bitFlag)==2048},readLocalPart:function(m){var C,p;if(m.skip(22),this.fileNameLength=m.readInt(2),p=m.readInt(2),this.fileName=m.readData(this.fileNameLength),m.skip(p),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if((C=(function(d){for(var h in v)if(Object.prototype.hasOwnProperty.call(v,h)&&v[h].magic===d)return v[h];return null})(this.compressionMethod))===null)throw new Error("Corrupted zip : compression "+l.pretty(this.compressionMethod)+" unknown (inner file : "+l.transformTo("string",this.fileName)+")");this.decompressed=new o(this.compressedSize,this.uncompressedSize,this.crc32,C,m.readData(this.compressedSize))},readCentralPart:function(m){this.versionMadeBy=m.readInt(2),m.skip(2),this.bitFlag=m.readInt(2),this.compressionMethod=m.readString(2),this.date=m.readDate(),this.crc32=m.readInt(4),this.compressedSize=m.readInt(4),this.uncompressedSize=m.readInt(4);var C=m.readInt(2);if(this.extraFieldsLength=m.readInt(2),this.fileCommentLength=m.readInt(2),this.diskNumberStart=m.readInt(2),this.internalFileAttributes=m.readInt(2),this.externalFileAttributes=m.readInt(4),this.localHeaderOffset=m.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");m.skip(C),this.readExtraFields(m),this.parseZIP64ExtraField(m),this.fileComment=m.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var m=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),m==0&&(this.dosPermissions=63&this.externalFileAttributes),m==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var m=n(this.extraFields[1].value);this.uncompressedSize===l.MAX_VALUE_32BITS&&(this.uncompressedSize=m.readInt(8)),this.compressedSize===l.MAX_VALUE_32BITS&&(this.compressedSize=m.readInt(8)),this.localHeaderOffset===l.MAX_VALUE_32BITS&&(this.localHeaderOffset=m.readInt(8)),this.diskNumberStart===l.MAX_VALUE_32BITS&&(this.diskNumberStart=m.readInt(4))}},readExtraFields:function(m){var C,p,d,h=m.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});m.index+4<h;)C=m.readInt(2),p=m.readInt(2),d=m.readData(p),this.extraFields[C]={id:C,length:p,value:d};m.setIndex(h)},handleUTF8:function(){var m=y.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=c.utf8decode(this.fileName),this.fileCommentStr=c.utf8decode(this.fileComment);else{var C=this.findExtraFieldUnicodePath();if(C!==null)this.fileNameStr=C;else{var p=l.transformTo(m,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(p)}var d=this.findExtraFieldUnicodeComment();if(d!==null)this.fileCommentStr=d;else{var h=l.transformTo(m,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(h)}}},findExtraFieldUnicodePath:function(){var m=this.extraFields[28789];if(m){var C=n(m.value);return C.readInt(1)!==1||u(this.fileName)!==C.readInt(4)?null:c.utf8decode(C.readData(m.length-5))}return null},findExtraFieldUnicodeComment:function(){var m=this.extraFields[25461];if(m){var C=n(m.value);return C.readInt(1)!==1||u(this.fileComment)!==C.readInt(4)?null:c.utf8decode(C.readData(m.length-5))}return null}},a.exports=b},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(t,a,i){function n(C,p,d){this.name=C,this.dir=d.dir,this.date=d.date,this.comment=d.comment,this.unixPermissions=d.unixPermissions,this.dosPermissions=d.dosPermissions,this._data=p,this._dataBinary=d.binary,this.options={compression:d.compression,compressionOptions:d.compressionOptions}}var l=t("./stream/StreamHelper"),o=t("./stream/DataWorker"),u=t("./utf8"),c=t("./compressedObject"),v=t("./stream/GenericWorker");n.prototype={internalStream:function(C){var p=null,d="string";try{if(!C)throw new Error("No output type specified.");var h=(d=C.toLowerCase())==="string"||d==="text";d!=="binarystring"&&d!=="text"||(d="string"),p=this._decompressWorker();var w=!this._dataBinary;w&&!h&&(p=p.pipe(new u.Utf8EncodeWorker)),!w&&h&&(p=p.pipe(new u.Utf8DecodeWorker))}catch(k){(p=new v("error")).error(k)}return new l(p,d,"")},async:function(C,p){return this.internalStream(C).accumulate(p)},nodeStream:function(C,p){return this.internalStream(C||"nodebuffer").toNodejsStream(p)},_compressWorker:function(C,p){if(this._data instanceof c&&this._data.compression.magic===C.magic)return this._data.getCompressedWorker();var d=this._decompressWorker();return this._dataBinary||(d=d.pipe(new u.Utf8EncodeWorker)),c.createWorkerFrom(d,C,p)},_decompressWorker:function(){return this._data instanceof c?this._data.getContentWorker():this._data instanceof v?this._data:new o(this._data)}};for(var y=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],b=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},m=0;m<y.length;m++)n.prototype[y[m]]=b;a.exports=n},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(t,a,i){(function(n){var l,o,u=n.MutationObserver||n.WebKitMutationObserver;if(u){var c=0,v=new u(C),y=n.document.createTextNode("");v.observe(y,{characterData:!0}),l=function(){y.data=c=++c%2}}else if(n.setImmediate||n.MessageChannel===void 0)l="document"in n&&"onreadystatechange"in n.document.createElement("script")?function(){var p=n.document.createElement("script");p.onreadystatechange=function(){C(),p.onreadystatechange=null,p.parentNode.removeChild(p),p=null},n.document.documentElement.appendChild(p)}:function(){setTimeout(C,0)};else{var b=new n.MessageChannel;b.port1.onmessage=C,l=function(){b.port2.postMessage(0)}}var m=[];function C(){var p,d;o=!0;for(var h=m.length;h;){for(d=m,m=[],p=-1;++p<h;)d[p]();h=m.length}o=!1}a.exports=function(p){m.push(p)!==1||o||l()}}).call(this,typeof vt<"u"?vt:typeof self<"u"?self:typeof window<"u"?window:{})},{}],37:[function(t,a,i){var n=t("immediate");function l(){}var o={},u=["REJECTED"],c=["FULFILLED"],v=["PENDING"];function y(h){if(typeof h!="function")throw new TypeError("resolver must be a function");this.state=v,this.queue=[],this.outcome=void 0,h!==l&&p(this,h)}function b(h,w,k){this.promise=h,typeof w=="function"&&(this.onFulfilled=w,this.callFulfilled=this.otherCallFulfilled),typeof k=="function"&&(this.onRejected=k,this.callRejected=this.otherCallRejected)}function m(h,w,k){n(function(){var x;try{x=w(k)}catch(_){return o.reject(h,_)}x===h?o.reject(h,new TypeError("Cannot resolve promise with itself")):o.resolve(h,x)})}function C(h){var w=h&&h.then;if(h&&(typeof h=="object"||typeof h=="function")&&typeof w=="function")return function(){w.apply(h,arguments)}}function p(h,w){var k=!1;function x(P){k||(k=!0,o.reject(h,P))}function _(P){k||(k=!0,o.resolve(h,P))}var W=d(function(){w(_,x)});W.status==="error"&&x(W.value)}function d(h,w){var k={};try{k.value=h(w),k.status="success"}catch(x){k.status="error",k.value=x}return k}(a.exports=y).prototype.finally=function(h){if(typeof h!="function")return this;var w=this.constructor;return this.then(function(k){return w.resolve(h()).then(function(){return k})},function(k){return w.resolve(h()).then(function(){throw k})})},y.prototype.catch=function(h){return this.then(null,h)},y.prototype.then=function(h,w){if(typeof h!="function"&&this.state===c||typeof w!="function"&&this.state===u)return this;var k=new this.constructor(l);return this.state!==v?m(k,this.state===c?h:w,this.outcome):this.queue.push(new b(k,h,w)),k},b.prototype.callFulfilled=function(h){o.resolve(this.promise,h)},b.prototype.otherCallFulfilled=function(h){m(this.promise,this.onFulfilled,h)},b.prototype.callRejected=function(h){o.reject(this.promise,h)},b.prototype.otherCallRejected=function(h){m(this.promise,this.onRejected,h)},o.resolve=function(h,w){var k=d(C,w);if(k.status==="error")return o.reject(h,k.value);var x=k.value;if(x)p(h,x);else{h.state=c,h.outcome=w;for(var _=-1,W=h.queue.length;++_<W;)h.queue[_].callFulfilled(w)}return h},o.reject=function(h,w){h.state=u,h.outcome=w;for(var k=-1,x=h.queue.length;++k<x;)h.queue[k].callRejected(w);return h},y.resolve=function(h){return h instanceof this?h:o.resolve(new this(l),h)},y.reject=function(h){var w=new this(l);return o.reject(w,h)},y.all=function(h){var w=this;if(Object.prototype.toString.call(h)!=="[object Array]")return this.reject(new TypeError("must be an array"));var k=h.length,x=!1;if(!k)return this.resolve([]);for(var _=new Array(k),W=0,P=-1,H=new this(l);++P<k;)z(h[P],P);return H;function z(Z,ne){w.resolve(Z).then(function(F){_[ne]=F,++W!==k||x||(x=!0,o.resolve(H,_))},function(F){x||(x=!0,o.reject(H,F))})}},y.race=function(h){var w=this;if(Object.prototype.toString.call(h)!=="[object Array]")return this.reject(new TypeError("must be an array"));var k=h.length,x=!1;if(!k)return this.resolve([]);for(var _=-1,W=new this(l);++_<k;)P=h[_],w.resolve(P).then(function(H){x||(x=!0,o.resolve(W,H))},function(H){x||(x=!0,o.reject(W,H))});var P;return W}},{immediate:36}],38:[function(t,a,i){var n={};(0,t("./lib/utils/common").assign)(n,t("./lib/deflate"),t("./lib/inflate"),t("./lib/zlib/constants")),a.exports=n},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(t,a,i){var n=t("./zlib/deflate"),l=t("./utils/common"),o=t("./utils/strings"),u=t("./zlib/messages"),c=t("./zlib/zstream"),v=Object.prototype.toString,y=0,b=-1,m=0,C=8;function p(h){if(!(this instanceof p))return new p(h);this.options=l.assign({level:b,method:C,chunkSize:16384,windowBits:15,memLevel:8,strategy:m,to:""},h||{});var w=this.options;w.raw&&0<w.windowBits?w.windowBits=-w.windowBits:w.gzip&&0<w.windowBits&&w.windowBits<16&&(w.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new c,this.strm.avail_out=0;var k=n.deflateInit2(this.strm,w.level,w.method,w.windowBits,w.memLevel,w.strategy);if(k!==y)throw new Error(u[k]);if(w.header&&n.deflateSetHeader(this.strm,w.header),w.dictionary){var x;if(x=typeof w.dictionary=="string"?o.string2buf(w.dictionary):v.call(w.dictionary)==="[object ArrayBuffer]"?new Uint8Array(w.dictionary):w.dictionary,(k=n.deflateSetDictionary(this.strm,x))!==y)throw new Error(u[k]);this._dict_set=!0}}function d(h,w){var k=new p(w);if(k.push(h,!0),k.err)throw k.msg||u[k.err];return k.result}p.prototype.push=function(h,w){var k,x,_=this.strm,W=this.options.chunkSize;if(this.ended)return!1;x=w===~~w?w:w===!0?4:0,typeof h=="string"?_.input=o.string2buf(h):v.call(h)==="[object ArrayBuffer]"?_.input=new Uint8Array(h):_.input=h,_.next_in=0,_.avail_in=_.input.length;do{if(_.avail_out===0&&(_.output=new l.Buf8(W),_.next_out=0,_.avail_out=W),(k=n.deflate(_,x))!==1&&k!==y)return this.onEnd(k),!(this.ended=!0);_.avail_out!==0&&(_.avail_in!==0||x!==4&&x!==2)||(this.options.to==="string"?this.onData(o.buf2binstring(l.shrinkBuf(_.output,_.next_out))):this.onData(l.shrinkBuf(_.output,_.next_out)))}while((0<_.avail_in||_.avail_out===0)&&k!==1);return x===4?(k=n.deflateEnd(this.strm),this.onEnd(k),this.ended=!0,k===y):x!==2||(this.onEnd(y),!(_.avail_out=0))},p.prototype.onData=function(h){this.chunks.push(h)},p.prototype.onEnd=function(h){h===y&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=h,this.msg=this.strm.msg},i.Deflate=p,i.deflate=d,i.deflateRaw=function(h,w){return(w=w||{}).raw=!0,d(h,w)},i.gzip=function(h,w){return(w=w||{}).gzip=!0,d(h,w)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(t,a,i){var n=t("./zlib/inflate"),l=t("./utils/common"),o=t("./utils/strings"),u=t("./zlib/constants"),c=t("./zlib/messages"),v=t("./zlib/zstream"),y=t("./zlib/gzheader"),b=Object.prototype.toString;function m(p){if(!(this instanceof m))return new m(p);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},p||{});var d=this.options;d.raw&&0<=d.windowBits&&d.windowBits<16&&(d.windowBits=-d.windowBits,d.windowBits===0&&(d.windowBits=-15)),!(0<=d.windowBits&&d.windowBits<16)||p&&p.windowBits||(d.windowBits+=32),15<d.windowBits&&d.windowBits<48&&(15&d.windowBits)==0&&(d.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new v,this.strm.avail_out=0;var h=n.inflateInit2(this.strm,d.windowBits);if(h!==u.Z_OK)throw new Error(c[h]);this.header=new y,n.inflateGetHeader(this.strm,this.header)}function C(p,d){var h=new m(d);if(h.push(p,!0),h.err)throw h.msg||c[h.err];return h.result}m.prototype.push=function(p,d){var h,w,k,x,_,W,P=this.strm,H=this.options.chunkSize,z=this.options.dictionary,Z=!1;if(this.ended)return!1;w=d===~~d?d:d===!0?u.Z_FINISH:u.Z_NO_FLUSH,typeof p=="string"?P.input=o.binstring2buf(p):b.call(p)==="[object ArrayBuffer]"?P.input=new Uint8Array(p):P.input=p,P.next_in=0,P.avail_in=P.input.length;do{if(P.avail_out===0&&(P.output=new l.Buf8(H),P.next_out=0,P.avail_out=H),(h=n.inflate(P,u.Z_NO_FLUSH))===u.Z_NEED_DICT&&z&&(W=typeof z=="string"?o.string2buf(z):b.call(z)==="[object ArrayBuffer]"?new Uint8Array(z):z,h=n.inflateSetDictionary(this.strm,W)),h===u.Z_BUF_ERROR&&Z===!0&&(h=u.Z_OK,Z=!1),h!==u.Z_STREAM_END&&h!==u.Z_OK)return this.onEnd(h),!(this.ended=!0);P.next_out&&(P.avail_out!==0&&h!==u.Z_STREAM_END&&(P.avail_in!==0||w!==u.Z_FINISH&&w!==u.Z_SYNC_FLUSH)||(this.options.to==="string"?(k=o.utf8border(P.output,P.next_out),x=P.next_out-k,_=o.buf2string(P.output,k),P.next_out=x,P.avail_out=H-x,x&&l.arraySet(P.output,P.output,k,x,0),this.onData(_)):this.onData(l.shrinkBuf(P.output,P.next_out)))),P.avail_in===0&&P.avail_out===0&&(Z=!0)}while((0<P.avail_in||P.avail_out===0)&&h!==u.Z_STREAM_END);return h===u.Z_STREAM_END&&(w=u.Z_FINISH),w===u.Z_FINISH?(h=n.inflateEnd(this.strm),this.onEnd(h),this.ended=!0,h===u.Z_OK):w!==u.Z_SYNC_FLUSH||(this.onEnd(u.Z_OK),!(P.avail_out=0))},m.prototype.onData=function(p){this.chunks.push(p)},m.prototype.onEnd=function(p){p===u.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=p,this.msg=this.strm.msg},i.Inflate=m,i.inflate=C,i.inflateRaw=function(p,d){return(d=d||{}).raw=!0,C(p,d)},i.ungzip=C},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(t,a,i){var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";i.assign=function(u){for(var c=Array.prototype.slice.call(arguments,1);c.length;){var v=c.shift();if(v){if(typeof v!="object")throw new TypeError(v+"must be non-object");for(var y in v)v.hasOwnProperty(y)&&(u[y]=v[y])}}return u},i.shrinkBuf=function(u,c){return u.length===c?u:u.subarray?u.subarray(0,c):(u.length=c,u)};var l={arraySet:function(u,c,v,y,b){if(c.subarray&&u.subarray)u.set(c.subarray(v,v+y),b);else for(var m=0;m<y;m++)u[b+m]=c[v+m]},flattenChunks:function(u){var c,v,y,b,m,C;for(c=y=0,v=u.length;c<v;c++)y+=u[c].length;for(C=new Uint8Array(y),c=b=0,v=u.length;c<v;c++)m=u[c],C.set(m,b),b+=m.length;return C}},o={arraySet:function(u,c,v,y,b){for(var m=0;m<y;m++)u[b+m]=c[v+m]},flattenChunks:function(u){return[].concat.apply([],u)}};i.setTyped=function(u){u?(i.Buf8=Uint8Array,i.Buf16=Uint16Array,i.Buf32=Int32Array,i.assign(i,l)):(i.Buf8=Array,i.Buf16=Array,i.Buf32=Array,i.assign(i,o))},i.setTyped(n)},{}],42:[function(t,a,i){var n=t("./common"),l=!0,o=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{o=!1}for(var u=new n.Buf8(256),c=0;c<256;c++)u[c]=252<=c?6:248<=c?5:240<=c?4:224<=c?3:192<=c?2:1;function v(y,b){if(b<65537&&(y.subarray&&o||!y.subarray&&l))return String.fromCharCode.apply(null,n.shrinkBuf(y,b));for(var m="",C=0;C<b;C++)m+=String.fromCharCode(y[C]);return m}u[254]=u[254]=1,i.string2buf=function(y){var b,m,C,p,d,h=y.length,w=0;for(p=0;p<h;p++)(64512&(m=y.charCodeAt(p)))==55296&&p+1<h&&(64512&(C=y.charCodeAt(p+1)))==56320&&(m=65536+(m-55296<<10)+(C-56320),p++),w+=m<128?1:m<2048?2:m<65536?3:4;for(b=new n.Buf8(w),p=d=0;d<w;p++)(64512&(m=y.charCodeAt(p)))==55296&&p+1<h&&(64512&(C=y.charCodeAt(p+1)))==56320&&(m=65536+(m-55296<<10)+(C-56320),p++),m<128?b[d++]=m:(m<2048?b[d++]=192|m>>>6:(m<65536?b[d++]=224|m>>>12:(b[d++]=240|m>>>18,b[d++]=128|m>>>12&63),b[d++]=128|m>>>6&63),b[d++]=128|63&m);return b},i.buf2binstring=function(y){return v(y,y.length)},i.binstring2buf=function(y){for(var b=new n.Buf8(y.length),m=0,C=b.length;m<C;m++)b[m]=y.charCodeAt(m);return b},i.buf2string=function(y,b){var m,C,p,d,h=b||y.length,w=new Array(2*h);for(m=C=0;m<h;)if((p=y[m++])<128)w[C++]=p;else if(4<(d=u[p]))w[C++]=65533,m+=d-1;else{for(p&=d===2?31:d===3?15:7;1<d&&m<h;)p=p<<6|63&y[m++],d--;1<d?w[C++]=65533:p<65536?w[C++]=p:(p-=65536,w[C++]=55296|p>>10&1023,w[C++]=56320|1023&p)}return v(w,C)},i.utf8border=function(y,b){var m;for((b=b||y.length)>y.length&&(b=y.length),m=b-1;0<=m&&(192&y[m])==128;)m--;return m<0||m===0?b:m+u[y[m]]>b?m:b}},{"./common":41}],43:[function(t,a,i){a.exports=function(n,l,o,u){for(var c=65535&n|0,v=n>>>16&65535|0,y=0;o!==0;){for(o-=y=2e3<o?2e3:o;v=v+(c=c+l[u++]|0)|0,--y;);c%=65521,v%=65521}return c|v<<16|0}},{}],44:[function(t,a,i){a.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(t,a,i){var n=(function(){for(var l,o=[],u=0;u<256;u++){l=u;for(var c=0;c<8;c++)l=1&l?3988292384^l>>>1:l>>>1;o[u]=l}return o})();a.exports=function(l,o,u,c){var v=n,y=c+u;l^=-1;for(var b=c;b<y;b++)l=l>>>8^v[255&(l^o[b])];return-1^l}},{}],46:[function(t,a,i){var n,l=t("../utils/common"),o=t("./trees"),u=t("./adler32"),c=t("./crc32"),v=t("./messages"),y=0,b=4,m=0,C=-2,p=-1,d=4,h=2,w=8,k=9,x=286,_=30,W=19,P=2*x+1,H=15,z=3,Z=258,ne=Z+z+1,F=42,G=113,f=1,q=2,pe=3,O=4;function le(r,N){return r.msg=v[N],N}function Y(r){return(r<<1)-(4<r?9:0)}function ie(r){for(var N=r.length;0<=--N;)r[N]=0}function E(r){var N=r.state,B=N.pending;B>r.avail_out&&(B=r.avail_out),B!==0&&(l.arraySet(r.output,N.pending_buf,N.pending_out,B,r.next_out),r.next_out+=B,N.pending_out+=B,r.total_out+=B,r.avail_out-=B,N.pending-=B,N.pending===0&&(N.pending_out=0))}function I(r,N){o._tr_flush_block(r,0<=r.block_start?r.block_start:-1,r.strstart-r.block_start,N),r.block_start=r.strstart,E(r.strm)}function $(r,N){r.pending_buf[r.pending++]=N}function X(r,N){r.pending_buf[r.pending++]=N>>>8&255,r.pending_buf[r.pending++]=255&N}function V(r,N){var B,T,g=r.max_chain_length,S=r.strstart,K=r.prev_length,U=r.nice_match,R=r.strstart>r.w_size-ne?r.strstart-(r.w_size-ne):0,j=r.window,J=r.w_mask,M=r.prev,Q=r.strstart+Z,fe=j[S+K-1],te=j[S+K];r.prev_length>=r.good_match&&(g>>=2),U>r.lookahead&&(U=r.lookahead);do if(j[(B=N)+K]===te&&j[B+K-1]===fe&&j[B]===j[S]&&j[++B]===j[S+1]){S+=2,B++;do;while(j[++S]===j[++B]&&j[++S]===j[++B]&&j[++S]===j[++B]&&j[++S]===j[++B]&&j[++S]===j[++B]&&j[++S]===j[++B]&&j[++S]===j[++B]&&j[++S]===j[++B]&&S<Q);if(T=Z-(Q-S),S=Q-Z,K<T){if(r.match_start=N,U<=(K=T))break;fe=j[S+K-1],te=j[S+K]}}while((N=M[N&J])>R&&--g!=0);return K<=r.lookahead?K:r.lookahead}function be(r){var N,B,T,g,S,K,U,R,j,J,M=r.w_size;do{if(g=r.window_size-r.lookahead-r.strstart,r.strstart>=M+(M-ne)){for(l.arraySet(r.window,r.window,M,M,0),r.match_start-=M,r.strstart-=M,r.block_start-=M,N=B=r.hash_size;T=r.head[--N],r.head[N]=M<=T?T-M:0,--B;);for(N=B=M;T=r.prev[--N],r.prev[N]=M<=T?T-M:0,--B;);g+=M}if(r.strm.avail_in===0)break;if(K=r.strm,U=r.window,R=r.strstart+r.lookahead,j=g,J=void 0,J=K.avail_in,j<J&&(J=j),B=J===0?0:(K.avail_in-=J,l.arraySet(U,K.input,K.next_in,J,R),K.state.wrap===1?K.adler=u(K.adler,U,J,R):K.state.wrap===2&&(K.adler=c(K.adler,U,J,R)),K.next_in+=J,K.total_in+=J,J),r.lookahead+=B,r.lookahead+r.insert>=z)for(S=r.strstart-r.insert,r.ins_h=r.window[S],r.ins_h=(r.ins_h<<r.hash_shift^r.window[S+1])&r.hash_mask;r.insert&&(r.ins_h=(r.ins_h<<r.hash_shift^r.window[S+z-1])&r.hash_mask,r.prev[S&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=S,S++,r.insert--,!(r.lookahead+r.insert<z)););}while(r.lookahead<ne&&r.strm.avail_in!==0)}function ge(r,N){for(var B,T;;){if(r.lookahead<ne){if(be(r),r.lookahead<ne&&N===y)return f;if(r.lookahead===0)break}if(B=0,r.lookahead>=z&&(r.ins_h=(r.ins_h<<r.hash_shift^r.window[r.strstart+z-1])&r.hash_mask,B=r.prev[r.strstart&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=r.strstart),B!==0&&r.strstart-B<=r.w_size-ne&&(r.match_length=V(r,B)),r.match_length>=z)if(T=o._tr_tally(r,r.strstart-r.match_start,r.match_length-z),r.lookahead-=r.match_length,r.match_length<=r.max_lazy_match&&r.lookahead>=z){for(r.match_length--;r.strstart++,r.ins_h=(r.ins_h<<r.hash_shift^r.window[r.strstart+z-1])&r.hash_mask,B=r.prev[r.strstart&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=r.strstart,--r.match_length!=0;);r.strstart++}else r.strstart+=r.match_length,r.match_length=0,r.ins_h=r.window[r.strstart],r.ins_h=(r.ins_h<<r.hash_shift^r.window[r.strstart+1])&r.hash_mask;else T=o._tr_tally(r,0,r.window[r.strstart]),r.lookahead--,r.strstart++;if(T&&(I(r,!1),r.strm.avail_out===0))return f}return r.insert=r.strstart<z-1?r.strstart:z-1,N===b?(I(r,!0),r.strm.avail_out===0?pe:O):r.last_lit&&(I(r,!1),r.strm.avail_out===0)?f:q}function ee(r,N){for(var B,T,g;;){if(r.lookahead<ne){if(be(r),r.lookahead<ne&&N===y)return f;if(r.lookahead===0)break}if(B=0,r.lookahead>=z&&(r.ins_h=(r.ins_h<<r.hash_shift^r.window[r.strstart+z-1])&r.hash_mask,B=r.prev[r.strstart&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=r.strstart),r.prev_length=r.match_length,r.prev_match=r.match_start,r.match_length=z-1,B!==0&&r.prev_length<r.max_lazy_match&&r.strstart-B<=r.w_size-ne&&(r.match_length=V(r,B),r.match_length<=5&&(r.strategy===1||r.match_length===z&&4096<r.strstart-r.match_start)&&(r.match_length=z-1)),r.prev_length>=z&&r.match_length<=r.prev_length){for(g=r.strstart+r.lookahead-z,T=o._tr_tally(r,r.strstart-1-r.prev_match,r.prev_length-z),r.lookahead-=r.prev_length-1,r.prev_length-=2;++r.strstart<=g&&(r.ins_h=(r.ins_h<<r.hash_shift^r.window[r.strstart+z-1])&r.hash_mask,B=r.prev[r.strstart&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=r.strstart),--r.prev_length!=0;);if(r.match_available=0,r.match_length=z-1,r.strstart++,T&&(I(r,!1),r.strm.avail_out===0))return f}else if(r.match_available){if((T=o._tr_tally(r,0,r.window[r.strstart-1]))&&I(r,!1),r.strstart++,r.lookahead--,r.strm.avail_out===0)return f}else r.match_available=1,r.strstart++,r.lookahead--}return r.match_available&&(T=o._tr_tally(r,0,r.window[r.strstart-1]),r.match_available=0),r.insert=r.strstart<z-1?r.strstart:z-1,N===b?(I(r,!0),r.strm.avail_out===0?pe:O):r.last_lit&&(I(r,!1),r.strm.avail_out===0)?f:q}function ae(r,N,B,T,g){this.good_length=r,this.max_lazy=N,this.nice_length=B,this.max_chain=T,this.func=g}function me(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=w,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new l.Buf16(2*P),this.dyn_dtree=new l.Buf16(2*(2*_+1)),this.bl_tree=new l.Buf16(2*(2*W+1)),ie(this.dyn_ltree),ie(this.dyn_dtree),ie(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new l.Buf16(H+1),this.heap=new l.Buf16(2*x+1),ie(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new l.Buf16(2*x+1),ie(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function ce(r){var N;return r&&r.state?(r.total_in=r.total_out=0,r.data_type=h,(N=r.state).pending=0,N.pending_out=0,N.wrap<0&&(N.wrap=-N.wrap),N.status=N.wrap?F:G,r.adler=N.wrap===2?0:1,N.last_flush=y,o._tr_init(N),m):le(r,C)}function ye(r){var N=ce(r);return N===m&&(function(B){B.window_size=2*B.w_size,ie(B.head),B.max_lazy_match=n[B.level].max_lazy,B.good_match=n[B.level].good_length,B.nice_match=n[B.level].nice_length,B.max_chain_length=n[B.level].max_chain,B.strstart=0,B.block_start=0,B.lookahead=0,B.insert=0,B.match_length=B.prev_length=z-1,B.match_available=0,B.ins_h=0})(r.state),N}function Te(r,N,B,T,g,S){if(!r)return C;var K=1;if(N===p&&(N=6),T<0?(K=0,T=-T):15<T&&(K=2,T-=16),g<1||k<g||B!==w||T<8||15<T||N<0||9<N||S<0||d<S)return le(r,C);T===8&&(T=9);var U=new me;return(r.state=U).strm=r,U.wrap=K,U.gzhead=null,U.w_bits=T,U.w_size=1<<U.w_bits,U.w_mask=U.w_size-1,U.hash_bits=g+7,U.hash_size=1<<U.hash_bits,U.hash_mask=U.hash_size-1,U.hash_shift=~~((U.hash_bits+z-1)/z),U.window=new l.Buf8(2*U.w_size),U.head=new l.Buf16(U.hash_size),U.prev=new l.Buf16(U.w_size),U.lit_bufsize=1<<g+6,U.pending_buf_size=4*U.lit_bufsize,U.pending_buf=new l.Buf8(U.pending_buf_size),U.d_buf=1*U.lit_bufsize,U.l_buf=3*U.lit_bufsize,U.level=N,U.strategy=S,U.method=B,ye(r)}n=[new ae(0,0,0,0,function(r,N){var B=65535;for(B>r.pending_buf_size-5&&(B=r.pending_buf_size-5);;){if(r.lookahead<=1){if(be(r),r.lookahead===0&&N===y)return f;if(r.lookahead===0)break}r.strstart+=r.lookahead,r.lookahead=0;var T=r.block_start+B;if((r.strstart===0||r.strstart>=T)&&(r.lookahead=r.strstart-T,r.strstart=T,I(r,!1),r.strm.avail_out===0)||r.strstart-r.block_start>=r.w_size-ne&&(I(r,!1),r.strm.avail_out===0))return f}return r.insert=0,N===b?(I(r,!0),r.strm.avail_out===0?pe:O):(r.strstart>r.block_start&&(I(r,!1),r.strm.avail_out),f)}),new ae(4,4,8,4,ge),new ae(4,5,16,8,ge),new ae(4,6,32,32,ge),new ae(4,4,16,16,ee),new ae(8,16,32,32,ee),new ae(8,16,128,128,ee),new ae(8,32,128,256,ee),new ae(32,128,258,1024,ee),new ae(32,258,258,4096,ee)],i.deflateInit=function(r,N){return Te(r,N,w,15,8,0)},i.deflateInit2=Te,i.deflateReset=ye,i.deflateResetKeep=ce,i.deflateSetHeader=function(r,N){return r&&r.state?r.state.wrap!==2?C:(r.state.gzhead=N,m):C},i.deflate=function(r,N){var B,T,g,S;if(!r||!r.state||5<N||N<0)return r?le(r,C):C;if(T=r.state,!r.output||!r.input&&r.avail_in!==0||T.status===666&&N!==b)return le(r,r.avail_out===0?-5:C);if(T.strm=r,B=T.last_flush,T.last_flush=N,T.status===F)if(T.wrap===2)r.adler=0,$(T,31),$(T,139),$(T,8),T.gzhead?($(T,(T.gzhead.text?1:0)+(T.gzhead.hcrc?2:0)+(T.gzhead.extra?4:0)+(T.gzhead.name?8:0)+(T.gzhead.comment?16:0)),$(T,255&T.gzhead.time),$(T,T.gzhead.time>>8&255),$(T,T.gzhead.time>>16&255),$(T,T.gzhead.time>>24&255),$(T,T.level===9?2:2<=T.strategy||T.level<2?4:0),$(T,255&T.gzhead.os),T.gzhead.extra&&T.gzhead.extra.length&&($(T,255&T.gzhead.extra.length),$(T,T.gzhead.extra.length>>8&255)),T.gzhead.hcrc&&(r.adler=c(r.adler,T.pending_buf,T.pending,0)),T.gzindex=0,T.status=69):($(T,0),$(T,0),$(T,0),$(T,0),$(T,0),$(T,T.level===9?2:2<=T.strategy||T.level<2?4:0),$(T,3),T.status=G);else{var K=w+(T.w_bits-8<<4)<<8;K|=(2<=T.strategy||T.level<2?0:T.level<6?1:T.level===6?2:3)<<6,T.strstart!==0&&(K|=32),K+=31-K%31,T.status=G,X(T,K),T.strstart!==0&&(X(T,r.adler>>>16),X(T,65535&r.adler)),r.adler=1}if(T.status===69)if(T.gzhead.extra){for(g=T.pending;T.gzindex<(65535&T.gzhead.extra.length)&&(T.pending!==T.pending_buf_size||(T.gzhead.hcrc&&T.pending>g&&(r.adler=c(r.adler,T.pending_buf,T.pending-g,g)),E(r),g=T.pending,T.pending!==T.pending_buf_size));)$(T,255&T.gzhead.extra[T.gzindex]),T.gzindex++;T.gzhead.hcrc&&T.pending>g&&(r.adler=c(r.adler,T.pending_buf,T.pending-g,g)),T.gzindex===T.gzhead.extra.length&&(T.gzindex=0,T.status=73)}else T.status=73;if(T.status===73)if(T.gzhead.name){g=T.pending;do{if(T.pending===T.pending_buf_size&&(T.gzhead.hcrc&&T.pending>g&&(r.adler=c(r.adler,T.pending_buf,T.pending-g,g)),E(r),g=T.pending,T.pending===T.pending_buf_size)){S=1;break}S=T.gzindex<T.gzhead.name.length?255&T.gzhead.name.charCodeAt(T.gzindex++):0,$(T,S)}while(S!==0);T.gzhead.hcrc&&T.pending>g&&(r.adler=c(r.adler,T.pending_buf,T.pending-g,g)),S===0&&(T.gzindex=0,T.status=91)}else T.status=91;if(T.status===91)if(T.gzhead.comment){g=T.pending;do{if(T.pending===T.pending_buf_size&&(T.gzhead.hcrc&&T.pending>g&&(r.adler=c(r.adler,T.pending_buf,T.pending-g,g)),E(r),g=T.pending,T.pending===T.pending_buf_size)){S=1;break}S=T.gzindex<T.gzhead.comment.length?255&T.gzhead.comment.charCodeAt(T.gzindex++):0,$(T,S)}while(S!==0);T.gzhead.hcrc&&T.pending>g&&(r.adler=c(r.adler,T.pending_buf,T.pending-g,g)),S===0&&(T.status=103)}else T.status=103;if(T.status===103&&(T.gzhead.hcrc?(T.pending+2>T.pending_buf_size&&E(r),T.pending+2<=T.pending_buf_size&&($(T,255&r.adler),$(T,r.adler>>8&255),r.adler=0,T.status=G)):T.status=G),T.pending!==0){if(E(r),r.avail_out===0)return T.last_flush=-1,m}else if(r.avail_in===0&&Y(N)<=Y(B)&&N!==b)return le(r,-5);if(T.status===666&&r.avail_in!==0)return le(r,-5);if(r.avail_in!==0||T.lookahead!==0||N!==y&&T.status!==666){var U=T.strategy===2?(function(R,j){for(var J;;){if(R.lookahead===0&&(be(R),R.lookahead===0)){if(j===y)return f;break}if(R.match_length=0,J=o._tr_tally(R,0,R.window[R.strstart]),R.lookahead--,R.strstart++,J&&(I(R,!1),R.strm.avail_out===0))return f}return R.insert=0,j===b?(I(R,!0),R.strm.avail_out===0?pe:O):R.last_lit&&(I(R,!1),R.strm.avail_out===0)?f:q})(T,N):T.strategy===3?(function(R,j){for(var J,M,Q,fe,te=R.window;;){if(R.lookahead<=Z){if(be(R),R.lookahead<=Z&&j===y)return f;if(R.lookahead===0)break}if(R.match_length=0,R.lookahead>=z&&0<R.strstart&&(M=te[Q=R.strstart-1])===te[++Q]&&M===te[++Q]&&M===te[++Q]){fe=R.strstart+Z;do;while(M===te[++Q]&&M===te[++Q]&&M===te[++Q]&&M===te[++Q]&&M===te[++Q]&&M===te[++Q]&&M===te[++Q]&&M===te[++Q]&&Q<fe);R.match_length=Z-(fe-Q),R.match_length>R.lookahead&&(R.match_length=R.lookahead)}if(R.match_length>=z?(J=o._tr_tally(R,1,R.match_length-z),R.lookahead-=R.match_length,R.strstart+=R.match_length,R.match_length=0):(J=o._tr_tally(R,0,R.window[R.strstart]),R.lookahead--,R.strstart++),J&&(I(R,!1),R.strm.avail_out===0))return f}return R.insert=0,j===b?(I(R,!0),R.strm.avail_out===0?pe:O):R.last_lit&&(I(R,!1),R.strm.avail_out===0)?f:q})(T,N):n[T.level].func(T,N);if(U!==pe&&U!==O||(T.status=666),U===f||U===pe)return r.avail_out===0&&(T.last_flush=-1),m;if(U===q&&(N===1?o._tr_align(T):N!==5&&(o._tr_stored_block(T,0,0,!1),N===3&&(ie(T.head),T.lookahead===0&&(T.strstart=0,T.block_start=0,T.insert=0))),E(r),r.avail_out===0))return T.last_flush=-1,m}return N!==b?m:T.wrap<=0?1:(T.wrap===2?($(T,255&r.adler),$(T,r.adler>>8&255),$(T,r.adler>>16&255),$(T,r.adler>>24&255),$(T,255&r.total_in),$(T,r.total_in>>8&255),$(T,r.total_in>>16&255),$(T,r.total_in>>24&255)):(X(T,r.adler>>>16),X(T,65535&r.adler)),E(r),0<T.wrap&&(T.wrap=-T.wrap),T.pending!==0?m:1)},i.deflateEnd=function(r){var N;return r&&r.state?(N=r.state.status)!==F&&N!==69&&N!==73&&N!==91&&N!==103&&N!==G&&N!==666?le(r,C):(r.state=null,N===G?le(r,-3):m):C},i.deflateSetDictionary=function(r,N){var B,T,g,S,K,U,R,j,J=N.length;if(!r||!r.state||(S=(B=r.state).wrap)===2||S===1&&B.status!==F||B.lookahead)return C;for(S===1&&(r.adler=u(r.adler,N,J,0)),B.wrap=0,J>=B.w_size&&(S===0&&(ie(B.head),B.strstart=0,B.block_start=0,B.insert=0),j=new l.Buf8(B.w_size),l.arraySet(j,N,J-B.w_size,B.w_size,0),N=j,J=B.w_size),K=r.avail_in,U=r.next_in,R=r.input,r.avail_in=J,r.next_in=0,r.input=N,be(B);B.lookahead>=z;){for(T=B.strstart,g=B.lookahead-(z-1);B.ins_h=(B.ins_h<<B.hash_shift^B.window[T+z-1])&B.hash_mask,B.prev[T&B.w_mask]=B.head[B.ins_h],B.head[B.ins_h]=T,T++,--g;);B.strstart=T,B.lookahead=z-1,be(B)}return B.strstart+=B.lookahead,B.block_start=B.strstart,B.insert=B.lookahead,B.lookahead=0,B.match_length=B.prev_length=z-1,B.match_available=0,r.next_in=U,r.input=R,r.avail_in=K,B.wrap=S,m},i.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(t,a,i){a.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(t,a,i){a.exports=function(n,l){var o,u,c,v,y,b,m,C,p,d,h,w,k,x,_,W,P,H,z,Z,ne,F,G,f,q;o=n.state,u=n.next_in,f=n.input,c=u+(n.avail_in-5),v=n.next_out,q=n.output,y=v-(l-n.avail_out),b=v+(n.avail_out-257),m=o.dmax,C=o.wsize,p=o.whave,d=o.wnext,h=o.window,w=o.hold,k=o.bits,x=o.lencode,_=o.distcode,W=(1<<o.lenbits)-1,P=(1<<o.distbits)-1;e:do{k<15&&(w+=f[u++]<<k,k+=8,w+=f[u++]<<k,k+=8),H=x[w&W];s:for(;;){if(w>>>=z=H>>>24,k-=z,(z=H>>>16&255)===0)q[v++]=65535&H;else{if(!(16&z)){if((64&z)==0){H=x[(65535&H)+(w&(1<<z)-1)];continue s}if(32&z){o.mode=12;break e}n.msg="invalid literal/length code",o.mode=30;break e}Z=65535&H,(z&=15)&&(k<z&&(w+=f[u++]<<k,k+=8),Z+=w&(1<<z)-1,w>>>=z,k-=z),k<15&&(w+=f[u++]<<k,k+=8,w+=f[u++]<<k,k+=8),H=_[w&P];t:for(;;){if(w>>>=z=H>>>24,k-=z,!(16&(z=H>>>16&255))){if((64&z)==0){H=_[(65535&H)+(w&(1<<z)-1)];continue t}n.msg="invalid distance code",o.mode=30;break e}if(ne=65535&H,k<(z&=15)&&(w+=f[u++]<<k,(k+=8)<z&&(w+=f[u++]<<k,k+=8)),m<(ne+=w&(1<<z)-1)){n.msg="invalid distance too far back",o.mode=30;break e}if(w>>>=z,k-=z,(z=v-y)<ne){if(p<(z=ne-z)&&o.sane){n.msg="invalid distance too far back",o.mode=30;break e}if(G=h,(F=0)===d){if(F+=C-z,z<Z){for(Z-=z;q[v++]=h[F++],--z;);F=v-ne,G=q}}else if(d<z){if(F+=C+d-z,(z-=d)<Z){for(Z-=z;q[v++]=h[F++],--z;);if(F=0,d<Z){for(Z-=z=d;q[v++]=h[F++],--z;);F=v-ne,G=q}}}else if(F+=d-z,z<Z){for(Z-=z;q[v++]=h[F++],--z;);F=v-ne,G=q}for(;2<Z;)q[v++]=G[F++],q[v++]=G[F++],q[v++]=G[F++],Z-=3;Z&&(q[v++]=G[F++],1<Z&&(q[v++]=G[F++]))}else{for(F=v-ne;q[v++]=q[F++],q[v++]=q[F++],q[v++]=q[F++],2<(Z-=3););Z&&(q[v++]=q[F++],1<Z&&(q[v++]=q[F++]))}break}}break}}while(u<c&&v<b);u-=Z=k>>3,w&=(1<<(k-=Z<<3))-1,n.next_in=u,n.next_out=v,n.avail_in=u<c?c-u+5:5-(u-c),n.avail_out=v<b?b-v+257:257-(v-b),o.hold=w,o.bits=k}},{}],49:[function(t,a,i){var n=t("../utils/common"),l=t("./adler32"),o=t("./crc32"),u=t("./inffast"),c=t("./inftrees"),v=1,y=2,b=0,m=-2,C=1,p=852,d=592;function h(F){return(F>>>24&255)+(F>>>8&65280)+((65280&F)<<8)+((255&F)<<24)}function w(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function k(F){var G;return F&&F.state?(G=F.state,F.total_in=F.total_out=G.total=0,F.msg="",G.wrap&&(F.adler=1&G.wrap),G.mode=C,G.last=0,G.havedict=0,G.dmax=32768,G.head=null,G.hold=0,G.bits=0,G.lencode=G.lendyn=new n.Buf32(p),G.distcode=G.distdyn=new n.Buf32(d),G.sane=1,G.back=-1,b):m}function x(F){var G;return F&&F.state?((G=F.state).wsize=0,G.whave=0,G.wnext=0,k(F)):m}function _(F,G){var f,q;return F&&F.state?(q=F.state,G<0?(f=0,G=-G):(f=1+(G>>4),G<48&&(G&=15)),G&&(G<8||15<G)?m:(q.window!==null&&q.wbits!==G&&(q.window=null),q.wrap=f,q.wbits=G,x(F))):m}function W(F,G){var f,q;return F?(q=new w,(F.state=q).window=null,(f=_(F,G))!==b&&(F.state=null),f):m}var P,H,z=!0;function Z(F){if(z){var G;for(P=new n.Buf32(512),H=new n.Buf32(32),G=0;G<144;)F.lens[G++]=8;for(;G<256;)F.lens[G++]=9;for(;G<280;)F.lens[G++]=7;for(;G<288;)F.lens[G++]=8;for(c(v,F.lens,0,288,P,0,F.work,{bits:9}),G=0;G<32;)F.lens[G++]=5;c(y,F.lens,0,32,H,0,F.work,{bits:5}),z=!1}F.lencode=P,F.lenbits=9,F.distcode=H,F.distbits=5}function ne(F,G,f,q){var pe,O=F.state;return O.window===null&&(O.wsize=1<<O.wbits,O.wnext=0,O.whave=0,O.window=new n.Buf8(O.wsize)),q>=O.wsize?(n.arraySet(O.window,G,f-O.wsize,O.wsize,0),O.wnext=0,O.whave=O.wsize):(q<(pe=O.wsize-O.wnext)&&(pe=q),n.arraySet(O.window,G,f-q,pe,O.wnext),(q-=pe)?(n.arraySet(O.window,G,f-q,q,0),O.wnext=q,O.whave=O.wsize):(O.wnext+=pe,O.wnext===O.wsize&&(O.wnext=0),O.whave<O.wsize&&(O.whave+=pe))),0}i.inflateReset=x,i.inflateReset2=_,i.inflateResetKeep=k,i.inflateInit=function(F){return W(F,15)},i.inflateInit2=W,i.inflate=function(F,G){var f,q,pe,O,le,Y,ie,E,I,$,X,V,be,ge,ee,ae,me,ce,ye,Te,r,N,B,T,g=0,S=new n.Buf8(4),K=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!F||!F.state||!F.output||!F.input&&F.avail_in!==0)return m;(f=F.state).mode===12&&(f.mode=13),le=F.next_out,pe=F.output,ie=F.avail_out,O=F.next_in,q=F.input,Y=F.avail_in,E=f.hold,I=f.bits,$=Y,X=ie,N=b;e:for(;;)switch(f.mode){case C:if(f.wrap===0){f.mode=13;break}for(;I<16;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}if(2&f.wrap&&E===35615){S[f.check=0]=255&E,S[1]=E>>>8&255,f.check=o(f.check,S,2,0),I=E=0,f.mode=2;break}if(f.flags=0,f.head&&(f.head.done=!1),!(1&f.wrap)||(((255&E)<<8)+(E>>8))%31){F.msg="incorrect header check",f.mode=30;break}if((15&E)!=8){F.msg="unknown compression method",f.mode=30;break}if(I-=4,r=8+(15&(E>>>=4)),f.wbits===0)f.wbits=r;else if(r>f.wbits){F.msg="invalid window size",f.mode=30;break}f.dmax=1<<r,F.adler=f.check=1,f.mode=512&E?10:12,I=E=0;break;case 2:for(;I<16;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}if(f.flags=E,(255&f.flags)!=8){F.msg="unknown compression method",f.mode=30;break}if(57344&f.flags){F.msg="unknown header flags set",f.mode=30;break}f.head&&(f.head.text=E>>8&1),512&f.flags&&(S[0]=255&E,S[1]=E>>>8&255,f.check=o(f.check,S,2,0)),I=E=0,f.mode=3;case 3:for(;I<32;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}f.head&&(f.head.time=E),512&f.flags&&(S[0]=255&E,S[1]=E>>>8&255,S[2]=E>>>16&255,S[3]=E>>>24&255,f.check=o(f.check,S,4,0)),I=E=0,f.mode=4;case 4:for(;I<16;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}f.head&&(f.head.xflags=255&E,f.head.os=E>>8),512&f.flags&&(S[0]=255&E,S[1]=E>>>8&255,f.check=o(f.check,S,2,0)),I=E=0,f.mode=5;case 5:if(1024&f.flags){for(;I<16;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}f.length=E,f.head&&(f.head.extra_len=E),512&f.flags&&(S[0]=255&E,S[1]=E>>>8&255,f.check=o(f.check,S,2,0)),I=E=0}else f.head&&(f.head.extra=null);f.mode=6;case 6:if(1024&f.flags&&(Y<(V=f.length)&&(V=Y),V&&(f.head&&(r=f.head.extra_len-f.length,f.head.extra||(f.head.extra=new Array(f.head.extra_len)),n.arraySet(f.head.extra,q,O,V,r)),512&f.flags&&(f.check=o(f.check,q,V,O)),Y-=V,O+=V,f.length-=V),f.length))break e;f.length=0,f.mode=7;case 7:if(2048&f.flags){if(Y===0)break e;for(V=0;r=q[O+V++],f.head&&r&&f.length<65536&&(f.head.name+=String.fromCharCode(r)),r&&V<Y;);if(512&f.flags&&(f.check=o(f.check,q,V,O)),Y-=V,O+=V,r)break e}else f.head&&(f.head.name=null);f.length=0,f.mode=8;case 8:if(4096&f.flags){if(Y===0)break e;for(V=0;r=q[O+V++],f.head&&r&&f.length<65536&&(f.head.comment+=String.fromCharCode(r)),r&&V<Y;);if(512&f.flags&&(f.check=o(f.check,q,V,O)),Y-=V,O+=V,r)break e}else f.head&&(f.head.comment=null);f.mode=9;case 9:if(512&f.flags){for(;I<16;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}if(E!==(65535&f.check)){F.msg="header crc mismatch",f.mode=30;break}I=E=0}f.head&&(f.head.hcrc=f.flags>>9&1,f.head.done=!0),F.adler=f.check=0,f.mode=12;break;case 10:for(;I<32;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}F.adler=f.check=h(E),I=E=0,f.mode=11;case 11:if(f.havedict===0)return F.next_out=le,F.avail_out=ie,F.next_in=O,F.avail_in=Y,f.hold=E,f.bits=I,2;F.adler=f.check=1,f.mode=12;case 12:if(G===5||G===6)break e;case 13:if(f.last){E>>>=7&I,I-=7&I,f.mode=27;break}for(;I<3;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}switch(f.last=1&E,I-=1,3&(E>>>=1)){case 0:f.mode=14;break;case 1:if(Z(f),f.mode=20,G!==6)break;E>>>=2,I-=2;break e;case 2:f.mode=17;break;case 3:F.msg="invalid block type",f.mode=30}E>>>=2,I-=2;break;case 14:for(E>>>=7&I,I-=7&I;I<32;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}if((65535&E)!=(E>>>16^65535)){F.msg="invalid stored block lengths",f.mode=30;break}if(f.length=65535&E,I=E=0,f.mode=15,G===6)break e;case 15:f.mode=16;case 16:if(V=f.length){if(Y<V&&(V=Y),ie<V&&(V=ie),V===0)break e;n.arraySet(pe,q,O,V,le),Y-=V,O+=V,ie-=V,le+=V,f.length-=V;break}f.mode=12;break;case 17:for(;I<14;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}if(f.nlen=257+(31&E),E>>>=5,I-=5,f.ndist=1+(31&E),E>>>=5,I-=5,f.ncode=4+(15&E),E>>>=4,I-=4,286<f.nlen||30<f.ndist){F.msg="too many length or distance symbols",f.mode=30;break}f.have=0,f.mode=18;case 18:for(;f.have<f.ncode;){for(;I<3;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}f.lens[K[f.have++]]=7&E,E>>>=3,I-=3}for(;f.have<19;)f.lens[K[f.have++]]=0;if(f.lencode=f.lendyn,f.lenbits=7,B={bits:f.lenbits},N=c(0,f.lens,0,19,f.lencode,0,f.work,B),f.lenbits=B.bits,N){F.msg="invalid code lengths set",f.mode=30;break}f.have=0,f.mode=19;case 19:for(;f.have<f.nlen+f.ndist;){for(;ae=(g=f.lencode[E&(1<<f.lenbits)-1])>>>16&255,me=65535&g,!((ee=g>>>24)<=I);){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}if(me<16)E>>>=ee,I-=ee,f.lens[f.have++]=me;else{if(me===16){for(T=ee+2;I<T;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}if(E>>>=ee,I-=ee,f.have===0){F.msg="invalid bit length repeat",f.mode=30;break}r=f.lens[f.have-1],V=3+(3&E),E>>>=2,I-=2}else if(me===17){for(T=ee+3;I<T;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}I-=ee,r=0,V=3+(7&(E>>>=ee)),E>>>=3,I-=3}else{for(T=ee+7;I<T;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}I-=ee,r=0,V=11+(127&(E>>>=ee)),E>>>=7,I-=7}if(f.have+V>f.nlen+f.ndist){F.msg="invalid bit length repeat",f.mode=30;break}for(;V--;)f.lens[f.have++]=r}}if(f.mode===30)break;if(f.lens[256]===0){F.msg="invalid code -- missing end-of-block",f.mode=30;break}if(f.lenbits=9,B={bits:f.lenbits},N=c(v,f.lens,0,f.nlen,f.lencode,0,f.work,B),f.lenbits=B.bits,N){F.msg="invalid literal/lengths set",f.mode=30;break}if(f.distbits=6,f.distcode=f.distdyn,B={bits:f.distbits},N=c(y,f.lens,f.nlen,f.ndist,f.distcode,0,f.work,B),f.distbits=B.bits,N){F.msg="invalid distances set",f.mode=30;break}if(f.mode=20,G===6)break e;case 20:f.mode=21;case 21:if(6<=Y&&258<=ie){F.next_out=le,F.avail_out=ie,F.next_in=O,F.avail_in=Y,f.hold=E,f.bits=I,u(F,X),le=F.next_out,pe=F.output,ie=F.avail_out,O=F.next_in,q=F.input,Y=F.avail_in,E=f.hold,I=f.bits,f.mode===12&&(f.back=-1);break}for(f.back=0;ae=(g=f.lencode[E&(1<<f.lenbits)-1])>>>16&255,me=65535&g,!((ee=g>>>24)<=I);){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}if(ae&&(240&ae)==0){for(ce=ee,ye=ae,Te=me;ae=(g=f.lencode[Te+((E&(1<<ce+ye)-1)>>ce)])>>>16&255,me=65535&g,!(ce+(ee=g>>>24)<=I);){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}E>>>=ce,I-=ce,f.back+=ce}if(E>>>=ee,I-=ee,f.back+=ee,f.length=me,ae===0){f.mode=26;break}if(32&ae){f.back=-1,f.mode=12;break}if(64&ae){F.msg="invalid literal/length code",f.mode=30;break}f.extra=15&ae,f.mode=22;case 22:if(f.extra){for(T=f.extra;I<T;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}f.length+=E&(1<<f.extra)-1,E>>>=f.extra,I-=f.extra,f.back+=f.extra}f.was=f.length,f.mode=23;case 23:for(;ae=(g=f.distcode[E&(1<<f.distbits)-1])>>>16&255,me=65535&g,!((ee=g>>>24)<=I);){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}if((240&ae)==0){for(ce=ee,ye=ae,Te=me;ae=(g=f.distcode[Te+((E&(1<<ce+ye)-1)>>ce)])>>>16&255,me=65535&g,!(ce+(ee=g>>>24)<=I);){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}E>>>=ce,I-=ce,f.back+=ce}if(E>>>=ee,I-=ee,f.back+=ee,64&ae){F.msg="invalid distance code",f.mode=30;break}f.offset=me,f.extra=15&ae,f.mode=24;case 24:if(f.extra){for(T=f.extra;I<T;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}f.offset+=E&(1<<f.extra)-1,E>>>=f.extra,I-=f.extra,f.back+=f.extra}if(f.offset>f.dmax){F.msg="invalid distance too far back",f.mode=30;break}f.mode=25;case 25:if(ie===0)break e;if(V=X-ie,f.offset>V){if((V=f.offset-V)>f.whave&&f.sane){F.msg="invalid distance too far back",f.mode=30;break}be=V>f.wnext?(V-=f.wnext,f.wsize-V):f.wnext-V,V>f.length&&(V=f.length),ge=f.window}else ge=pe,be=le-f.offset,V=f.length;for(ie<V&&(V=ie),ie-=V,f.length-=V;pe[le++]=ge[be++],--V;);f.length===0&&(f.mode=21);break;case 26:if(ie===0)break e;pe[le++]=f.length,ie--,f.mode=21;break;case 27:if(f.wrap){for(;I<32;){if(Y===0)break e;Y--,E|=q[O++]<<I,I+=8}if(X-=ie,F.total_out+=X,f.total+=X,X&&(F.adler=f.check=f.flags?o(f.check,pe,X,le-X):l(f.check,pe,X,le-X)),X=ie,(f.flags?E:h(E))!==f.check){F.msg="incorrect data check",f.mode=30;break}I=E=0}f.mode=28;case 28:if(f.wrap&&f.flags){for(;I<32;){if(Y===0)break e;Y--,E+=q[O++]<<I,I+=8}if(E!==(4294967295&f.total)){F.msg="incorrect length check",f.mode=30;break}I=E=0}f.mode=29;case 29:N=1;break e;case 30:N=-3;break e;case 31:return-4;default:return m}return F.next_out=le,F.avail_out=ie,F.next_in=O,F.avail_in=Y,f.hold=E,f.bits=I,(f.wsize||X!==F.avail_out&&f.mode<30&&(f.mode<27||G!==4))&&ne(F,F.output,F.next_out,X-F.avail_out)?(f.mode=31,-4):($-=F.avail_in,X-=F.avail_out,F.total_in+=$,F.total_out+=X,f.total+=X,f.wrap&&X&&(F.adler=f.check=f.flags?o(f.check,pe,X,F.next_out-X):l(f.check,pe,X,F.next_out-X)),F.data_type=f.bits+(f.last?64:0)+(f.mode===12?128:0)+(f.mode===20||f.mode===15?256:0),($==0&&X===0||G===4)&&N===b&&(N=-5),N)},i.inflateEnd=function(F){if(!F||!F.state)return m;var G=F.state;return G.window&&(G.window=null),F.state=null,b},i.inflateGetHeader=function(F,G){var f;return F&&F.state?(2&(f=F.state).wrap)==0?m:((f.head=G).done=!1,b):m},i.inflateSetDictionary=function(F,G){var f,q=G.length;return F&&F.state?(f=F.state).wrap!==0&&f.mode!==11?m:f.mode===11&&l(1,G,q,0)!==f.check?-3:ne(F,G,q,q)?(f.mode=31,-4):(f.havedict=1,b):m},i.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(t,a,i){var n=t("../utils/common"),l=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],o=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],u=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],c=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];a.exports=function(v,y,b,m,C,p,d,h){var w,k,x,_,W,P,H,z,Z,ne=h.bits,F=0,G=0,f=0,q=0,pe=0,O=0,le=0,Y=0,ie=0,E=0,I=null,$=0,X=new n.Buf16(16),V=new n.Buf16(16),be=null,ge=0;for(F=0;F<=15;F++)X[F]=0;for(G=0;G<m;G++)X[y[b+G]]++;for(pe=ne,q=15;1<=q&&X[q]===0;q--);if(q<pe&&(pe=q),q===0)return C[p++]=20971520,C[p++]=20971520,h.bits=1,0;for(f=1;f<q&&X[f]===0;f++);for(pe<f&&(pe=f),F=Y=1;F<=15;F++)if(Y<<=1,(Y-=X[F])<0)return-1;if(0<Y&&(v===0||q!==1))return-1;for(V[1]=0,F=1;F<15;F++)V[F+1]=V[F]+X[F];for(G=0;G<m;G++)y[b+G]!==0&&(d[V[y[b+G]]++]=G);if(P=v===0?(I=be=d,19):v===1?(I=l,$-=257,be=o,ge-=257,256):(I=u,be=c,-1),F=f,W=p,le=G=E=0,x=-1,_=(ie=1<<(O=pe))-1,v===1&&852<ie||v===2&&592<ie)return 1;for(;;){for(H=F-le,Z=d[G]<P?(z=0,d[G]):d[G]>P?(z=be[ge+d[G]],I[$+d[G]]):(z=96,0),w=1<<F-le,f=k=1<<O;C[W+(E>>le)+(k-=w)]=H<<24|z<<16|Z|0,k!==0;);for(w=1<<F-1;E&w;)w>>=1;if(w!==0?(E&=w-1,E+=w):E=0,G++,--X[F]==0){if(F===q)break;F=y[b+d[G]]}if(pe<F&&(E&_)!==x){for(le===0&&(le=pe),W+=f,Y=1<<(O=F-le);O+le<q&&!((Y-=X[O+le])<=0);)O++,Y<<=1;if(ie+=1<<O,v===1&&852<ie||v===2&&592<ie)return 1;C[x=E&_]=pe<<24|O<<16|W-p|0}}return E!==0&&(C[W+E]=F-le<<24|64<<16|0),h.bits=pe,0}},{"../utils/common":41}],51:[function(t,a,i){a.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(t,a,i){var n=t("../utils/common"),l=0,o=1;function u(g){for(var S=g.length;0<=--S;)g[S]=0}var c=0,v=29,y=256,b=y+1+v,m=30,C=19,p=2*b+1,d=15,h=16,w=7,k=256,x=16,_=17,W=18,P=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],H=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],z=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],Z=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],ne=new Array(2*(b+2));u(ne);var F=new Array(2*m);u(F);var G=new Array(512);u(G);var f=new Array(256);u(f);var q=new Array(v);u(q);var pe,O,le,Y=new Array(m);function ie(g,S,K,U,R){this.static_tree=g,this.extra_bits=S,this.extra_base=K,this.elems=U,this.max_length=R,this.has_stree=g&&g.length}function E(g,S){this.dyn_tree=g,this.max_code=0,this.stat_desc=S}function I(g){return g<256?G[g]:G[256+(g>>>7)]}function $(g,S){g.pending_buf[g.pending++]=255&S,g.pending_buf[g.pending++]=S>>>8&255}function X(g,S,K){g.bi_valid>h-K?(g.bi_buf|=S<<g.bi_valid&65535,$(g,g.bi_buf),g.bi_buf=S>>h-g.bi_valid,g.bi_valid+=K-h):(g.bi_buf|=S<<g.bi_valid&65535,g.bi_valid+=K)}function V(g,S,K){X(g,K[2*S],K[2*S+1])}function be(g,S){for(var K=0;K|=1&g,g>>>=1,K<<=1,0<--S;);return K>>>1}function ge(g,S,K){var U,R,j=new Array(d+1),J=0;for(U=1;U<=d;U++)j[U]=J=J+K[U-1]<<1;for(R=0;R<=S;R++){var M=g[2*R+1];M!==0&&(g[2*R]=be(j[M]++,M))}}function ee(g){var S;for(S=0;S<b;S++)g.dyn_ltree[2*S]=0;for(S=0;S<m;S++)g.dyn_dtree[2*S]=0;for(S=0;S<C;S++)g.bl_tree[2*S]=0;g.dyn_ltree[2*k]=1,g.opt_len=g.static_len=0,g.last_lit=g.matches=0}function ae(g){8<g.bi_valid?$(g,g.bi_buf):0<g.bi_valid&&(g.pending_buf[g.pending++]=g.bi_buf),g.bi_buf=0,g.bi_valid=0}function me(g,S,K,U){var R=2*S,j=2*K;return g[R]<g[j]||g[R]===g[j]&&U[S]<=U[K]}function ce(g,S,K){for(var U=g.heap[K],R=K<<1;R<=g.heap_len&&(R<g.heap_len&&me(S,g.heap[R+1],g.heap[R],g.depth)&&R++,!me(S,U,g.heap[R],g.depth));)g.heap[K]=g.heap[R],K=R,R<<=1;g.heap[K]=U}function ye(g,S,K){var U,R,j,J,M=0;if(g.last_lit!==0)for(;U=g.pending_buf[g.d_buf+2*M]<<8|g.pending_buf[g.d_buf+2*M+1],R=g.pending_buf[g.l_buf+M],M++,U===0?V(g,R,S):(V(g,(j=f[R])+y+1,S),(J=P[j])!==0&&X(g,R-=q[j],J),V(g,j=I(--U),K),(J=H[j])!==0&&X(g,U-=Y[j],J)),M<g.last_lit;);V(g,k,S)}function Te(g,S){var K,U,R,j=S.dyn_tree,J=S.stat_desc.static_tree,M=S.stat_desc.has_stree,Q=S.stat_desc.elems,fe=-1;for(g.heap_len=0,g.heap_max=p,K=0;K<Q;K++)j[2*K]!==0?(g.heap[++g.heap_len]=fe=K,g.depth[K]=0):j[2*K+1]=0;for(;g.heap_len<2;)j[2*(R=g.heap[++g.heap_len]=fe<2?++fe:0)]=1,g.depth[R]=0,g.opt_len--,M&&(g.static_len-=J[2*R+1]);for(S.max_code=fe,K=g.heap_len>>1;1<=K;K--)ce(g,j,K);for(R=Q;K=g.heap[1],g.heap[1]=g.heap[g.heap_len--],ce(g,j,1),U=g.heap[1],g.heap[--g.heap_max]=K,g.heap[--g.heap_max]=U,j[2*R]=j[2*K]+j[2*U],g.depth[R]=(g.depth[K]>=g.depth[U]?g.depth[K]:g.depth[U])+1,j[2*K+1]=j[2*U+1]=R,g.heap[1]=R++,ce(g,j,1),2<=g.heap_len;);g.heap[--g.heap_max]=g.heap[1],(function(te,we){var Ee,ke,Re,Se,us,Ss,Ke=we.dyn_tree,Be=we.max_code,Oe=we.stat_desc.static_tree,Qs=we.stat_desc.has_stree,Dt=we.stat_desc.extra_bits,ia=we.stat_desc.extra_base,$s=we.stat_desc.max_length,ht=0;for(Se=0;Se<=d;Se++)te.bl_count[Se]=0;for(Ke[2*te.heap[te.heap_max]+1]=0,Ee=te.heap_max+1;Ee<p;Ee++)$s<(Se=Ke[2*Ke[2*(ke=te.heap[Ee])+1]+1]+1)&&(Se=$s,ht++),Ke[2*ke+1]=Se,Be<ke||(te.bl_count[Se]++,us=0,ia<=ke&&(us=Dt[ke-ia]),Ss=Ke[2*ke],te.opt_len+=Ss*(Se+us),Qs&&(te.static_len+=Ss*(Oe[2*ke+1]+us)));if(ht!==0){do{for(Se=$s-1;te.bl_count[Se]===0;)Se--;te.bl_count[Se]--,te.bl_count[Se+1]+=2,te.bl_count[$s]--,ht-=2}while(0<ht);for(Se=$s;Se!==0;Se--)for(ke=te.bl_count[Se];ke!==0;)Be<(Re=te.heap[--Ee])||(Ke[2*Re+1]!==Se&&(te.opt_len+=(Se-Ke[2*Re+1])*Ke[2*Re],Ke[2*Re+1]=Se),ke--)}})(g,S),ge(j,fe,g.bl_count)}function r(g,S,K){var U,R,j=-1,J=S[1],M=0,Q=7,fe=4;for(J===0&&(Q=138,fe=3),S[2*(K+1)+1]=65535,U=0;U<=K;U++)R=J,J=S[2*(U+1)+1],++M<Q&&R===J||(M<fe?g.bl_tree[2*R]+=M:R!==0?(R!==j&&g.bl_tree[2*R]++,g.bl_tree[2*x]++):M<=10?g.bl_tree[2*_]++:g.bl_tree[2*W]++,j=R,fe=(M=0)===J?(Q=138,3):R===J?(Q=6,3):(Q=7,4))}function N(g,S,K){var U,R,j=-1,J=S[1],M=0,Q=7,fe=4;for(J===0&&(Q=138,fe=3),U=0;U<=K;U++)if(R=J,J=S[2*(U+1)+1],!(++M<Q&&R===J)){if(M<fe)for(;V(g,R,g.bl_tree),--M!=0;);else R!==0?(R!==j&&(V(g,R,g.bl_tree),M--),V(g,x,g.bl_tree),X(g,M-3,2)):M<=10?(V(g,_,g.bl_tree),X(g,M-3,3)):(V(g,W,g.bl_tree),X(g,M-11,7));j=R,fe=(M=0)===J?(Q=138,3):R===J?(Q=6,3):(Q=7,4)}}u(Y);var B=!1;function T(g,S,K,U){X(g,(c<<1)+(U?1:0),3),(function(R,j,J,M){ae(R),$(R,J),$(R,~J),n.arraySet(R.pending_buf,R.window,j,J,R.pending),R.pending+=J})(g,S,K)}i._tr_init=function(g){B||((function(){var S,K,U,R,j,J=new Array(d+1);for(R=U=0;R<v-1;R++)for(q[R]=U,S=0;S<1<<P[R];S++)f[U++]=R;for(f[U-1]=R,R=j=0;R<16;R++)for(Y[R]=j,S=0;S<1<<H[R];S++)G[j++]=R;for(j>>=7;R<m;R++)for(Y[R]=j<<7,S=0;S<1<<H[R]-7;S++)G[256+j++]=R;for(K=0;K<=d;K++)J[K]=0;for(S=0;S<=143;)ne[2*S+1]=8,S++,J[8]++;for(;S<=255;)ne[2*S+1]=9,S++,J[9]++;for(;S<=279;)ne[2*S+1]=7,S++,J[7]++;for(;S<=287;)ne[2*S+1]=8,S++,J[8]++;for(ge(ne,b+1,J),S=0;S<m;S++)F[2*S+1]=5,F[2*S]=be(S,5);pe=new ie(ne,P,y+1,b,d),O=new ie(F,H,0,m,d),le=new ie(new Array(0),z,0,C,w)})(),B=!0),g.l_desc=new E(g.dyn_ltree,pe),g.d_desc=new E(g.dyn_dtree,O),g.bl_desc=new E(g.bl_tree,le),g.bi_buf=0,g.bi_valid=0,ee(g)},i._tr_stored_block=T,i._tr_flush_block=function(g,S,K,U){var R,j,J=0;0<g.level?(g.strm.data_type===2&&(g.strm.data_type=(function(M){var Q,fe=4093624447;for(Q=0;Q<=31;Q++,fe>>>=1)if(1&fe&&M.dyn_ltree[2*Q]!==0)return l;if(M.dyn_ltree[18]!==0||M.dyn_ltree[20]!==0||M.dyn_ltree[26]!==0)return o;for(Q=32;Q<y;Q++)if(M.dyn_ltree[2*Q]!==0)return o;return l})(g)),Te(g,g.l_desc),Te(g,g.d_desc),J=(function(M){var Q;for(r(M,M.dyn_ltree,M.l_desc.max_code),r(M,M.dyn_dtree,M.d_desc.max_code),Te(M,M.bl_desc),Q=C-1;3<=Q&&M.bl_tree[2*Z[Q]+1]===0;Q--);return M.opt_len+=3*(Q+1)+5+5+4,Q})(g),R=g.opt_len+3+7>>>3,(j=g.static_len+3+7>>>3)<=R&&(R=j)):R=j=K+5,K+4<=R&&S!==-1?T(g,S,K,U):g.strategy===4||j===R?(X(g,2+(U?1:0),3),ye(g,ne,F)):(X(g,4+(U?1:0),3),(function(M,Q,fe,te){var we;for(X(M,Q-257,5),X(M,fe-1,5),X(M,te-4,4),we=0;we<te;we++)X(M,M.bl_tree[2*Z[we]+1],3);N(M,M.dyn_ltree,Q-1),N(M,M.dyn_dtree,fe-1)})(g,g.l_desc.max_code+1,g.d_desc.max_code+1,J+1),ye(g,g.dyn_ltree,g.dyn_dtree)),ee(g),U&&ae(g)},i._tr_tally=function(g,S,K){return g.pending_buf[g.d_buf+2*g.last_lit]=S>>>8&255,g.pending_buf[g.d_buf+2*g.last_lit+1]=255&S,g.pending_buf[g.l_buf+g.last_lit]=255&K,g.last_lit++,S===0?g.dyn_ltree[2*K]++:(g.matches++,S--,g.dyn_ltree[2*(f[K]+y+1)]++,g.dyn_dtree[2*I(S)]++),g.last_lit===g.lit_bufsize-1},i._tr_align=function(g){X(g,2,3),V(g,k,ne),(function(S){S.bi_valid===16?($(S,S.bi_buf),S.bi_buf=0,S.bi_valid=0):8<=S.bi_valid&&(S.pending_buf[S.pending++]=255&S.bi_buf,S.bi_buf>>=8,S.bi_valid-=8)})(g)}},{"../utils/common":41}],53:[function(t,a,i){a.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,a,i){(function(n){(function(l,o){if(!l.setImmediate){var u,c,v,y,b=1,m={},C=!1,p=l.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(l);d=d&&d.setTimeout?d:l,u={}.toString.call(l.process)==="[object process]"?function(x){process.nextTick(function(){w(x)})}:(function(){if(l.postMessage&&!l.importScripts){var x=!0,_=l.onmessage;return l.onmessage=function(){x=!1},l.postMessage("","*"),l.onmessage=_,x}})()?(y="setImmediate$"+Math.random()+"$",l.addEventListener?l.addEventListener("message",k,!1):l.attachEvent("onmessage",k),function(x){l.postMessage(y+x,"*")}):l.MessageChannel?((v=new MessageChannel).port1.onmessage=function(x){w(x.data)},function(x){v.port2.postMessage(x)}):p&&"onreadystatechange"in p.createElement("script")?(c=p.documentElement,function(x){var _=p.createElement("script");_.onreadystatechange=function(){w(x),_.onreadystatechange=null,c.removeChild(_),_=null},c.appendChild(_)}):function(x){setTimeout(w,0,x)},d.setImmediate=function(x){typeof x!="function"&&(x=new Function(""+x));for(var _=new Array(arguments.length-1),W=0;W<_.length;W++)_[W]=arguments[W+1];var P={callback:x,args:_};return m[b]=P,u(b),b++},d.clearImmediate=h}function h(x){delete m[x]}function w(x){if(C)setTimeout(w,0,x);else{var _=m[x];if(_){C=!0;try{(function(W){var P=W.callback,H=W.args;switch(H.length){case 0:P();break;case 1:P(H[0]);break;case 2:P(H[0],H[1]);break;case 3:P(H[0],H[1],H[2]);break;default:P.apply(o,H)}})(_)}finally{h(x),C=!1}}}}function k(x){x.source===l&&typeof x.data=="string"&&x.data.indexOf(y)===0&&w(+x.data.slice(y.length))}})(typeof self>"u"?n===void 0?this:n:self)}).call(this,typeof vt<"u"?vt:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})})(Mt)),Mt.exports}var Gl=jl();const Zl=Hl(Gl);function ot(e,s,t){const a=e instanceof Uint8Array?new Blob([new Uint8Array(e)],{type:t}):new Blob([e],{type:t}),i=URL.createObjectURL(a),n=document.createElement("a");n.href=i,n.download=s,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(i)}function It(e){return e.replace(/[<>:"/\\|?*]/g,"").replace(/\s+/g,"_").substring(0,100)}function Kl(e){const s=[];return Js(e)&&s.push("zwo"),Ys(e)&&s.push("fit"),Xs(e)&&s.push("mrc"),s}async function ql(e,s,t){const a=It(e.name);try{switch(s){case"zwo":{if(!Js(e.sport))return{success:!1,filename:"",error:"Zwift export only supports bike and run workouts"};const i=hn(e,t),n=`${a}.zwo`;return ot(i,n,"application/xml"),{success:!0,filename:n}}case"fit":{if(!Ys(e.sport))return{success:!1,filename:"",error:`FIT export not supported for ${e.sport} workouts`};const i=await An(e,t),n=`${a}.fit`;return ot(i,n,"application/vnd.ant.fit"),{success:!0,filename:n}}case"mrc":{if(!Xs(e.sport))return{success:!1,filename:"",error:"MRC export only supports bike workouts"};const i=Fn(e,t),n=`${a}.mrc`;return ot(i,n,"text/plain"),{success:!0,filename:n}}default:return{success:!1,filename:"",error:`Unknown format: ${s}`}}}catch(i){return{success:!1,filename:"",error:i instanceof Error?i.message:"Unknown error"}}}function Vl(e){try{const s=Ul(e),a=`${It(e.meta.event)}_training_plan.ics`;return ot(s,a,"text/calendar"),{success:!0,filename:a}}catch(s){return{success:!1,filename:"",error:s instanceof Error?s.message:"Unknown error"}}}async function Jl(e,s,t){const a=It(e.name);try{switch(s){case"zwo":return Js(e.sport)?{content:hn(e,t),filename:`${a}.zwo`}:null;case"fit":return Ys(e.sport)?{content:await An(e,t),filename:`${a}.fit`}:null;case"mrc":return Xs(e.sport)?{content:Fn(e,t),filename:`${a}.mrc`}:null;default:return null}}catch{return null}}async function Yl(e,s,t){const a=[];let i=0,n=0;const l=new Zl;for(const o of e.weeks)for(const u of o.days)for(const c of u.workouts){if(c.sport==="rest"){n++;continue}if(s==="zwo"&&!Js(c.sport)){n++;continue}if(s==="fit"&&!Ys(c.sport)){n++;continue}if(s==="mrc"&&!Xs(c.sport)){n++;continue}try{const v=await Jl(c,s,t);v?(l.file(v.filename,v.content),i++):n++}catch(v){a.push(`${c.name}: ${v instanceof Error?v.message:"Unknown error"}`)}}if(i>0){const o=await l.generateAsync({type:"uint8array"}),c=`${It(e.meta.event)}_workouts_${s}.zip`;ot(o,c,"application/zip")}return{exported:i,skipped:n,errors:a}}var Xl=ue("<div> </div>"),Ql=ue('<div class="export-menu svelte-dkgmtr"><button class="export-option svelte-dkgmtr"><span class="export-icon svelte-dkgmtr">Z</span> <div><div class="export-name svelte-dkgmtr">Zwift (.zwo)</div> <div class="export-desc svelte-dkgmtr">Bike & run workouts</div></div></button> <button class="export-option svelte-dkgmtr"><span class="export-icon svelte-dkgmtr">G</span> <div><div class="export-name svelte-dkgmtr">Garmin (.fit)</div> <div class="export-desc svelte-dkgmtr">All workout types</div></div></button> <button class="export-option svelte-dkgmtr"><span class="export-icon svelte-dkgmtr">E</span> <div><div class="export-name svelte-dkgmtr">ERG/MRC (.mrc)</div> <div class="export-desc svelte-dkgmtr">Bike workouts only</div></div></button></div>'),$l=ue('<button class="clear-filter svelte-dkgmtr">Clear</button>'),eo=ue('<div class="check-icon svelte-dkgmtr">✓</div>'),so=ue('<button><div> </div> <div class="sport-info svelte-dkgmtr"><div class="sport-name svelte-dkgmtr"> </div> <div class="sport-hours svelte-dkgmtr"> </div></div> <!></button>'),to=ue("<button> </button>"),ao=ue('<aside><div class="event-header svelte-dkgmtr"><h1 class="event-name svelte-dkgmtr"> </h1> <div class="event-date svelte-dkgmtr"> </div> <div class="athlete-name svelte-dkgmtr"> </div></div> <div class="progress-section svelte-dkgmtr"><div class="progress-ring-container svelte-dkgmtr"><svg class="progress-ring svelte-dkgmtr" width="140" height="140"><defs><linearGradient id="progressGradient" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" style="stop-color: var(--accent)"></stop><stop offset="100%" style="stop-color: var(--run)"></stop></linearGradient></defs><circle class="progress-ring-bg svelte-dkgmtr" cx="70" cy="70" r="60"></circle><circle class="progress-ring-fill svelte-dkgmtr" cx="70" cy="70" r="60"></circle></svg> <div class="progress-text svelte-dkgmtr"><div class="progress-percent svelte-dkgmtr"> </div> <div class="progress-label svelte-dkgmtr">Complete</div></div></div></div> <div class="stats-grid svelte-dkgmtr"><div class="stat-card svelte-dkgmtr"><div class="stat-value svelte-dkgmtr"> </div> <div class="stat-label svelte-dkgmtr">Weeks</div></div> <div class="stat-card svelte-dkgmtr"><div class="stat-value svelte-dkgmtr"> </div> <div class="stat-label svelte-dkgmtr">Hours</div></div> <div class="stat-card svelte-dkgmtr"><div class="stat-value svelte-dkgmtr"> </div> <div class="stat-label svelte-dkgmtr">Workouts</div></div> <div class="stat-card svelte-dkgmtr"><div class="stat-value svelte-dkgmtr"> </div> <div class="stat-label svelte-dkgmtr">Days Left</div></div></div> <button class="settings-btn svelte-dkgmtr"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-dkgmtr"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg> Settings</button> <div class="export-section svelte-dkgmtr"><!> <button class="calendar-export-btn svelte-dkgmtr"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-dkgmtr"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg> <div class="calendar-export-text svelte-dkgmtr"><span class="calendar-export-title svelte-dkgmtr">Export to Calendar</span> <span class="calendar-export-desc svelte-dkgmtr">Download .ics file for Apple, Google, Outlook</span></div></button> <div class="export-workouts svelte-dkgmtr"><div class="export-header svelte-dkgmtr"><h3 class="svelte-dkgmtr">Export Workouts</h3></div> <div class="export-dropdown svelte-dkgmtr"><button class="export-btn svelte-dkgmtr"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-dkgmtr"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg> All Workouts <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></button> <!></div></div> <button class="import-help-link svelte-dkgmtr"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-dkgmtr"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg> How to import to other apps</button></div> <div class="sport-stats svelte-dkgmtr"><div class="sport-stats-header svelte-dkgmtr"><h3 class="svelte-dkgmtr">Filter by Sport</h3> <!></div> <!></div> <div class="filters-section svelte-dkgmtr"><h3 class="svelte-dkgmtr">Filter by Status</h3> <div class="filter-group svelte-dkgmtr"></div></div></aside>');function no(e,s){bs(s,!0);const t=Le(()=>()=>{let M=0,Q=0,fe=0;const te={swim:0,bike:0,run:0,strength:0,brick:0,race:0};return s.plan.weeks.forEach(we=>{we.days.forEach(Ee=>{Ee.workouts.forEach(ke=>{ke.sport!=="rest"&&(M++,s.completed[ke.id]&&Q++,ke.durationMinutes&&(fe+=ke.durationMinutes,te[ke.sport]!==void 0&&(te[ke.sport]+=ke.durationMinutes/60)))})})}),{totalWorkouts:M,completedCount:Q,totalHours:Math.round(fe/60),sportHours:te,progress:M>0?Math.round(Q/M*100):0}}),a=Le(()=>377-A(t)().progress/100*377),i=Le(()=>il(s.plan.meta.eventDate)),n=Le(()=>Object.entries(A(t)().sportHours).filter(([M,Q])=>Q>0).map(([M])=>M));function l(M){s.filters.sport===M?s.onFilterChange({...s.filters,sport:"all"}):s.onFilterChange({...s.filters,sport:M})}function o(M){s.onFilterChange({...s.filters,status:M})}let u=Ce(!1),c=Ce(null);function v(){se(u,!1),se(c,{message:"Exporting calendar...",isError:!1},!0);const M=Vl(s.plan);M.success?se(c,{message:`Downloaded ${M.filename}`,isError:!1},!0):se(c,{message:M.error||"Export failed",isError:!0},!0),setTimeout(()=>{se(c,null)},3e3)}async function y(M){se(u,!1),se(c,{message:`Exporting ${M.toUpperCase()} files...`,isError:!1},!0);const Q=await Yl(s.plan,M,s.settings);Q.errors.length===0?se(c,{message:`Exported ${Q.exported} workouts (${Q.skipped} skipped)`,isError:!1},!0):se(c,{message:`Exported ${Q.exported}, ${Q.errors.length} errors`,isError:!0},!0),setTimeout(()=>{se(c,null)},4e3)}var b=ao();let m;var C=L(b),p=L(C),d=L(p),h=D(p,2),w=L(h),k=D(h,2),x=L(k),_=D(C,2),W=L(_),P=L(W),H=D(L(P),2),z=D(P,2),Z=L(z),ne=L(Z),F=D(_,2),G=L(F),f=L(G),q=L(f),pe=D(G,2),O=L(pe),le=L(O),Y=D(pe,2),ie=L(Y),E=L(ie),I=D(Y,2),$=L(I),X=L($),V=D(F,2);V.__click=function(...M){s.onSettingsClick?.apply(this,M)};var be=D(V,2),ge=L(be);{var ee=M=>{var Q=Xl();let fe;var te=L(Q);Ae(()=>{fe=Pe(Q,1,"export-status svelte-dkgmtr",null,fe,{error:A(c).isError}),de(te,A(c).message)}),re(M,Q)};ve(ge,M=>{A(c)&&M(ee)})}var ae=D(ge,2);ae.__click=v;var me=D(ae,2),ce=D(L(me),2),ye=L(ce);ye.__click=()=>se(u,!A(u));var Te=D(L(ye),2);let r;var N=D(ye,2);{var B=M=>{var Q=Ql(),fe=L(Q);fe.__click=()=>y("zwo");var te=D(fe,2);te.__click=()=>y("fit");var we=D(te,2);we.__click=()=>y("mrc"),re(M,Q)};ve(N,M=>{A(u)&&M(B)})}var T=D(me,2);T.__click=function(...M){s.onImportHelpClick?.apply(this,M)};var g=D(be,2),S=L(g),K=D(L(S),2);{var U=M=>{var Q=$l();Q.__click=()=>s.onFilterChange({...s.filters,sport:"all"}),re(M,Q)};ve(K,M=>{s.filters.sport!=="all"&&M(U)})}var R=D(S,2);He(R,17,()=>A(n),ss,(M,Q)=>{var fe=so();let te;fe.__click=()=>l(A(Q));var we=L(fe),Ee=L(we),ke=D(we,2),Re=L(ke),Se=L(Re),us=D(Re,2),Ss=L(us),Ke=D(ke,2);{var Be=Oe=>{var Qs=eo();re(Oe,Qs)};ve(Ke,Oe=>{s.filters.sport===A(Q)&&Oe(Be)})}Ae((Oe,Qs,Dt)=>{te=Pe(fe,1,`sport-stat ${A(Q)??""}`,"svelte-dkgmtr",te,{active:s.filters.sport===A(Q)}),Pe(we,1,`sport-icon ${A(Q)??""}`,"svelte-dkgmtr"),de(Ee,Oe),de(Se,Qs),de(Ss,`${Dt??""} hours`)},[()=>dn(A(Q)),()=>A(Q).charAt(0).toUpperCase()+A(Q).slice(1),()=>A(t)().sportHours[A(Q)].toFixed(1)]),re(M,fe)});var j=D(g,2),J=D(L(j),2);He(J,20,()=>[["all","All"],["pending","Pending"],["completed","Completed"]],ss,(M,Q)=>{var fe=Le(()=>Ea(Q,2));let te=()=>A(fe)[0],we=()=>A(fe)[1];var Ee=to();let ke;Ee.__click=()=>o(te());var Re=L(Ee);Ae(()=>{ke=Pe(Ee,1,"filter-chip svelte-dkgmtr",null,ke,{active:s.filters.status===te()}),de(Re,we())}),re(M,Ee)}),Ae((M,Q,fe,te)=>{m=Pe(b,1,"sidebar svelte-dkgmtr",null,m,{open:s.open}),de(d,s.plan.meta.event),de(w,M),de(x,s.plan.meta.athlete),ta(H,`stroke-dashoffset: ${A(a)??""}`),de(ne,`${Q??""}%`),de(q,s.plan.meta.totalWeeks),de(le,fe),de(E,te),de(X,A(i)),r=Pe(Te,0,"dropdown-arrow svelte-dkgmtr",null,r,{open:A(u)})},[()=>al(s.plan.meta.eventDate),()=>A(t)().progress,()=>A(t)().totalHours,()=>A(t)().totalWorkouts]),re(e,b),ys()}ks(["click"]);function io(){const e=document.getElementById("plan-data");if(!e)throw new Error("Plan data not found");return JSON.parse(e.textContent||"{}")}const Je=io(),_n=`plan-${Je.meta.id}-completed`;function lo(){const e=localStorage.getItem(_n);return e?JSON.parse(e):{}}function oo(e){localStorage.setItem(_n,JSON.stringify(e))}const kn=`plan-${Je.meta.id}-changes`;function Fa(){return{moved:{},edited:{},deleted:[],added:{}}}function ro(){const e=localStorage.getItem(kn);if(!e)return Fa();try{const s=JSON.parse(e);return{moved:s.moved||{},edited:s.edited||{},deleted:s.deleted||[],added:s.added||{}}}catch{return Fa()}}function Ct(e){localStorage.setItem(kn,JSON.stringify(e))}function uo(){return`user-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function co(e,s){const t=s.edited[e.id];return t?{...e,...t}:e}function _a(e,s){return s.deleted.includes(e)}var mo=ue('<div class="workout-duration svelte-ynjai0"> </div>'),fo=ue('<button draggable="true"><div class="workout-sport svelte-ynjai0"> </div> <div class="workout-name svelte-ynjai0"> </div> <!></button>');function po(e,s){bs(s,!0);let t=Ce(!1);function a(m){se(t,!0),m.dataTransfer.setData("text/plain",s.workout.id),m.dataTransfer.effectAllowed="move"}function i(){se(t,!1)}var n=fo();let l;n.__click=function(...m){s.onClick?.apply(this,m)};var o=L(n),u=L(o),c=D(o,2),v=L(c),y=D(c,2);{var b=m=>{var C=mo(),p=L(C);Ae(d=>de(p,d),[()=>aa(s.workout.durationMinutes)]),re(m,C)};ve(y,m=>{s.workout.durationMinutes&&m(b)})}Ae(()=>{l=Pe(n,1,`workout-card ${s.workout.sport??""}`,"svelte-ynjai0",l,{completed:s.isCompleted,dragging:A(t)}),de(u,s.workout.sport),de(v,s.workout.name)}),_s("dragstart",n,a),_s("dragend",n,i),re(e,n),ys()}ks(["click"]);var ho=ue('<div class="empty-day svelte-ldqnzx">Rest</div>'),bo=ue('<div role="listbox" tabindex="0"><div class="day-header svelte-ldqnzx"><span class="day-name svelte-ldqnzx"> </span> <span class="day-date svelte-ldqnzx"> </span></div> <!> <button class="add-workout-btn svelte-ldqnzx" title="Add workout"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-ldqnzx"><path d="M12 5v14M5 12h14"></path></svg></button></div>'),yo=ue('<div class="week-card svelte-ldqnzx"><div class="week-header svelte-ldqnzx"><div class="week-title svelte-ldqnzx"><span class="week-number svelte-ldqnzx"> </span> <span> </span> <span class="week-focus svelte-ldqnzx"> </span></div> <div class="week-hours svelte-ldqnzx"><span class="svelte-ldqnzx"> </span> hrs</div></div> <div class="days-grid svelte-ldqnzx"></div></div>');function go(e,s){bs(s,!0);let t=Ce(null);const a=Le(()=>s.week.phase.toLowerCase());function i(x,_){x.preventDefault(),se(t,_,!0)}function n(){se(t,null)}function l(x,_){x.preventDefault(),se(t,null);const W=x.dataTransfer?.getData("text/plain");W&&s.onDrop(W,_)}var o=yo(),u=L(o),c=L(u),v=L(c),y=L(v),b=D(v,2),m=L(b),C=D(b,2),p=L(C),d=D(c,2),h=L(d),w=L(h),k=D(u,2);He(k,21,()=>s.fullWeek,x=>x.date,(x,_)=>{const W=Le(()=>A(_).date===s.today),P=Le(()=>A(_).workouts.filter(s.filterWorkout)),H=Le(()=>A(t)===A(_).date);var z=bo();let Z;var ne=L(z),F=L(ne),G=L(F),f=D(F,2),q=L(f),pe=D(ne,2);{var O=ie=>{var E=ha(),I=Ye(E);He(I,17,()=>A(P),$=>$.id,($,X)=>{{let V=Le(()=>!!s.completed[A(X).id]);po($,{get workout(){return A(X)},get day(){return A(_)},get settings(){return s.settings},get isCompleted(){return A(V)},onClick:()=>s.onWorkoutClick(A(X),A(_))})}}),re(ie,E)},le=ie=>{var E=ha(),I=Ye(E);{var $=X=>{var V=ho();re(X,V)};ve(I,X=>{A(_).workouts.length===0&&X($)},!0)}re(ie,E)};ve(pe,ie=>{A(P).length>0?ie(O):ie(le,!1)})}var Y=D(pe,2);Y.__click=()=>s.onAddWorkout(A(_)),Ae((ie,E)=>{Z=Pe(z,1,"day-column svelte-ldqnzx",null,Z,{today:A(W),"drag-over":A(H)}),de(G,ie),de(q,E)},[()=>A(_).dayOfWeek.slice(0,3),()=>pn(A(_).date).getDate()]),_s("dragover",z,ie=>i(ie,A(_).date)),_s("dragleave",z,n),_s("drop",z,ie=>l(ie,A(_).date)),re(x,z)}),Ae(()=>{ta(o,`animation-delay: ${s.animationDelay??""}s`),de(y,`W${s.week.weekNumber??""}`),Pe(b,1,`week-phase ${A(a)??""}`,"svelte-ldqnzx"),de(m,s.week.phase),de(p,s.week.focus),de(w,s.week.targetHours)}),re(e,o),ys()}ks(["click"]);var vo=ue('<button><span class="phase-label svelte-aq400f"> </span></button>'),To=ue("<div><!></div>"),Co=ue('<div class="phase-timeline svelte-aq400f"></div> <div class="weeks-container svelte-aq400f"></div>',1);function wo(e,s){bs(s,!0);const t=ol();function a(y,b){return s.changes.moved[y]||b}function i(y){const b=ll(s.settings.firstDayOfWeek),m=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],C={};y.days.forEach(_=>{C[_.dayOfWeek]=_});const p=y.days[0],d=pn(p.date),h=m.indexOf(p.dayOfWeek);function w(_){let P=m.indexOf(_)-h;P<-3&&(P+=7),P>3&&(P-=7);const H=new Date(d);return H.setDate(H.getDate()+P),fn(H)}const k=b.map(_=>{const W=C[_];return W?W.date:w(_)}),x={};return k.forEach(_=>x[_]=[]),s.plan.weeks.forEach(_=>{_.days.forEach(W=>{W.workouts.forEach(P=>{if(_a(P.id,s.changes))return;const H=a(P.id,W.date);if(k.includes(H)){const z=co(P,s.changes);x[H].push(z)}})})}),Object.entries(s.changes.added).forEach(([_,{date:W,workout:P}])=>{k.includes(W)&&!_a(_,s.changes)&&x[W].push(P)}),b.map((_,W)=>{const P=k[W];return{date:P,dayOfWeek:_,workouts:x[P]||[]}})}function n(y){return!(s.filters.sport!=="all"&&y.sport!==s.filters.sport||s.filters.status==="completed"&&!s.completed[y.id]||s.filters.status==="pending"&&s.completed[y.id])}function l(y){if(s.changes.added[y])return s.changes.added[y].date;for(const b of s.plan.weeks)for(const m of b.days)for(const C of m.workouts)if(C.id===y)return m.date;return""}function o(y,b){const m=l(y);s.onWorkoutMove(y,m,b)}var u=Co(),c=Ye(u);He(c,21,()=>s.plan.phases,ss,(y,b)=>{const m=Le(()=>A(b).endWeek-A(b).startWeek+1),C=Le(()=>A(b).name.toLowerCase());var p=vo();p.__click=()=>{document.querySelector(`[data-week="${A(b).startWeek}"]`)?.scrollIntoView({behavior:"smooth",block:"start"})};var d=L(p),h=L(d);Ae(()=>{Pe(p,1,`phase-segment ${A(C)??""}`,"svelte-aq400f"),ta(p,`flex: ${A(m)??""}`),de(h,A(b).name)}),re(y,p)});var v=D(c,2);He(v,23,()=>s.plan.weeks,y=>y.weekNumber,(y,b,m)=>{var C=To(),p=L(C);{let d=Le(()=>i(A(b))),h=Le(()=>A(m)*.05);go(p,{get week(){return A(b)},get fullWeek(){return A(d)},get settings(){return s.settings},get today(){return t},get completed(){return s.completed},filterWorkout:n,get onWorkoutClick(){return s.onWorkoutClick},onDrop:o,get onAddWorkout(){return s.onAddWorkout},get animationDelay(){return A(h)}})}Ae(()=>Ji(C,"data-week",A(b).weekNumber)),re(y,C)}),re(e,u),ys()}ks(["click"]);var Ao=ue('<div><div> </div> <h2 class="modal-title svelte-12rtkin"> </h2> <div class="modal-date svelte-12rtkin"> </div></div>'),Fo=ue('<div><h2 class="modal-title svelte-12rtkin"> </h2> <div class="modal-date svelte-12rtkin"> </div></div>'),_o=ue('<div class="modal-stat svelte-12rtkin"><div class="modal-stat-value svelte-12rtkin"> </div> <div class="modal-stat-label svelte-12rtkin">Duration</div></div>'),ko=ue('<div class="modal-stat svelte-12rtkin"><div class="modal-stat-value svelte-12rtkin"> </div> <div class="modal-stat-label svelte-12rtkin">Distance</div></div>'),So=ue('<div class="modal-stat svelte-12rtkin"><div class="modal-stat-value svelte-12rtkin"> </div> <div class="modal-stat-label svelte-12rtkin">Target Zone</div></div>'),xo=ue('<div class="modal-section svelte-12rtkin"><h4 class="modal-section-title svelte-12rtkin">Description</h4> <p class="modal-description svelte-12rtkin"> </p></div>'),Eo=ue('<div class="modal-section svelte-12rtkin"><h4 class="modal-section-title svelte-12rtkin">Workout Structure</h4> <pre class="workout-structure svelte-12rtkin"> </pre></div>'),Po=ue('<div class="modal-stats svelte-12rtkin"><!> <!> <!></div> <!> <!>',1),Ro=ue("<option> </option>"),Io=ue("<option> </option>"),Do=ue('<div class="form-grid svelte-12rtkin"><div class="form-row svelte-12rtkin"><label class="form-label svelte-12rtkin" for="edit-sport">Sport</label> <select id="edit-sport" class="form-select svelte-12rtkin"></select></div> <div class="form-row svelte-12rtkin"><label class="form-label svelte-12rtkin" for="edit-type">Type</label> <select id="edit-type" class="form-select svelte-12rtkin"></select></div></div> <div class="form-row full svelte-12rtkin"><label class="form-label svelte-12rtkin" for="edit-name">Name</label> <input id="edit-name" type="text" class="form-input svelte-12rtkin" placeholder="Easy Run"/></div> <div class="form-row full svelte-12rtkin"><label class="form-label svelte-12rtkin" for="edit-description">Description</label> <textarea id="edit-description" class="form-textarea svelte-12rtkin" placeholder="Conversational pace, focus on form" rows="2"></textarea></div> <div class="form-grid svelte-12rtkin"><div class="form-row svelte-12rtkin"><label class="form-label svelte-12rtkin" for="edit-duration">Duration (minutes)</label> <input id="edit-duration" type="number" class="form-input svelte-12rtkin" placeholder="60"/></div> <div class="form-row svelte-12rtkin"><label class="form-label svelte-12rtkin" for="edit-distance">Distance (meters)</label> <input id="edit-distance" type="number" class="form-input svelte-12rtkin" placeholder="10000"/></div></div> <div class="form-row full svelte-12rtkin"><label class="form-label svelte-12rtkin" for="edit-zone">Target Zone</label> <input id="edit-zone" type="text" class="form-input svelte-12rtkin" placeholder="Zone 2"/></div> <div class="form-row full svelte-12rtkin"><label class="form-label svelte-12rtkin" for="edit-structure">Workout Structure</label> <textarea id="edit-structure" class="form-textarea mono svelte-12rtkin" placeholder="Warm-up: 10min easy Main: 4x1km @ threshold Cool-down: 10min easy" rows="5"></textarea></div>',1),Lo=ue('<button class="export-option svelte-12rtkin"><span class="export-icon svelte-12rtkin">Z</span> <div class="export-info svelte-12rtkin"><div class="export-name svelte-12rtkin">Zwift (.zwo)</div> <div class="export-desc svelte-12rtkin">For Zwift indoor training</div></div></button>'),Bo=ue('<button class="export-option svelte-12rtkin"><span class="export-icon svelte-12rtkin">G</span> <div class="export-info svelte-12rtkin"><div class="export-name svelte-12rtkin">Garmin (.fit)</div> <div class="export-desc svelte-12rtkin">For Garmin Connect</div></div></button>'),Mo=ue('<button class="export-option svelte-12rtkin"><span class="export-icon svelte-12rtkin">E</span> <div class="export-info svelte-12rtkin"><div class="export-name svelte-12rtkin">ERG/MRC (.mrc)</div> <div class="export-desc svelte-12rtkin">For TrainerRoad, etc.</div></div></button>'),Oo=ue('<div class="export-menu svelte-12rtkin"><!> <!> <!> <div class="export-divider svelte-12rtkin"></div> <button class="export-help-link svelte-12rtkin"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-12rtkin"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg> How to import files</button></div>'),zo=ue('<div class="export-dropdown svelte-12rtkin"><button class="icon-btn export svelte-12rtkin" title="Export"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-12rtkin"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg></button> <!></div>'),No=ue("<div> </div>"),Wo=ue("<span>↩</span> Mark Incomplete",1),Uo=ue("<span>✓</span> Mark Complete",1),Ho=ue('<div class="footer-left svelte-12rtkin"><button class="icon-btn edit svelte-12rtkin" title="Edit"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-12rtkin"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg></button> <button class="icon-btn delete svelte-12rtkin" title="Delete"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-12rtkin"><path d="M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path></svg></button> <!></div> <div class="footer-right svelte-12rtkin"><!> <button><!></button></div>',1),jo=ue('<button class="cancel-btn svelte-12rtkin">Cancel</button> <button class="save-btn svelte-12rtkin"> </button>',1),Go=ue('<div class="confirm-overlay svelte-12rtkin"><div class="confirm-dialog svelte-12rtkin"><p class="svelte-12rtkin">Delete this workout?</p> <div class="confirm-actions svelte-12rtkin"><button class="cancel-btn svelte-12rtkin">Cancel</button> <button class="delete-btn svelte-12rtkin">Delete</button></div></div></div>'),Zo=ue('<div class="modal-overlay active svelte-12rtkin" role="dialog" aria-modal="true" tabindex="-1"><div class="modal svelte-12rtkin"><div class="modal-header svelte-12rtkin"><!> <button class="modal-close svelte-12rtkin">×</button></div> <div class="modal-body svelte-12rtkin"><!></div> <div class="modal-footer svelte-12rtkin"><!></div> <!></div></div>');function Ko(e,s){bs(s,!0);let t=$i(s,"mode",3,"view"),a=Ce(De(Ve(()=>t()))),i=Ce(!1),n=Ce(!1),l=Ce(null),o=Ce(De(Ve(()=>s.workout?.sport||"run"))),u=Ce(De(Ve(()=>s.workout?.type||"endurance"))),c=Ce(De(Ve(()=>s.workout?.name||""))),v=Ce(De(Ve(()=>s.workout?.description||""))),y=Ce(De(Ve(()=>s.workout?.durationMinutes?.toString()||""))),b=Ce(De(Ve(()=>s.workout?.distanceMeters?.toString()||""))),m=Ce(De(Ve(()=>s.workout?.primaryZone||""))),C=Ce(De(Ve(()=>s.workout?.humanReadable||"")));const p=["swim","bike","run","strength","brick","race","rest"],d=["rest","recovery","endurance","tempo","threshold","intervals","vo2max","sprint","race","brick","technique","openwater","hills","long"];function h(ee){ee.key==="Escape"&&(A(i)?se(i,!1):A(a)!=="view"?(se(a,(s.workout,"view"),!0),s.workout||s.onClose()):s.onClose())}function w(ee){ee.target.classList.contains("modal-overlay")&&s.onClose()}function k(){se(o,s.workout?.sport||"run",!0),se(u,s.workout?.type||"endurance",!0),se(c,s.workout?.name||"",!0),se(v,s.workout?.description||"",!0),se(y,s.workout?.durationMinutes?.toString()||"",!0),se(b,s.workout?.distanceMeters?.toString()||"",!0),se(m,s.workout?.primaryZone||"",!0),se(C,s.workout?.humanReadable||"",!0),se(a,"edit")}function x(){t()==="create"?s.onClose():se(a,"view")}function _(){const ee={sport:A(o),type:A(u),name:A(c),description:A(v),durationMinutes:A(y)?parseInt(A(y)):void 0,distanceMeters:A(b)?parseInt(A(b)):void 0,primaryZone:A(m)||void 0,humanReadable:A(C)||void 0};s.onSave(ee),t()!=="create"&&se(a,"view")}function W(){s.workout&&s.onDelete(s.workout.id)}async function P(ee){if(!s.workout)return;se(n,!1),se(l,{message:"Exporting...",isError:!1},!0);const ae=await ql(s.workout,ee,s.settings);ae.success?se(l,{message:`Downloaded ${ae.filename}`,isError:!1},!0):se(l,{message:ae.error||"Export failed",isError:!0},!0),setTimeout(()=>{se(l,null)},3e3)}const H=Le(()=>s.workout?Kl(s.workout.sport):[]),z=Le(()=>A(H).length>0),Z=Le(()=>s.workout||{id:"",sport:A(o),type:A(u),name:A(c),description:A(v),durationMinutes:A(y)?parseInt(A(y)):void 0,distanceMeters:A(b)?parseInt(A(b)):void 0,primaryZone:A(m),humanReadable:A(C),completed:!1});var ne=Zo();_s("keydown",rt,h),ne.__click=w,ne.__keydown=h;var F=L(ne),G=L(F),f=L(G);{var q=ee=>{var ae=Ao(),me=L(ae),ce=L(me),ye=D(me,2),Te=L(ye),r=D(ye,2),N=L(r);Ae((B,T)=>{Pe(me,1,`modal-sport-badge ${A(Z).sport??""}`,"svelte-12rtkin"),de(ce,B),de(Te,A(Z).name),de(N,T)},[()=>A(Z).sport.toUpperCase(),()=>Ta(s.day.date)]),re(ee,ae)},pe=ee=>{var ae=Fo(),me=L(ae),ce=L(me),ye=D(me,2),Te=L(ye);Ae(r=>{de(ce,A(a)==="create"?"New Workout":"Edit Workout"),de(Te,r)},[()=>Ta(s.day.date)]),re(ee,ae)};ve(f,ee=>{A(a)==="view"?ee(q):ee(pe,!1)})}var O=D(f,2);O.__click=function(...ee){s.onClose?.apply(this,ee)};var le=D(G,2),Y=L(le);{var ie=ee=>{var ae=Po(),me=Ye(ae),ce=L(me);{var ye=U=>{var R=_o(),j=L(R),J=L(j);Ae(M=>de(J,M),[()=>aa(A(Z).durationMinutes)]),re(U,R)};ve(ce,U=>{A(Z).durationMinutes&&U(ye)})}var Te=D(ce,2);{var r=U=>{var R=ko(),j=L(R),J=L(j);Ae(M=>de(J,M),[()=>tl(A(Z).distanceMeters,A(Z).sport,s.settings)]),re(U,R)};ve(Te,U=>{A(Z).distanceMeters&&U(r)})}var N=D(Te,2);{var B=U=>{var R=So(),j=L(R),J=L(j);Ae(M=>de(J,M),[()=>nl(A(Z).sport,A(Z).primaryZone,s.settings)]),re(U,R)};ve(N,U=>{A(Z).primaryZone&&U(B)})}var T=D(me,2);{var g=U=>{var R=xo(),j=D(L(R),2),J=L(j);Ae(()=>de(J,A(Z).description)),re(U,R)};ve(T,U=>{A(Z).description&&U(g)})}var S=D(T,2);{var K=U=>{var R=Eo(),j=D(L(R),2),J=L(j);Ae(M=>de(J,M),[()=>A(Z).humanReadable.replace(/\\n/g,`
38
- `)]),re(U,R)};ve(S,U=>{A(Z).humanReadable&&U(K)})}re(ee,ae)},E=ee=>{var ae=Do(),me=Ye(ae),ce=L(me),ye=D(L(ce),2);He(ye,21,()=>p,ss,(te,we)=>{var Ee=Ro(),ke=L(Ee),Re={};Ae(Se=>{de(ke,Se),Re!==(Re=A(we))&&(Ee.value=(Ee.__value=A(we))??"")},[()=>A(we).charAt(0).toUpperCase()+A(we).slice(1)]),re(te,Ee)});var Te=D(ce,2),r=D(L(Te),2);He(r,21,()=>d,ss,(te,we)=>{var Ee=Io(),ke=L(Ee),Re={};Ae(Se=>{de(ke,Se),Re!==(Re=A(we))&&(Ee.value=(Ee.__value=A(we))??"")},[()=>A(we).charAt(0).toUpperCase()+A(we).slice(1)]),re(te,Ee)});var N=D(me,2),B=D(L(N),2),T=D(N,2),g=D(L(T),2),S=D(T,2),K=L(S),U=D(L(K),2),R=D(K,2),j=D(L(R),2),J=D(S,2),M=D(L(J),2),Q=D(J,2),fe=D(L(Q),2);Ns(ye,()=>A(o),te=>se(o,te)),Ns(r,()=>A(u),te=>se(u,te)),Ie(B,()=>A(c),te=>se(c,te)),Ie(g,()=>A(v),te=>se(v,te)),Ie(U,()=>A(y),te=>se(y,te)),Ie(j,()=>A(b),te=>se(b,te)),Ie(M,()=>A(m),te=>se(m,te)),Ie(fe,()=>A(C),te=>se(C,te)),re(ee,ae)};ve(Y,ee=>{A(a)==="view"?ee(ie):ee(E,!1)})}var I=D(le,2),$=L(I);{var X=ee=>{var ae=Ho(),me=Ye(ae),ce=L(me);ce.__click=k;var ye=D(ce,2);ye.__click=()=>se(i,!0);var Te=D(ye,2);{var r=j=>{var J=zo(),M=L(J);M.__click=()=>se(n,!A(n));var Q=D(M,2);{var fe=te=>{var we=Oo(),Ee=L(we);{var ke=Be=>{var Oe=Lo();Oe.__click=()=>P("zwo"),re(Be,Oe)};ve(Ee,Be=>{Js(A(Z).sport)&&Be(ke)})}var Re=D(Ee,2);{var Se=Be=>{var Oe=Bo();Oe.__click=()=>P("fit"),re(Be,Oe)};ve(Re,Be=>{Ys(A(Z).sport)&&Be(Se)})}var us=D(Re,2);{var Ss=Be=>{var Oe=Mo();Oe.__click=()=>P("mrc"),re(Be,Oe)};ve(us,Be=>{Xs(A(Z).sport)&&Be(Ss)})}var Ke=D(us,4);Ke.__click=function(...Be){s.onImportHelpClick?.apply(this,Be)},re(te,we)};ve(Q,te=>{A(n)&&te(fe)})}re(j,J)};ve(Te,j=>{A(z)&&j(r)})}var N=D(me,2),B=L(N);{var T=j=>{var J=No();let M;var Q=L(J);Ae(()=>{M=Pe(J,1,"export-status svelte-12rtkin",null,M,{error:A(l).isError}),de(Q,A(l).message)}),re(j,J)};ve(B,j=>{A(l)&&j(T)})}var g=D(B,2);let S;g.__click=()=>s.onToggleComplete(A(Z).id);var K=L(g);{var U=j=>{var J=Wo();re(j,J)},R=j=>{var J=Uo();re(j,J)};ve(K,j=>{A(Z).completed?j(U):j(R,!1)})}Ae(()=>S=Pe(g,1,"complete-btn svelte-12rtkin",null,S,{mark:!A(Z).completed,unmark:A(Z).completed})),re(ee,ae)},V=ee=>{var ae=jo(),me=Ye(ae);me.__click=x;var ce=D(me,2);ce.__click=_;var ye=L(ce);Ae(()=>{ce.disabled=!A(c),de(ye,A(a)==="create"?"Add Workout":"Save Changes")}),re(ee,ae)};ve($,ee=>{A(a)==="view"?ee(X):ee(V,!1)})}var be=D(I,2);{var ge=ee=>{var ae=Go(),me=L(ae),ce=D(L(me),2),ye=L(ce);ye.__click=()=>se(i,!1);var Te=D(ye,2);Te.__click=W,re(ee,ae)};ve(be,ee=>{A(i)&&ee(ge)})}re(e,ne),ys()}ks(["click","keydown"]);const qo={theme:"dark",units:{swim:"meters",bike:"kilometers",run:"kilometers"},firstDayOfWeek:"monday",run:{lthr:165,hrZones:[{zone:1,name:"Recovery",low:0,high:134},{zone:2,name:"Aerobic",low:134,high:147},{zone:3,name:"Tempo",low:147,high:156},{zone:4,name:"Threshold",low:156,high:165},{zone:5,name:"VO2max",low:165,high:180}],thresholdPace:"4:30",paceZones:[{zone:"E",name:"Easy",pace:"5:20"},{zone:"M",name:"Marathon",pace:"4:50"},{zone:"T",name:"Threshold",pace:"4:30"},{zone:"I",name:"Interval",pace:"4:00"},{zone:"R",name:"Repetition",pace:"3:40"}]},bike:{lthr:160,hrZones:[{zone:1,name:"Recovery",low:0,high:130},{zone:2,name:"Aerobic",low:130,high:142},{zone:3,name:"Tempo",low:142,high:151},{zone:4,name:"Threshold",low:151,high:160},{zone:5,name:"VO2max",low:160,high:175}],ftp:200,powerZones:[{zone:1,name:"Active Recovery",low:0,high:110},{zone:2,name:"Endurance",low:110,high:150},{zone:3,name:"Tempo",low:150,high:180},{zone:4,name:"Threshold",low:180,high:210},{zone:5,name:"VO2max",low:210,high:240}]},swim:{css:"1:50",cssSeconds:110,paceZones:[{zone:1,name:"Recovery",offset:20,pace:"2:10"},{zone:2,name:"Aerobic",offset:10,pace:"2:00"},{zone:3,name:"Tempo",offset:5,pace:"1:55"},{zone:4,name:"Threshold",offset:0,pace:"1:50"},{zone:5,name:"VO2max",offset:-5,pace:"1:45"}]}},Sn=`plan-${Je.meta.id}-settings`;function Vo(){const e=JSON.parse(JSON.stringify(qo));Je.preferences&&(e.units.swim=Je.preferences.swim||e.units.swim,e.units.bike=Je.preferences.bike||e.units.bike,e.units.run=Je.preferences.run||e.units.run,e.firstDayOfWeek=Je.preferences.firstDayOfWeek||e.firstDayOfWeek);const s=Je.zones;s?.run?.hr&&(e.run.lthr=s.run.hr.lthr,e.run.hrZones=s.run.hr.zones.map(a=>({zone:a.zone,name:a.name,low:a.hrLow,high:a.hrHigh}))),s?.run?.pace&&(e.run.thresholdPace=s.run.pace.thresholdPace||e.run.thresholdPace,s.run.pace.zones&&(e.run.paceZones=s.run.pace.zones.map(a=>({zone:a.zone,name:a.name,pace:a.pace})))),s?.bike?.hr&&(e.bike.lthr=s.bike.hr.lthr,e.bike.hrZones=s.bike.hr.zones.map(a=>({zone:a.zone,name:a.name,low:a.hrLow,high:a.hrHigh}))),s?.bike?.power&&(e.bike.ftp=s.bike.power.ftp,e.bike.powerZones=s.bike.power.zones.map(a=>({zone:a.zone,name:a.name,low:a.wattsLow,high:a.wattsHigh}))),s?.swim&&(e.swim.css=s.swim.css||e.swim.css,e.swim.cssSeconds=s.swim.cssSeconds||e.swim.cssSeconds,s.swim.zones&&(e.swim.paceZones=s.swim.zones.map(a=>({zone:a.zone,name:a.name,offset:a.paceOffset,pace:a.pace}))));const t=localStorage.getItem(Sn);if(t){const a=JSON.parse(t);a.theme&&(e.theme=a.theme),a.units&&(e.units={...e.units,...a.units}),a.firstDayOfWeek&&(e.firstDayOfWeek=a.firstDayOfWeek),a.run&&(e.run={...e.run,...a.run}),a.bike&&(e.bike={...e.bike,...a.bike}),a.swim&&(e.swim={...e.swim,...a.swim})}return e}function Jo(e){localStorage.setItem(Sn,JSON.stringify(e))}function xn(e){const s=e.split(":");return parseInt(s[0])*60+parseInt(s[1]||"0")}function En(e){const s=Math.floor(e/60),t=Math.round(e%60);return`${s}:${t.toString().padStart(2,"0")}`}function Yo(e){return[{zone:1,name:"Recovery",lowPct:0,highPct:81},{zone:2,name:"Aerobic",lowPct:81,highPct:89},{zone:3,name:"Tempo",lowPct:89,highPct:94},{zone:4,name:"Threshold",lowPct:94,highPct:100},{zone:5,name:"VO2max",lowPct:100,highPct:106}].map(t=>({zone:t.zone,name:t.name,low:Math.round(e*t.lowPct/100),high:Math.round(e*t.highPct/100)}))}function Xo(e){return[{zone:1,name:"Active Recovery",lowPct:0,highPct:55},{zone:2,name:"Endurance",lowPct:55,highPct:75},{zone:3,name:"Tempo",lowPct:75,highPct:90},{zone:4,name:"Threshold",lowPct:90,highPct:105},{zone:5,name:"VO2max",lowPct:105,highPct:120}].map(t=>({zone:t.zone,name:t.name,low:Math.round(e*t.lowPct/100),high:Math.round(e*t.highPct/100)}))}function Qo(e){const s=xn(e);return[{zone:"E",name:"Easy",factor:1.18},{zone:"M",name:"Marathon",factor:1.07},{zone:"T",name:"Threshold",factor:1},{zone:"I",name:"Interval",factor:.89},{zone:"R",name:"Repetition",factor:.82}].map(a=>({zone:a.zone,name:a.name,pace:En(Math.round(s*a.factor))}))}function $o(e){const s=xn(e);return[{zone:1,name:"Recovery",offset:20},{zone:2,name:"Aerobic",offset:10},{zone:3,name:"Tempo",offset:5},{zone:4,name:"Threshold",offset:0},{zone:5,name:"VO2max",offset:-5}].map(a=>({zone:a.zone,name:a.name,offset:a.offset,pace:En(s+a.offset)}))}const er="0.0.1";var sr=ue("<button> </button>"),tr=ue('<div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Appearance</h4> <div class="theme-toggle svelte-1uhipit"><button><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-1uhipit"><circle cx="12" cy="12" r="5"></circle><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"></path></svg> Light</button> <button><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-1uhipit"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg> Dark</button></div></div> <div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Distance Units</h4> <div class="settings-row svelte-1uhipit"><span class="settings-label svelte-1uhipit">Swim</span> <select class="settings-select svelte-1uhipit"><option>Meters</option><option>Yards</option></select></div> <div class="settings-row svelte-1uhipit"><span class="settings-label svelte-1uhipit">Bike</span> <select class="settings-select svelte-1uhipit"><option>Kilometers</option><option>Miles</option></select></div> <div class="settings-row svelte-1uhipit"><span class="settings-label svelte-1uhipit">Run</span> <select class="settings-select svelte-1uhipit"><option>Kilometers</option><option>Miles</option></select></div></div> <div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Calendar</h4> <div class="settings-row svelte-1uhipit"><span class="settings-label svelte-1uhipit">First day of week</span> <select class="settings-select svelte-1uhipit"><option>Monday</option><option>Sunday</option></select></div></div>',1),ar=ue('<div class="zone-row svelte-1uhipit"><span> </span> <span class="zone-name svelte-1uhipit"> </span> <input type="number" class="zone-input svelte-1uhipit"/> <input type="number" class="zone-input svelte-1uhipit"/></div>'),nr=ue('<div class="zone-row svelte-1uhipit"><span> </span> <span class="zone-name svelte-1uhipit"> </span> <input type="text" class="pace-input svelte-1uhipit"/></div>'),ir=ue('<div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Heart Rate Zones</h4> <div class="threshold-row svelte-1uhipit"><span class="threshold-label svelte-1uhipit">Run LTHR</span> <input type="number" class="threshold-input svelte-1uhipit" min="100" max="220"/> <button class="recalc-btn svelte-1uhipit">Recalculate</button></div> <div class="zones-grid svelte-1uhipit"><div class="zone-row header svelte-1uhipit"><span>Zone</span><span>Name</span><span>Low</span><span>High</span></div> <!></div> <details class="help-details svelte-1uhipit"><summary class="svelte-1uhipit">How to find your LTHR</summary> <div class="help-content svelte-1uhipit"><p class="svelte-1uhipit"><strong>30-Minute Test:</strong></p> <ol class="svelte-1uhipit"><li class="svelte-1uhipit">Warm up for 15 minutes</li> <li class="svelte-1uhipit">Run as hard as you can sustain for 30 minutes</li> <li class="svelte-1uhipit">Your average HR for the last 20 minutes is your LTHR</li></ol></div></details></div> <div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Pace Zones</h4> <div class="threshold-row svelte-1uhipit"><span class="threshold-label svelte-1uhipit">Threshold Pace</span> <input type="text" class="threshold-input svelte-1uhipit" placeholder="4:30"/> <button class="recalc-btn svelte-1uhipit">Recalculate</button></div> <div class="zones-grid svelte-1uhipit"><div class="zone-row header svelte-1uhipit"><span>Zone</span><span>Name</span><span colspan="2">Pace/km</span></div> <!></div> <details class="help-details svelte-1uhipit"><summary class="svelte-1uhipit">How to find your Threshold Pace</summary> <div class="help-content svelte-1uhipit"><p class="svelte-1uhipit"><strong>Option 1: Race-Based</strong></p> <ul class="svelte-1uhipit"><li class="svelte-1uhipit">Recent 5K race pace + 15-20 sec/km</li> <li class="svelte-1uhipit">Recent 10K race pace + 5-10 sec/km</li></ul> <p class="svelte-1uhipit"><strong>Option 2: 30-Minute Test</strong></p> <p class="svelte-1uhipit">Run 30 minutes at max sustainable effort. Average pace = threshold.</p></div></details></div>',1),lr=ue('<div class="zone-row svelte-1uhipit"><span> </span> <span class="zone-name svelte-1uhipit"> </span> <input type="number" class="zone-input svelte-1uhipit"/> <input type="number" class="zone-input svelte-1uhipit"/></div>'),or=ue('<div class="zone-row svelte-1uhipit"><span> </span> <span class="zone-name svelte-1uhipit"> </span> <input type="number" class="zone-input svelte-1uhipit"/> <input type="number" class="zone-input svelte-1uhipit"/></div>'),rr=ue('<div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Heart Rate Zones</h4> <div class="threshold-row svelte-1uhipit"><span class="threshold-label svelte-1uhipit">Bike LTHR</span> <input type="number" class="threshold-input svelte-1uhipit" min="100" max="220"/> <button class="recalc-btn svelte-1uhipit">Recalculate</button></div> <div class="zones-grid svelte-1uhipit"><div class="zone-row header svelte-1uhipit"><span>Zone</span><span>Name</span><span>Low</span><span>High</span></div> <!></div> <details class="help-details svelte-1uhipit"><summary class="svelte-1uhipit">How to find your LTHR</summary> <div class="help-content svelte-1uhipit"><p class="svelte-1uhipit"><strong>30-Minute Test:</strong></p> <ol class="svelte-1uhipit"><li class="svelte-1uhipit">Warm up for 15 minutes</li> <li class="svelte-1uhipit">Bike as hard as you can sustain for 30 minutes</li> <li class="svelte-1uhipit">Your average HR for the last 20 minutes is your LTHR</li></ol> <p class="help-note svelte-1uhipit">Bike LTHR is typically 5-10 bpm lower than run.</p></div></details></div> <div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Power Zones</h4> <div class="threshold-row svelte-1uhipit"><span class="threshold-label svelte-1uhipit">FTP (watts)</span> <input type="number" class="threshold-input svelte-1uhipit" min="50" max="500"/> <button class="recalc-btn svelte-1uhipit">Recalculate</button></div> <div class="zones-grid svelte-1uhipit"><div class="zone-row header svelte-1uhipit"><span>Zone</span><span>Name</span><span>Low W</span><span>High W</span></div> <!></div> <details class="help-details svelte-1uhipit"><summary class="svelte-1uhipit">How to find your FTP</summary> <div class="help-content svelte-1uhipit"><p class="svelte-1uhipit"><strong>20-Minute Test:</strong></p> <ol class="svelte-1uhipit"><li class="svelte-1uhipit">Warm up for 20 minutes including a few hard efforts</li> <li class="svelte-1uhipit">Ride as hard as you can sustain for 20 minutes</li> <li class="svelte-1uhipit">FTP = Average power × 0.95</li></ol> <p class="svelte-1uhipit"><strong>Ramp Test:</strong> Most trainer apps (Zwift, TrainerRoad) have built-in FTP tests.</p></div></details></div>',1),ur=ue('<div class="zone-row svelte-1uhipit"><span> </span> <span class="zone-name svelte-1uhipit"> </span> <span class="zone-name svelte-1uhipit"> </span> <input type="text" class="pace-input svelte-1uhipit"/></div>'),cr=ue('<div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Pace Zones</h4> <div class="threshold-row svelte-1uhipit"><span class="threshold-label svelte-1uhipit">CSS (per 100m)</span> <input type="text" class="threshold-input svelte-1uhipit" placeholder="1:45"/> <button class="recalc-btn svelte-1uhipit">Recalculate</button></div> <div class="zones-grid svelte-1uhipit"><div class="zone-row header svelte-1uhipit"><span>Zone</span><span>Name</span><span>Offset</span><span>Pace/100</span></div> <!></div> <details class="help-details svelte-1uhipit"><summary class="svelte-1uhipit">How to find your CSS</summary> <div class="help-content svelte-1uhipit"><p class="svelte-1uhipit"><strong>CSS Test (Critical Swim Speed):</strong></p> <ol class="svelte-1uhipit"><li class="svelte-1uhipit">Warm up for 10 minutes</li> <li class="svelte-1uhipit">Swim 400m all-out, record time (T400)</li> <li class="svelte-1uhipit">Rest 5-10 minutes</li> <li class="svelte-1uhipit">Swim 200m all-out, record time (T200)</li> <li class="svelte-1uhipit">CSS = (T400 - T200) ÷ 2 = pace per 100m</li></ol> <p class="svelte-1uhipit"><strong>Example:</strong> 400m in 6:40 (400s), 200m in 3:00 (180s)<br/> CSS = (400 - 180) ÷ 2 = 110 sec/100m = 1:50/100m</p></div></details></div>'),mr=ue("<div> </div>"),fr=ue(`<div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Your Data</h4> <div class="data-explainer svelte-1uhipit"><p class="svelte-1uhipit">Your training data is stored <strong>only on this device</strong>, in your browser's
38
+ `)]),re(U,R)};ve(S,U=>{A(Z).humanReadable&&U(K)})}re(ee,ae)},E=ee=>{var ae=Do(),me=Ye(ae),ce=L(me),ye=D(L(ce),2);He(ye,21,()=>p,ss,(te,we)=>{var Ee=Ro(),ke=L(Ee),Re={};Ae(Se=>{de(ke,Se),Re!==(Re=A(we))&&(Ee.value=(Ee.__value=A(we))??"")},[()=>A(we).charAt(0).toUpperCase()+A(we).slice(1)]),re(te,Ee)});var Te=D(ce,2),r=D(L(Te),2);He(r,21,()=>d,ss,(te,we)=>{var Ee=Io(),ke=L(Ee),Re={};Ae(Se=>{de(ke,Se),Re!==(Re=A(we))&&(Ee.value=(Ee.__value=A(we))??"")},[()=>A(we).charAt(0).toUpperCase()+A(we).slice(1)]),re(te,Ee)});var N=D(me,2),B=D(L(N),2),T=D(N,2),g=D(L(T),2),S=D(T,2),K=L(S),U=D(L(K),2),R=D(K,2),j=D(L(R),2),J=D(S,2),M=D(L(J),2),Q=D(J,2),fe=D(L(Q),2);Ns(ye,()=>A(o),te=>se(o,te)),Ns(r,()=>A(u),te=>se(u,te)),Ie(B,()=>A(c),te=>se(c,te)),Ie(g,()=>A(v),te=>se(v,te)),Ie(U,()=>A(y),te=>se(y,te)),Ie(j,()=>A(b),te=>se(b,te)),Ie(M,()=>A(m),te=>se(m,te)),Ie(fe,()=>A(C),te=>se(C,te)),re(ee,ae)};ve(Y,ee=>{A(a)==="view"?ee(ie):ee(E,!1)})}var I=D(le,2),$=L(I);{var X=ee=>{var ae=Ho(),me=Ye(ae),ce=L(me);ce.__click=k;var ye=D(ce,2);ye.__click=()=>se(i,!0);var Te=D(ye,2);{var r=j=>{var J=zo(),M=L(J);M.__click=()=>se(n,!A(n));var Q=D(M,2);{var fe=te=>{var we=Oo(),Ee=L(we);{var ke=Be=>{var Oe=Lo();Oe.__click=()=>P("zwo"),re(Be,Oe)};ve(Ee,Be=>{Js(A(Z).sport)&&Be(ke)})}var Re=D(Ee,2);{var Se=Be=>{var Oe=Bo();Oe.__click=()=>P("fit"),re(Be,Oe)};ve(Re,Be=>{Ys(A(Z).sport)&&Be(Se)})}var us=D(Re,2);{var Ss=Be=>{var Oe=Mo();Oe.__click=()=>P("mrc"),re(Be,Oe)};ve(us,Be=>{Xs(A(Z).sport)&&Be(Ss)})}var Ke=D(us,4);Ke.__click=function(...Be){s.onImportHelpClick?.apply(this,Be)},re(te,we)};ve(Q,te=>{A(n)&&te(fe)})}re(j,J)};ve(Te,j=>{A(z)&&j(r)})}var N=D(me,2),B=L(N);{var T=j=>{var J=No();let M;var Q=L(J);Ae(()=>{M=Pe(J,1,"export-status svelte-12rtkin",null,M,{error:A(l).isError}),de(Q,A(l).message)}),re(j,J)};ve(B,j=>{A(l)&&j(T)})}var g=D(B,2);let S;g.__click=()=>s.onToggleComplete(A(Z).id);var K=L(g);{var U=j=>{var J=Wo();re(j,J)},R=j=>{var J=Uo();re(j,J)};ve(K,j=>{A(Z).completed?j(U):j(R,!1)})}Ae(()=>S=Pe(g,1,"complete-btn svelte-12rtkin",null,S,{mark:!A(Z).completed,unmark:A(Z).completed})),re(ee,ae)},V=ee=>{var ae=jo(),me=Ye(ae);me.__click=x;var ce=D(me,2);ce.__click=_;var ye=L(ce);Ae(()=>{ce.disabled=!A(c),de(ye,A(a)==="create"?"Add Workout":"Save Changes")}),re(ee,ae)};ve($,ee=>{A(a)==="view"?ee(X):ee(V,!1)})}var be=D(I,2);{var ge=ee=>{var ae=Go(),me=L(ae),ce=D(L(me),2),ye=L(ce);ye.__click=()=>se(i,!1);var Te=D(ye,2);Te.__click=W,re(ee,ae)};ve(be,ee=>{A(i)&&ee(ge)})}re(e,ne),ys()}ks(["click","keydown"]);const qo={theme:"dark",units:{swim:"meters",bike:"kilometers",run:"kilometers"},firstDayOfWeek:"monday",run:{lthr:165,hrZones:[{zone:1,name:"Recovery",low:0,high:134},{zone:2,name:"Aerobic",low:134,high:147},{zone:3,name:"Tempo",low:147,high:156},{zone:4,name:"Threshold",low:156,high:165},{zone:5,name:"VO2max",low:165,high:180}],thresholdPace:"4:30",paceZones:[{zone:"E",name:"Easy",pace:"5:20"},{zone:"M",name:"Marathon",pace:"4:50"},{zone:"T",name:"Threshold",pace:"4:30"},{zone:"I",name:"Interval",pace:"4:00"},{zone:"R",name:"Repetition",pace:"3:40"}]},bike:{lthr:160,hrZones:[{zone:1,name:"Recovery",low:0,high:130},{zone:2,name:"Aerobic",low:130,high:142},{zone:3,name:"Tempo",low:142,high:151},{zone:4,name:"Threshold",low:151,high:160},{zone:5,name:"VO2max",low:160,high:175}],ftp:200,powerZones:[{zone:1,name:"Active Recovery",low:0,high:110},{zone:2,name:"Endurance",low:110,high:150},{zone:3,name:"Tempo",low:150,high:180},{zone:4,name:"Threshold",low:180,high:210},{zone:5,name:"VO2max",low:210,high:240}]},swim:{css:"1:50",cssSeconds:110,paceZones:[{zone:1,name:"Recovery",offset:20,pace:"2:10"},{zone:2,name:"Aerobic",offset:10,pace:"2:00"},{zone:3,name:"Tempo",offset:5,pace:"1:55"},{zone:4,name:"Threshold",offset:0,pace:"1:50"},{zone:5,name:"VO2max",offset:-5,pace:"1:45"}]}},Sn=`plan-${Je.meta.id}-settings`;function Vo(){const e=JSON.parse(JSON.stringify(qo));Je.preferences&&(e.units.swim=Je.preferences.swim||e.units.swim,e.units.bike=Je.preferences.bike||e.units.bike,e.units.run=Je.preferences.run||e.units.run,e.firstDayOfWeek=Je.preferences.firstDayOfWeek||e.firstDayOfWeek);const s=Je.zones;s?.run?.hr&&(e.run.lthr=s.run.hr.lthr,e.run.hrZones=s.run.hr.zones.map(a=>({zone:a.zone,name:a.name,low:a.hrLow,high:a.hrHigh}))),s?.run?.pace&&(e.run.thresholdPace=s.run.pace.thresholdPace||e.run.thresholdPace,s.run.pace.zones&&(e.run.paceZones=s.run.pace.zones.map(a=>({zone:a.zone,name:a.name,pace:a.pace})))),s?.bike?.hr&&(e.bike.lthr=s.bike.hr.lthr,e.bike.hrZones=s.bike.hr.zones.map(a=>({zone:a.zone,name:a.name,low:a.hrLow,high:a.hrHigh}))),s?.bike?.power&&(e.bike.ftp=s.bike.power.ftp,e.bike.powerZones=s.bike.power.zones.map(a=>({zone:a.zone,name:a.name,low:a.wattsLow,high:a.wattsHigh}))),s?.swim&&(e.swim.css=s.swim.css||e.swim.css,e.swim.cssSeconds=s.swim.cssSeconds||e.swim.cssSeconds,s.swim.zones&&(e.swim.paceZones=s.swim.zones.map(a=>({zone:a.zone,name:a.name,offset:a.paceOffset,pace:a.pace}))));const t=localStorage.getItem(Sn);if(t){const a=JSON.parse(t);a.theme&&(e.theme=a.theme),a.units&&(e.units={...e.units,...a.units}),a.firstDayOfWeek&&(e.firstDayOfWeek=a.firstDayOfWeek),a.run&&(e.run={...e.run,...a.run}),a.bike&&(e.bike={...e.bike,...a.bike}),a.swim&&(e.swim={...e.swim,...a.swim})}return e}function Jo(e){localStorage.setItem(Sn,JSON.stringify(e))}function xn(e){const s=e.split(":");return parseInt(s[0])*60+parseInt(s[1]||"0")}function En(e){const s=Math.floor(e/60),t=Math.round(e%60);return`${s}:${t.toString().padStart(2,"0")}`}function Yo(e){return[{zone:1,name:"Recovery",lowPct:0,highPct:81},{zone:2,name:"Aerobic",lowPct:81,highPct:89},{zone:3,name:"Tempo",lowPct:89,highPct:94},{zone:4,name:"Threshold",lowPct:94,highPct:100},{zone:5,name:"VO2max",lowPct:100,highPct:106}].map(t=>({zone:t.zone,name:t.name,low:Math.round(e*t.lowPct/100),high:Math.round(e*t.highPct/100)}))}function Xo(e){return[{zone:1,name:"Active Recovery",lowPct:0,highPct:55},{zone:2,name:"Endurance",lowPct:55,highPct:75},{zone:3,name:"Tempo",lowPct:75,highPct:90},{zone:4,name:"Threshold",lowPct:90,highPct:105},{zone:5,name:"VO2max",lowPct:105,highPct:120}].map(t=>({zone:t.zone,name:t.name,low:Math.round(e*t.lowPct/100),high:Math.round(e*t.highPct/100)}))}function Qo(e){const s=xn(e);return[{zone:"E",name:"Easy",factor:1.18},{zone:"M",name:"Marathon",factor:1.07},{zone:"T",name:"Threshold",factor:1},{zone:"I",name:"Interval",factor:.89},{zone:"R",name:"Repetition",factor:.82}].map(a=>({zone:a.zone,name:a.name,pace:En(Math.round(s*a.factor))}))}function $o(e){const s=xn(e);return[{zone:1,name:"Recovery",offset:20},{zone:2,name:"Aerobic",offset:10},{zone:3,name:"Tempo",offset:5},{zone:4,name:"Threshold",offset:0},{zone:5,name:"VO2max",offset:-5}].map(a=>({zone:a.zone,name:a.name,offset:a.offset,pace:En(s+a.offset)}))}const er="0.0.2";var sr=ue("<button> </button>"),tr=ue('<div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Appearance</h4> <div class="theme-toggle svelte-1uhipit"><button><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-1uhipit"><circle cx="12" cy="12" r="5"></circle><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"></path></svg> Light</button> <button><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-1uhipit"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg> Dark</button></div></div> <div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Distance Units</h4> <div class="settings-row svelte-1uhipit"><span class="settings-label svelte-1uhipit">Swim</span> <select class="settings-select svelte-1uhipit"><option>Meters</option><option>Yards</option></select></div> <div class="settings-row svelte-1uhipit"><span class="settings-label svelte-1uhipit">Bike</span> <select class="settings-select svelte-1uhipit"><option>Kilometers</option><option>Miles</option></select></div> <div class="settings-row svelte-1uhipit"><span class="settings-label svelte-1uhipit">Run</span> <select class="settings-select svelte-1uhipit"><option>Kilometers</option><option>Miles</option></select></div></div> <div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Calendar</h4> <div class="settings-row svelte-1uhipit"><span class="settings-label svelte-1uhipit">First day of week</span> <select class="settings-select svelte-1uhipit"><option>Monday</option><option>Sunday</option></select></div></div>',1),ar=ue('<div class="zone-row svelte-1uhipit"><span> </span> <span class="zone-name svelte-1uhipit"> </span> <input type="number" class="zone-input svelte-1uhipit"/> <input type="number" class="zone-input svelte-1uhipit"/></div>'),nr=ue('<div class="zone-row svelte-1uhipit"><span> </span> <span class="zone-name svelte-1uhipit"> </span> <input type="text" class="pace-input svelte-1uhipit"/></div>'),ir=ue('<div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Heart Rate Zones</h4> <div class="threshold-row svelte-1uhipit"><span class="threshold-label svelte-1uhipit">Run LTHR</span> <input type="number" class="threshold-input svelte-1uhipit" min="100" max="220"/> <button class="recalc-btn svelte-1uhipit">Recalculate</button></div> <div class="zones-grid svelte-1uhipit"><div class="zone-row header svelte-1uhipit"><span>Zone</span><span>Name</span><span>Low</span><span>High</span></div> <!></div> <details class="help-details svelte-1uhipit"><summary class="svelte-1uhipit">How to find your LTHR</summary> <div class="help-content svelte-1uhipit"><p class="svelte-1uhipit"><strong>30-Minute Test:</strong></p> <ol class="svelte-1uhipit"><li class="svelte-1uhipit">Warm up for 15 minutes</li> <li class="svelte-1uhipit">Run as hard as you can sustain for 30 minutes</li> <li class="svelte-1uhipit">Your average HR for the last 20 minutes is your LTHR</li></ol></div></details></div> <div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Pace Zones</h4> <div class="threshold-row svelte-1uhipit"><span class="threshold-label svelte-1uhipit">Threshold Pace</span> <input type="text" class="threshold-input svelte-1uhipit" placeholder="4:30"/> <button class="recalc-btn svelte-1uhipit">Recalculate</button></div> <div class="zones-grid svelte-1uhipit"><div class="zone-row header svelte-1uhipit"><span>Zone</span><span>Name</span><span colspan="2">Pace/km</span></div> <!></div> <details class="help-details svelte-1uhipit"><summary class="svelte-1uhipit">How to find your Threshold Pace</summary> <div class="help-content svelte-1uhipit"><p class="svelte-1uhipit"><strong>Option 1: Race-Based</strong></p> <ul class="svelte-1uhipit"><li class="svelte-1uhipit">Recent 5K race pace + 15-20 sec/km</li> <li class="svelte-1uhipit">Recent 10K race pace + 5-10 sec/km</li></ul> <p class="svelte-1uhipit"><strong>Option 2: 30-Minute Test</strong></p> <p class="svelte-1uhipit">Run 30 minutes at max sustainable effort. Average pace = threshold.</p></div></details></div>',1),lr=ue('<div class="zone-row svelte-1uhipit"><span> </span> <span class="zone-name svelte-1uhipit"> </span> <input type="number" class="zone-input svelte-1uhipit"/> <input type="number" class="zone-input svelte-1uhipit"/></div>'),or=ue('<div class="zone-row svelte-1uhipit"><span> </span> <span class="zone-name svelte-1uhipit"> </span> <input type="number" class="zone-input svelte-1uhipit"/> <input type="number" class="zone-input svelte-1uhipit"/></div>'),rr=ue('<div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Heart Rate Zones</h4> <div class="threshold-row svelte-1uhipit"><span class="threshold-label svelte-1uhipit">Bike LTHR</span> <input type="number" class="threshold-input svelte-1uhipit" min="100" max="220"/> <button class="recalc-btn svelte-1uhipit">Recalculate</button></div> <div class="zones-grid svelte-1uhipit"><div class="zone-row header svelte-1uhipit"><span>Zone</span><span>Name</span><span>Low</span><span>High</span></div> <!></div> <details class="help-details svelte-1uhipit"><summary class="svelte-1uhipit">How to find your LTHR</summary> <div class="help-content svelte-1uhipit"><p class="svelte-1uhipit"><strong>30-Minute Test:</strong></p> <ol class="svelte-1uhipit"><li class="svelte-1uhipit">Warm up for 15 minutes</li> <li class="svelte-1uhipit">Bike as hard as you can sustain for 30 minutes</li> <li class="svelte-1uhipit">Your average HR for the last 20 minutes is your LTHR</li></ol> <p class="help-note svelte-1uhipit">Bike LTHR is typically 5-10 bpm lower than run.</p></div></details></div> <div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Power Zones</h4> <div class="threshold-row svelte-1uhipit"><span class="threshold-label svelte-1uhipit">FTP (watts)</span> <input type="number" class="threshold-input svelte-1uhipit" min="50" max="500"/> <button class="recalc-btn svelte-1uhipit">Recalculate</button></div> <div class="zones-grid svelte-1uhipit"><div class="zone-row header svelte-1uhipit"><span>Zone</span><span>Name</span><span>Low W</span><span>High W</span></div> <!></div> <details class="help-details svelte-1uhipit"><summary class="svelte-1uhipit">How to find your FTP</summary> <div class="help-content svelte-1uhipit"><p class="svelte-1uhipit"><strong>20-Minute Test:</strong></p> <ol class="svelte-1uhipit"><li class="svelte-1uhipit">Warm up for 20 minutes including a few hard efforts</li> <li class="svelte-1uhipit">Ride as hard as you can sustain for 20 minutes</li> <li class="svelte-1uhipit">FTP = Average power × 0.95</li></ol> <p class="svelte-1uhipit"><strong>Ramp Test:</strong> Most trainer apps (Zwift, TrainerRoad) have built-in FTP tests.</p></div></details></div>',1),ur=ue('<div class="zone-row svelte-1uhipit"><span> </span> <span class="zone-name svelte-1uhipit"> </span> <span class="zone-name svelte-1uhipit"> </span> <input type="text" class="pace-input svelte-1uhipit"/></div>'),cr=ue('<div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Pace Zones</h4> <div class="threshold-row svelte-1uhipit"><span class="threshold-label svelte-1uhipit">CSS (per 100m)</span> <input type="text" class="threshold-input svelte-1uhipit" placeholder="1:45"/> <button class="recalc-btn svelte-1uhipit">Recalculate</button></div> <div class="zones-grid svelte-1uhipit"><div class="zone-row header svelte-1uhipit"><span>Zone</span><span>Name</span><span>Offset</span><span>Pace/100</span></div> <!></div> <details class="help-details svelte-1uhipit"><summary class="svelte-1uhipit">How to find your CSS</summary> <div class="help-content svelte-1uhipit"><p class="svelte-1uhipit"><strong>CSS Test (Critical Swim Speed):</strong></p> <ol class="svelte-1uhipit"><li class="svelte-1uhipit">Warm up for 10 minutes</li> <li class="svelte-1uhipit">Swim 400m all-out, record time (T400)</li> <li class="svelte-1uhipit">Rest 5-10 minutes</li> <li class="svelte-1uhipit">Swim 200m all-out, record time (T200)</li> <li class="svelte-1uhipit">CSS = (T400 - T200) ÷ 2 = pace per 100m</li></ol> <p class="svelte-1uhipit"><strong>Example:</strong> 400m in 6:40 (400s), 200m in 3:00 (180s)<br/> CSS = (400 - 180) ÷ 2 = 110 sec/100m = 1:50/100m</p></div></details></div>'),mr=ue("<div> </div>"),fr=ue(`<div class="settings-section svelte-1uhipit"><h4 class="settings-section-title svelte-1uhipit">Your Data</h4> <div class="data-explainer svelte-1uhipit"><p class="svelte-1uhipit">Your training data is stored <strong>only on this device</strong>, in your browser's
39
39
  local storage. This includes your settings, completed workouts, and any changes you've
40
40
  made to your plan.</p> <p class="svelte-1uhipit">If you clear your browser data, switch browsers, or use a different device, your
41
41
  progress won't be there. Use the backup feature below to save your data and restore it