@ai-matrx/alchemy 0.16.0 → 0.17.5

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.
Files changed (45) hide show
  1. package/CHANGELOG.md +43 -1
  2. package/dist/core.cjs.map +1 -1
  3. package/dist/core.js +2 -2
  4. package/dist/core.js.map +1 -1
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.js +2 -2
  7. package/dist/index.js.map +1 -1
  8. package/dist/operate-capture.cjs +1 -1
  9. package/dist/operate-capture.cjs.map +1 -1
  10. package/dist/operate-capture.d.cts +30 -1
  11. package/dist/operate-capture.d.ts +30 -1
  12. package/dist/operate-capture.js +1 -1
  13. package/dist/operate-capture.js.map +1 -1
  14. package/dist/operate-document.cjs.map +1 -1
  15. package/dist/operate-document.js +1 -1
  16. package/dist/operate-document.js.map +1 -1
  17. package/dist/operate-pptx.cjs +151 -0
  18. package/dist/operate-pptx.cjs.map +1 -0
  19. package/dist/operate-pptx.d.cts +2695 -0
  20. package/dist/operate-pptx.d.ts +2695 -0
  21. package/dist/operate-pptx.js +151 -0
  22. package/dist/operate-pptx.js.map +1 -0
  23. package/dist/operate-read.cjs +2 -2
  24. package/dist/operate-read.cjs.map +1 -1
  25. package/dist/operate-read.js +2 -2
  26. package/dist/operate-read.js.map +1 -1
  27. package/dist/operate-rich-html.cjs.map +1 -1
  28. package/dist/operate-rich-html.js +1 -1
  29. package/dist/operate-rich-html.js.map +1 -1
  30. package/dist/operate-server.cjs.map +1 -1
  31. package/dist/operate-server.js +1 -1
  32. package/dist/operate-server.js.map +1 -1
  33. package/dist/operate-xlsx.cjs.map +1 -1
  34. package/dist/operate-xlsx.js +1 -1
  35. package/dist/operate-xlsx.js.map +1 -1
  36. package/dist/operate-zip.cjs +2 -0
  37. package/dist/operate-zip.cjs.map +1 -0
  38. package/dist/operate-zip.d.cts +35 -0
  39. package/dist/operate-zip.d.ts +35 -0
  40. package/dist/operate-zip.js +2 -0
  41. package/dist/operate-zip.js.map +1 -0
  42. package/dist/operate.cjs.map +1 -1
  43. package/dist/operate.js +2 -2
  44. package/dist/operate.js.map +1 -1
  45. package/package.json +26 -4
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/jszip@3.10.2/node_modules/jszip/dist/jszip.min.js","../../../node_modules/.pnpm/pptxgenjs@4.0.1/node_modules/pptxgenjs/dist/pptxgen.es.js","../src/operate/pptx.ts"],"sourcesContent":["/*!\n\nJSZip v3.10.2 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){\"use strict\";var d=e(\"./utils\"),c=e(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c=\"string\"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u=\"data:\";if(e.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,n=function(e,t,r,n,i){var s=I.transformTo(\"string\",i(n));return R.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+A(e,2)+A(e,2)+A(t,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(e){var t=this._sources;if(!i.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},s.prototype.lock=function(){i.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=s},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(e,t,r){\"use strict\";var u=e(\"../compressions\"),n=e(\"./ZipFileWorker\");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),h=0;try{e.forEach(function(e,t){h++;var r=function(e,t){var r=e||t,n=u[r];if(!n)throw new Error(r+\" is not a valid compression method !\");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo(\"file\",{name:e,dir:i,date:s,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(e){o.error(e)}return o}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){\"use strict\";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 e=new n;for(var t in this)\"function\"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e(\"./object\")).loadAsync=e(\"./load\"),n.support=e(\"./support\"),n.defaults=e(\"./defaults\"),n.version=\"3.10.2\",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e(\"./external\"),t.exports=n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){\"use strict\";var u=e(\"./utils\"),i=e(\"./external\"),n=e(\"./utf8\"),s=e(\"./zipEntries\"),a=e(\"./stream/Crc32Probe\"),l=e(\"./nodejsUtils\");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new a);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()})}t.exports=function(e,o){var h=this;return o=u.extend(o||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):u.prepareContent(\"the loaded zip file\",e,!0,o.optimizedBinaryString,o.base64).then(function(e){var t=new s(o);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(o.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n],s=i.fileNameStr,a=u.resolve(i.fileNameStr);h.file(a,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:o.createFolders}),i.dir||(h.file(a).unsafeOriginalName=s)}return t.zipComment.length&&(h.comment=t.zipComment),h})}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../stream/GenericWorker\");function s(e,t){i.call(this,\"Nodejs stream input adapter for \"+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on(\"data\",function(e){t.push({data:e,meta:{percent:0}})}).on(\"error\",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on(\"end\",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(e,t,r){\"use strict\";var i=e(\"readable-stream\").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on(\"data\",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on(\"error\",function(e){n.emit(\"error\",e)}).on(\"end\",function(){n.push(null)})}e(\"../utils\").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{\"../utils\":32,\"readable-stream\":16}],14:[function(e,t,r){\"use strict\";t.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if(\"number\"==typeof e)throw new Error('The \"data\" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&\"function\"==typeof e.on&&\"function\"==typeof e.pause&&\"function\"==typeof e.resume}}},{}],15:[function(e,t,r){\"use strict\";function s(e,t,r){var n,i=u.getTypeOf(t),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),\"string\"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=g(e)),s.createFolders&&(n=_(e))&&b.call(this,n,!0);var a=\"string\"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t=\"\",s.compression=\"STORE\",i=\"string\");var o=null;o=t instanceof c||t instanceof l?t:p.isNode&&p.isStream(t)?new m(e,t):u.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var h=new d(e,o,s);this.files[e]=h}var i=e(\"./utf8\"),u=e(\"./utils\"),l=e(\"./stream/GenericWorker\"),a=e(\"./stream/StreamHelper\"),f=e(\"./defaults\"),c=e(\"./compressedObject\"),d=e(\"./zipObject\"),o=e(\"./generate\"),p=e(\"./nodejsUtils\"),m=e(\"./nodejs/NodejsStreamInputAdapter\"),_=function(e){\"/\"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf(\"/\");return 0<t?e.substring(0,t):\"\"},g=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},b=function(e,t){return t=void 0!==t?t:f.createFolders,e=g(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function h(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(h(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=b.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||(\"/\"!==r.slice(-1)&&(r+=\"/\"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(e){var t,r={};try{if((r=u.extend(e||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");u.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var n=r.comment||this.comment||\"\";t=o.generateWorker(this,r,n)}catch(e){(t=new l(\"error\")).error(e)}return new a(t,r.type||\"string\",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type=\"nodebuffer\"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{\"./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(e,t,r){\"use strict\";t.exports=e(\"stream\")},{stream:void 0}],17:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],18:[function(e,t,r){\"use strict\";var n=e(\"../utils\");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+e+\"). Corrupted zip ?\")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"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(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.end()}),e.on(\"error\",function(e){t.error(e)}),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 e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},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 e=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case\"string\":return t.join(\"\");case\"array\":return Array.prototype.concat.apply([],t);case\"uint8array\":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case\"nodebuffer\":return Buffer.concat(t);default:throw new Error(\"concat : unsupported type '\"+e+\"'\")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()})}function f(e,t,r){var n=t;switch(t){case\"blob\":case\"arraybuffer\":n=\"uint8array\";break;case\"base64\":n=\"string\"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s(\"error\"),this._worker.error(e)}}f.prototype={accumulate:function(e){return l(this,e)},on:function(e,t){var r=this;return\"data\"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new o(this,{objectMode:\"nodebuffer\"!==this._outputType},e)}},t.exports=f},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(e,t,r){\"use strict\";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=\"undefined\"!=typeof Buffer,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:\"application/zip\"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob(\"application/zip\").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e(\"readable-stream\").Readable}catch(e){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(e,t,s){\"use strict\";for(var o=e(\"./utils\"),h=e(\"./support\"),r=e(\"./nodejsUtils\"),n=e(\"./stream/GenericWorker\"),u=new Array(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;u[254]=u[254]=1;function a(){n.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){n.call(this,\"utf-8 encode\")}s.utf8encode=function(e){return h.nodebuffer?r.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=h.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=u[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e(\"setimmediate\"),a.newBlob=function(t,r){a.checkSupport(\"blob\");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error(\"Bug : can't construct the Blob.\")}}};var i={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)\"array\"===t||\"nodebuffer\"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join(\"\")},stringifyByChar:function(e){for(var t=\"\",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function s(e){var t=65536,r=a.getTypeOf(e),n=!0;if(\"uint8array\"===r?n=i.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(n=i.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return i.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return i.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}a.applyFromCharCode=s;var c={};c.string={string:n,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:s,array:n,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return s(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:n,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:n,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:n},a.transformTo=function(e,t){if(t=t||\"\",!e)return t;a.checkSupport(e);var r=a.getTypeOf(t);return c[r][e](t)},a.resolve=function(e){for(var t=e.split(\"/\"),r=[],n=0;n<t.length;n++){var i=t[n];\".\"===i||\"\"===i&&0!==n&&n!==t.length-1||(\"..\"===i?r.pop():r.push(i))}return r.join(\"/\")},a.getTypeOf=function(e){if(\"string\"==typeof e)return\"string\";var t=Object.prototype.toString.call(e);return\"[object Array]\"===t?\"array\":o.nodebuffer&&r.isBuffer(e)?\"nodebuffer\":o.uint8array&&\"[object Uint8Array]\"===t?\"uint8array\":o.arraybuffer&&\"[object ArrayBuffer]\"===t?\"arraybuffer\":void 0},a.checkSupport=function(e){if(!o[e.toLowerCase()])throw new Error(e+\" is not supported by this platform\")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(e){var t,r,n=\"\";for(r=0;r<(e||\"\").length;r++)n+=\"\\\\x\"+((t=e.charCodeAt(r))<16?\"0\":\"\")+t.toString(16).toUpperCase();return n},a.delay=function(e,t,r){setImmediate(function(){e.apply(r||null,t||[])})},a.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},a.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},a.prepareContent=function(r,e,n,i,s){return u.Promise.resolve(e).then(function(n){return o.blob&&(n instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(n)))?void 0!==Blob.prototype.arrayBuffer?n.arrayBuffer():\"undefined\"!=typeof FileReader?new u.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):u.Promise.reject(new Error(r+\" is a Blob, but we have no way of reading it.\")):n}).then(function(e){var t=a.getTypeOf(e);return t?(\"arraybuffer\"===t?e=a.transformTo(\"uint8array\",e):\"string\"===t&&(s?e=h.decode(e):n&&!0!==i&&(e=function(e){return l(e,o.uint8array?new Uint8Array(e.length):new Array(e.length))}(e))),e):u.Promise.reject(new Error(\"Can't read the data of '\"+r+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))})}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,setimmediate:54}],33:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),i=e(\"./utils\"),s=e(\"./signature\"),a=e(\"./zipEntry\"),o=e(\"./support\");function h(e){this.files=[],this.loadOptions=e}h.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+i.pretty(t)+\", expected \"+i.pretty(e)+\")\")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},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 e=this.reader.readData(this.zipCommentLength),t=o.uint8array?\"uint8array\":\"array\",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},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 e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},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 e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?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\"):new Error(\"Corrupted zip: can't find end of central directory\");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.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(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=h},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utils\":32,\"./zipEntry\":34}],34:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),s=e(\"./utils\"),i=e(\"./compressedObject\"),a=e(\"./crc32\"),o=e(\"./utf8\"),h=e(\"./compressions\"),u=e(\"./support\");function l(e,t){this.options=e,this.loadOptions=t}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in h)if(Object.prototype.hasOwnProperty.call(h,t)&&h[t].magic===e)return h[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=u.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=l},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(e,t,r){\"use strict\";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e(\"./stream/StreamHelper\"),i=e(\"./stream/DataWorker\"),a=e(\"./utf8\"),o=e(\"./compressedObject\"),h=e(\"./stream/GenericWorker\");n.prototype={internalStream:function(e){var t=null,r=\"string\";try{if(!e)throw new Error(\"No output type specified.\");var n=\"string\"===(r=e.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new h(\"error\")).error(e)}return new s(t,r,\"\")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||\"nodebuffer\").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new i(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},f=0;f<u.length;f++)n.prototype[u[f]]=l;t.exports=n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(e,l,t){(function(t){\"use strict\";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(u),a=t.document.createTextNode(\"\");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r=\"document\"in t&&\"onreadystatechange\"in t.document.createElement(\"script\")?function(){var e=t.document.createElement(\"script\");e.onreadystatechange=function(){u(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(u,0)};else{var o=new t.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var e,t;n=!0;for(var r=h.length;r;){for(t=h,h=[],e=-1;++e<r;)t[e]();r=h.length}n=!1}l.exports=function(e){1!==h.push(e)||n||r()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(e,t,r){\"use strict\";var i=e(\"immediate\");function u(){}var l={},s=[\"REJECTED\"],a=[\"FULFILLED\"],n=[\"PENDING\"];function o(e){if(\"function\"!=typeof e)throw new TypeError(\"resolver must be a function\");this.state=n,this.queue=[],this.outcome=void 0,e!==u&&d(this,e)}function h(e,t,r){this.promise=e,\"function\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return l.reject(t,e)}e===t?l.reject(t,new TypeError(\"Cannot resolve promise with itself\")):l.resolve(t,e)})}function c(e){var t=e&&e.then;if(e&&(\"object\"==typeof e||\"function\"==typeof e)&&\"function\"==typeof t)return function(){t.apply(e,arguments)}}function d(t,e){var r=!1;function n(e){r||(r=!0,l.reject(t,e))}function i(e){r||(r=!0,l.resolve(t,e))}var s=p(function(){e(i,n)});\"error\"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status=\"success\"}catch(e){r.status=\"error\",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if(\"function\"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if(\"function\"!=typeof e&&this.state===a||\"function\"!=typeof t&&this.state===s)return this;var r=new this.constructor(u);this.state!==n?f(r,this.state===a?e:t,this.outcome):this.queue.push(new h(r,e,t));return r},h.prototype.callFulfilled=function(e){l.resolve(this.promise,e)},h.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},h.prototype.callRejected=function(e){l.reject(this.promise,e)},h.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},l.resolve=function(e,t){var r=p(c,t);if(\"error\"===r.status)return l.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},l.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){if(e instanceof this)return e;return l.resolve(new this(u),e)},o.reject=function(e){var t=new this(u);return l.reject(t,e)},o.all=function(e){var r=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var n=e.length,i=!1;if(!n)return this.resolve([]);var s=new Array(n),a=0,t=-1,o=new this(u);for(;++t<n;)h(e[t],t);return o;function h(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,l.resolve(o,s))},function(e){i||(i=!0,l.reject(o,e))})}},o.race=function(e){var t=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var r=e.length,n=!1;if(!r)return this.resolve([]);var i=-1,s=new this(u);for(;++i<r;)a=e[i],t.resolve(a).then(function(e){n||(n=!0,l.resolve(s,e))},function(e){n||(n=!0,l.reject(s,e))});var a;return s}},{immediate:36}],38:[function(e,t,r){\"use strict\";var n={};(0,e(\"./lib/utils/common\").assign)(n,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(e,t,r){\"use strict\";var a=e(\"./zlib/deflate\"),o=e(\"./utils/common\"),h=e(\"./utils/strings\"),i=e(\"./zlib/messages\"),s=e(\"./zlib/zstream\"),u=Object.prototype.toString,l=0,f=-1,c=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:f,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:\"\"},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==l)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n=\"string\"==typeof t.dictionary?h.string2buf(t.dictionary):\"[object ArrayBuffer]\"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==l)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,\"string\"==typeof e?i.input=h.string2buf(e):\"[object ArrayBuffer]\"===u.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||(\"string\"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==n||(this.onEnd(l),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(e,t,r){\"use strict\";var c=e(\"./zlib/inflate\"),d=e(\"./utils/common\"),p=e(\"./utils/strings\"),m=e(\"./zlib/constants\"),n=e(\"./zlib/messages\"),i=e(\"./zlib/zstream\"),s=e(\"./zlib/gzheader\"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=d.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=c.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,c.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,\"string\"==typeof e?h.input=p.binstring2buf(e):\"[object ArrayBuffer]\"===_.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new d.Buf8(u),h.next_out=0,h.avail_out=u),(r=c.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o=\"string\"==typeof l?p.string2buf(l):\"[object ArrayBuffer]\"===_.call(l)?new Uint8Array(l):l,r=c.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(i=p.utf8border(h.output,h.next_out),s=h.next_out-i,a=p.buf2string(h.output,i),h.next_out=s,h.avail_out=u-s,s&&d.arraySet(h.output,h.output,i,s,0),this.onData(a)):this.onData(d.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=c.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=d.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){\"use strict\";var h=e(\"./common\"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var u=new h.Buf8(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,h.shrinkBuf(e,t));for(var r=\"\",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new h.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=u[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){\"use strict\";t.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(e,t,r){\"use strict\";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4<e?9:0)}function D(e){for(var t=e.length;0<=--t;)e[t]=0}function F(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<c);if(n=S-(c-s),s=c-S,a<n){if(e.match_start=t,o<=(a=n))break;d=u[s+a-1],p=u[s+a]}}}while((t=f[t&l])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,c.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=d(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),e.lookahead+=r,e.lookahead+e.insert>=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+x-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<x)););}while(e.lookahead<z&&0!==e.strm.avail_in)}function Z(e,t){for(var r,n;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r)),e.match_length>=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function W(e,t){for(var r,n,i;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=x-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===x&&4096<e.strstart-e.match_start)&&(e.match_length=x-1)),e.prev_length>=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=x-1,e.strstart++,n&&(N(e,!1),0===e.strm.avail_out))return A}else if(e.match_available){if((n=u._tr_tally(e,0,e.window[e.strstart-1]))&&N(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return A}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=u._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function M(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function H(){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=v,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 c.Buf16(2*w),this.dyn_dtree=new c.Buf16(2*(2*a+1)),this.bl_tree=new c.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new c.Buf16(k+1),this.heap=new c.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new c.Buf16(2*s+1),D(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 G(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?C:E,e.adler=2===t.wrap?0:1,t.last_flush=l,u._tr_init(t),m):R(e,_)}function K(e){var t=G(e);return t===m&&function(e){e.window_size=2*e.w_size,D(e.head),e.max_lazy_match=h[e.level].max_lazy,e.good_match=h[e.level].good_length,e.nice_match=h[e.level].nice_length,e.max_chain_length=h[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0}(e.state),t}function Y(e,t,r,n,i,s){if(!e)return _;var a=1;if(t===g&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||y<i||r!==v||n<8||15<n||t<0||9<t||s<0||b<s)return R(e,_);8===n&&(n=9);var o=new H;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new c.Buf8(2*o.w_size),o.head=new c.Buf16(o.hash_size),o.prev=new c.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new c.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,K(e)}h=[new M(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?R(e,_):_;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&t!==f)return R(e,0===e.avail_out?-5:_);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===C)if(2===n.wrap)e.adler=0,U(n,31),U(n,139),U(n,8),n.gzhead?(U(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),U(n,255&n.gzhead.time),U(n,n.gzhead.time>>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+S;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=S-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?m:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==C&&69!==t&&73!==t&&91!==t&&103!==t&&t!==E&&666!==t?R(e,_):(e.state=null,t===E?R(e,-3):m):_},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,h,u,l=t.length;if(!e||!e.state)return _;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(e.adler=d(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+x-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,e.next_in=o,e.input=h,e.avail_in=a,r.wrap=s,m},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(e,t,r){\"use strict\";t.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(e,t,r){\"use strict\";t.exports=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;e:do{p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<<y)-1)];continue t}if(32&y){r.mode=12;break e}e.msg=\"invalid literal/length code\",r.mode=30;break e}w=65535&v,(y&=15)&&(p<y&&(d+=z[n++]<<p,p+=8),w+=d&(1<<y)-1,d>>>=y,p-=y),p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=_[d&b];r:for(;;){if(d>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<<y)-1)];continue r}e.msg=\"invalid distance code\",r.mode=30;break e}if(k=65535&v,p<(y&=15)&&(d+=z[n++]<<p,(p+=8)<y&&(d+=z[n++]<<p,p+=8)),h<(k+=d&(1<<y)-1)){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(S=c,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=c[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=c[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(n<i&&s<o);n-=w=p>>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=d,r.bits=p}},{}],49:[function(e,t,r){\"use strict\";var I=e(\"../utils/common\"),O=e(\"./adler32\"),B=e(\"./crc32\"),R=e(\"./inffast\"),T=e(\"./inftrees\"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){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 I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function u(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=h(e,t))!==N&&(e.state=null),r):U}var l,f,c=!0;function j(e){if(c){var t;for(l=new I.Buf32(512),f=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(T(D,e.lens,0,288,l,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;T(F,e.lens,0,32,f,0,e.work,{bits:5}),c=!1}e.lencode=l,e.lenbits=9,e.distcode=f,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(e){return u(e,15)},r.inflateInit2=u,r.inflate=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,f=o,c=h,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){e.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}e.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o<d&&(d=o),h<d&&(d=h),0===d)break e;I.arraySet(i,n,s,d,a),o-=d,s+=d,h-=d,a+=d,r.length-=d;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){e.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(h<d&&(d=h),h-=d,r.length-=d;i[a++]=m[p++],--d;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break e;i[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break e;o--,u|=n[s++]<<l,l+=8}if(c-=h,e.total_out+=c,r.total+=c,c&&(e.adler=r.check=r.flags?B(r.check,i,c,a-c):O(r.check,i,c,a-c)),c=h,(r.flags?u:L(u))!==r.check){e.msg=\"incorrect data check\",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,(r.wsize||c!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,c-e.avail_out)?(r.mode=31,-4):(f-=e.avail_in,c-=e.avail_out,e.total_in+=f,e.total_out+=c,r.total+=c,r.wrap&&c&&(e.adler=r.check=r.flags?B(r.check,i,c,e.next_out-c):O(r.check,i,c,e.next_out-c)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===c||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(e,t,r){\"use strict\";var D=e(\"../utils/common\"),F=[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],N=[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],P=[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];t.exports=function(e,t,r,n,i,s,a,o){var h,u,l,f,c,d,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<n;v++)O[t[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===e||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<n;v++)0!==t[r+v]&&(a[B[t[r+v]]++]=v);if(d=0===e?(A=R=a,19):1===e?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,c=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===e&&852<C||2===e&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<d?(m=0,a[v]):a[v]>d?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;i[c+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),c+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===e&&852<C||2===e&&592<C)return 1;i[l=E&f]=k<<24|x<<16|c-s|0}}return 0!==E&&(i[c+E]=b-S<<24|64<<16|0),o.bits=k,0}},{\"../utils/common\":41}],51:[function(e,t,r){\"use strict\";t.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(e,t,r){\"use strict\";var i=e(\"../utils/common\"),o=0,h=1;function n(e){for(var t=e.length;0<=--t;)e[t]=0}var s=0,a=29,u=256,l=u+1+a,f=30,c=19,_=2*l+1,g=15,d=16,p=7,m=256,b=16,v=17,y=18,w=[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],k=[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],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));n(z);var C=new Array(2*f);n(C);var E=new Array(512);n(E);var A=new Array(256);n(A);var I=new Array(a);n(I);var O,B,R,T=new Array(f);function D(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function F(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function N(e){return e<256?E[e]:E[256+(e>>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<<e.bi_valid&65535,U(e,e.bi_buf),e.bi_buf=t>>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function L(e,t,r){P(e,r[2*t],r[2*t+1])}function j(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<f;t++)e.dyn_dtree[2*t]=0;for(t=0;t<c;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*m]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function M(e){8<e.bi_valid?U(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function H(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function G(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&H(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!H(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function K(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?L(e,i,t):(L(e,(s=A[i])+u+1,t),0!==(a=w[s])&&P(e,i-=I[s],a),L(e,s=N(--n),r),0!==(a=k[s])&&P(e,n-=T[s],a)),o<e.last_lit;);L(e,m,t)}function Y(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u<n||(e.bl_count[s]++,a=0,d<=n&&(a=c[n-d]),o=h[2*n],e.opt_len+=o*(s+a),f&&(e.static_len+=o*(l[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(h[2*i+1]!==s&&(e.opt_len+=(s-h[2*i+1])*h[2*i],h[2*i+1]=s),n--)}}(e,t),Z(s,u,e.bl_count)}function X(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<h&&i===a||(o<u?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[2*b]++):o<=10?e.bl_tree[2*v]++:e.bl_tree[2*y]++,s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4))}function V(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<h&&i===a)){if(o<u)for(;L(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(L(e,i,e.bl_tree),o--),L(e,b,e.bl_tree),P(e,o-3,2)):o<=10?(L(e,v,e.bl_tree),P(e,o-3,3)):(L(e,y,e.bl_tree),P(e,o-11,7));s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4)}}n(T);var q=!1;function J(e,t,r,n){P(e,(s<<1)+(n?1:0),3),function(e,t,r,n){M(e),n&&(U(e,r),U(e,~r)),i.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r,!0)}r._tr_init=function(e){q||(function(){var e,t,r,n,i,s=new Array(g+1);for(n=r=0;n<a-1;n++)for(I[n]=r,e=0;e<1<<w[n];e++)A[r++]=n;for(A[r-1]=n,n=i=0;n<16;n++)for(T[n]=i,e=0;e<1<<k[n];e++)E[i++]=n;for(i>>=7;n<f;n++)for(T[n]=i<<7,e=0;e<1<<k[n]-7;e++)E[256+i++]=n;for(t=0;t<=g;t++)s[t]=0;for(e=0;e<=143;)z[2*e+1]=8,e++,s[8]++;for(;e<=255;)z[2*e+1]=9,e++,s[9]++;for(;e<=279;)z[2*e+1]=7,e++,s[7]++;for(;e<=287;)z[2*e+1]=8,e++,s[8]++;for(Z(z,l+1,s),e=0;e<f;e++)C[2*e+1]=5,C[2*e]=j(e,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,c,p)}(),q=!0),e.l_desc=new F(e.dyn_ltree,O),e.d_desc=new F(e.dyn_dtree,B),e.bl_desc=new F(e.bl_tree,R),e.bi_buf=0,e.bi_valid=0,W(e)},r._tr_stored_block=J,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t<u;t++)if(0!==e.dyn_ltree[2*t])return h;return o}(e)),Y(e,e.l_desc),Y(e,e.d_desc),a=function(e){var t;for(X(e,e.dyn_ltree,e.l_desc.max_code),X(e,e.dyn_dtree,e.d_desc.max_code),Y(e,e.bl_desc),t=c-1;3<=t&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i<n;i++)P(e,e.bl_tree[2*S[i]+1],3);V(e,e.dyn_ltree,t-1),V(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),K(e,e.dyn_ltree,e.dyn_dtree)),W(e),n&&M(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.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(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var n={callback:e,args:t};return h[o]=n,i(o),o++},e.clearImmediate=f}function f(e){delete h[e]}function c(e){if(u)setTimeout(c,0,e);else{var t=h[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{f(e),u=!1}}}}function d(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(a)&&c(+e.data.slice(a.length))}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[10])(10)});","/* PptxGenJS 4.0.1 @ 2025-06-25T23:35:35.098Z */\nimport JSZip from 'jszip';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\n/**\n * PptxGenJS Enums\n * NOTE: `enum` wont work for objects, so use `Object.freeze`\n */\n// CONST\nconst EMU = 914400; // One (1) inch (OfficeXML measures in EMU (English Metric Units))\nconst ONEPT = 12700; // One (1) point (pt)\nconst CRLF = '\\r\\n'; // AKA: Chr(13) & Chr(10)\nconst LAYOUT_IDX_SERIES_BASE = 2147483649;\nconst REGEX_HEX_COLOR = /^[0-9a-fA-F]{6}$/;\nconst LINEH_MODIFIER = 1.67; // AKA: Golden Ratio Typography\nconst DEF_BULLET_MARGIN = 27;\nconst DEF_CELL_BORDER = { type: 'solid', color: '666666', pt: 1 };\nconst DEF_CELL_MARGIN_IN = [0.05, 0.1, 0.05, 0.1]; // \"Normal\" margins in PPT-2021 (\"Narrow\" is `0.05` for all 4)\nconst DEF_CHART_BORDER = { color: '363636', pt: 1 };\nconst DEF_CHART_GRIDLINE = { color: '888888', style: 'solid', size: 1, cap: 'flat' };\nconst DEF_FONT_COLOR = '000000';\nconst DEF_FONT_SIZE = 12;\nconst DEF_FONT_TITLE_SIZE = 18;\nconst DEF_PRES_LAYOUT = 'LAYOUT_16x9';\nconst DEF_PRES_LAYOUT_NAME = 'DEFAULT';\nconst DEF_SHAPE_LINE_COLOR = '333333';\nconst DEF_SHAPE_SHADOW = { type: 'outer', blur: 3, offset: 23000 / 12700, angle: 90, color: '000000', opacity: 0.35, rotateWithShape: true };\nconst DEF_SLIDE_MARGIN_IN = [0.5, 0.5, 0.5, 0.5]; // TRBL-style\nconst DEF_TEXT_SHADOW = { color: '000000'};\nconst DEF_TEXT_GLOW = { size: 8, color: 'FFFFFF', opacity: 0.75 };\nconst AXIS_ID_VALUE_PRIMARY = '2094734552';\nconst AXIS_ID_VALUE_SECONDARY = '2094734553';\nconst AXIS_ID_CATEGORY_PRIMARY = '2094734554';\nconst AXIS_ID_CATEGORY_SECONDARY = '2094734555';\nconst AXIS_ID_SERIES_PRIMARY = '2094734556';\nconst LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\nconst BARCHART_COLORS = [\n 'C0504D',\n '4F81BD',\n '9BBB59',\n '8064A2',\n '4BACC6',\n 'F79646',\n '628FC6',\n 'C86360',\n 'C0504D',\n '4F81BD',\n '9BBB59',\n '8064A2',\n '4BACC6',\n 'F79646',\n '628FC6',\n 'C86360'\n];\nconst PIECHART_COLORS = [\n '5DA5DA',\n 'FAA43A',\n '60BD68',\n 'F17CB0',\n 'B2912F',\n 'B276B2',\n 'DECF3F',\n 'F15854',\n 'A7A7A7',\n '5DA5DA',\n 'FAA43A',\n '60BD68',\n 'F17CB0',\n 'B2912F',\n 'B276B2',\n 'DECF3F',\n 'F15854',\n 'A7A7A7',\n];\nvar TEXT_HALIGN;\n(function (TEXT_HALIGN) {\n TEXT_HALIGN[\"left\"] = \"left\";\n TEXT_HALIGN[\"center\"] = \"center\";\n TEXT_HALIGN[\"right\"] = \"right\";\n TEXT_HALIGN[\"justify\"] = \"justify\";\n})(TEXT_HALIGN || (TEXT_HALIGN = {}));\nvar TEXT_VALIGN;\n(function (TEXT_VALIGN) {\n TEXT_VALIGN[\"b\"] = \"b\";\n TEXT_VALIGN[\"ctr\"] = \"ctr\";\n TEXT_VALIGN[\"t\"] = \"t\";\n})(TEXT_VALIGN || (TEXT_VALIGN = {}));\nconst SLDNUMFLDID = '{F7021451-1387-4CA6-816F-3879F97B5CBC}';\n// ENUM\n// TODO: 3.5 or v4.0: rationalize ts-def exported enum names/case!\n// NOTE: First tsdef enum named correctly (shapes -> 'Shape', colors -> 'Color'), etc.\nvar OutputType;\n(function (OutputType) {\n OutputType[\"arraybuffer\"] = \"arraybuffer\";\n OutputType[\"base64\"] = \"base64\";\n OutputType[\"binarystring\"] = \"binarystring\";\n OutputType[\"blob\"] = \"blob\";\n OutputType[\"nodebuffer\"] = \"nodebuffer\";\n OutputType[\"uint8array\"] = \"uint8array\";\n})(OutputType || (OutputType = {}));\nvar ChartType;\n(function (ChartType) {\n ChartType[\"area\"] = \"area\";\n ChartType[\"bar\"] = \"bar\";\n ChartType[\"bar3d\"] = \"bar3D\";\n ChartType[\"bubble\"] = \"bubble\";\n ChartType[\"bubble3d\"] = \"bubble3D\";\n ChartType[\"doughnut\"] = \"doughnut\";\n ChartType[\"line\"] = \"line\";\n ChartType[\"pie\"] = \"pie\";\n ChartType[\"radar\"] = \"radar\";\n ChartType[\"scatter\"] = \"scatter\";\n})(ChartType || (ChartType = {}));\nvar ShapeType;\n(function (ShapeType) {\n ShapeType[\"accentBorderCallout1\"] = \"accentBorderCallout1\";\n ShapeType[\"accentBorderCallout2\"] = \"accentBorderCallout2\";\n ShapeType[\"accentBorderCallout3\"] = \"accentBorderCallout3\";\n ShapeType[\"accentCallout1\"] = \"accentCallout1\";\n ShapeType[\"accentCallout2\"] = \"accentCallout2\";\n ShapeType[\"accentCallout3\"] = \"accentCallout3\";\n ShapeType[\"actionButtonBackPrevious\"] = \"actionButtonBackPrevious\";\n ShapeType[\"actionButtonBeginning\"] = \"actionButtonBeginning\";\n ShapeType[\"actionButtonBlank\"] = \"actionButtonBlank\";\n ShapeType[\"actionButtonDocument\"] = \"actionButtonDocument\";\n ShapeType[\"actionButtonEnd\"] = \"actionButtonEnd\";\n ShapeType[\"actionButtonForwardNext\"] = \"actionButtonForwardNext\";\n ShapeType[\"actionButtonHelp\"] = \"actionButtonHelp\";\n ShapeType[\"actionButtonHome\"] = \"actionButtonHome\";\n ShapeType[\"actionButtonInformation\"] = \"actionButtonInformation\";\n ShapeType[\"actionButtonMovie\"] = \"actionButtonMovie\";\n ShapeType[\"actionButtonReturn\"] = \"actionButtonReturn\";\n ShapeType[\"actionButtonSound\"] = \"actionButtonSound\";\n ShapeType[\"arc\"] = \"arc\";\n ShapeType[\"bentArrow\"] = \"bentArrow\";\n ShapeType[\"bentUpArrow\"] = \"bentUpArrow\";\n ShapeType[\"bevel\"] = \"bevel\";\n ShapeType[\"blockArc\"] = \"blockArc\";\n ShapeType[\"borderCallout1\"] = \"borderCallout1\";\n ShapeType[\"borderCallout2\"] = \"borderCallout2\";\n ShapeType[\"borderCallout3\"] = \"borderCallout3\";\n ShapeType[\"bracePair\"] = \"bracePair\";\n ShapeType[\"bracketPair\"] = \"bracketPair\";\n ShapeType[\"callout1\"] = \"callout1\";\n ShapeType[\"callout2\"] = \"callout2\";\n ShapeType[\"callout3\"] = \"callout3\";\n ShapeType[\"can\"] = \"can\";\n ShapeType[\"chartPlus\"] = \"chartPlus\";\n ShapeType[\"chartStar\"] = \"chartStar\";\n ShapeType[\"chartX\"] = \"chartX\";\n ShapeType[\"chevron\"] = \"chevron\";\n ShapeType[\"chord\"] = \"chord\";\n ShapeType[\"circularArrow\"] = \"circularArrow\";\n ShapeType[\"cloud\"] = \"cloud\";\n ShapeType[\"cloudCallout\"] = \"cloudCallout\";\n ShapeType[\"corner\"] = \"corner\";\n ShapeType[\"cornerTabs\"] = \"cornerTabs\";\n ShapeType[\"cube\"] = \"cube\";\n ShapeType[\"curvedDownArrow\"] = \"curvedDownArrow\";\n ShapeType[\"curvedLeftArrow\"] = \"curvedLeftArrow\";\n ShapeType[\"curvedRightArrow\"] = \"curvedRightArrow\";\n ShapeType[\"curvedUpArrow\"] = \"curvedUpArrow\";\n ShapeType[\"custGeom\"] = \"custGeom\";\n ShapeType[\"decagon\"] = \"decagon\";\n ShapeType[\"diagStripe\"] = \"diagStripe\";\n ShapeType[\"diamond\"] = \"diamond\";\n ShapeType[\"dodecagon\"] = \"dodecagon\";\n ShapeType[\"donut\"] = \"donut\";\n ShapeType[\"doubleWave\"] = \"doubleWave\";\n ShapeType[\"downArrow\"] = \"downArrow\";\n ShapeType[\"downArrowCallout\"] = \"downArrowCallout\";\n ShapeType[\"ellipse\"] = \"ellipse\";\n ShapeType[\"ellipseRibbon\"] = \"ellipseRibbon\";\n ShapeType[\"ellipseRibbon2\"] = \"ellipseRibbon2\";\n ShapeType[\"flowChartAlternateProcess\"] = \"flowChartAlternateProcess\";\n ShapeType[\"flowChartCollate\"] = \"flowChartCollate\";\n ShapeType[\"flowChartConnector\"] = \"flowChartConnector\";\n ShapeType[\"flowChartDecision\"] = \"flowChartDecision\";\n ShapeType[\"flowChartDelay\"] = \"flowChartDelay\";\n ShapeType[\"flowChartDisplay\"] = \"flowChartDisplay\";\n ShapeType[\"flowChartDocument\"] = \"flowChartDocument\";\n ShapeType[\"flowChartExtract\"] = \"flowChartExtract\";\n ShapeType[\"flowChartInputOutput\"] = \"flowChartInputOutput\";\n ShapeType[\"flowChartInternalStorage\"] = \"flowChartInternalStorage\";\n ShapeType[\"flowChartMagneticDisk\"] = \"flowChartMagneticDisk\";\n ShapeType[\"flowChartMagneticDrum\"] = \"flowChartMagneticDrum\";\n ShapeType[\"flowChartMagneticTape\"] = \"flowChartMagneticTape\";\n ShapeType[\"flowChartManualInput\"] = \"flowChartManualInput\";\n ShapeType[\"flowChartManualOperation\"] = \"flowChartManualOperation\";\n ShapeType[\"flowChartMerge\"] = \"flowChartMerge\";\n ShapeType[\"flowChartMultidocument\"] = \"flowChartMultidocument\";\n ShapeType[\"flowChartOfflineStorage\"] = \"flowChartOfflineStorage\";\n ShapeType[\"flowChartOffpageConnector\"] = \"flowChartOffpageConnector\";\n ShapeType[\"flowChartOnlineStorage\"] = \"flowChartOnlineStorage\";\n ShapeType[\"flowChartOr\"] = \"flowChartOr\";\n ShapeType[\"flowChartPredefinedProcess\"] = \"flowChartPredefinedProcess\";\n ShapeType[\"flowChartPreparation\"] = \"flowChartPreparation\";\n ShapeType[\"flowChartProcess\"] = \"flowChartProcess\";\n ShapeType[\"flowChartPunchedCard\"] = \"flowChartPunchedCard\";\n ShapeType[\"flowChartPunchedTape\"] = \"flowChartPunchedTape\";\n ShapeType[\"flowChartSort\"] = \"flowChartSort\";\n ShapeType[\"flowChartSummingJunction\"] = \"flowChartSummingJunction\";\n ShapeType[\"flowChartTerminator\"] = \"flowChartTerminator\";\n ShapeType[\"folderCorner\"] = \"folderCorner\";\n ShapeType[\"frame\"] = \"frame\";\n ShapeType[\"funnel\"] = \"funnel\";\n ShapeType[\"gear6\"] = \"gear6\";\n ShapeType[\"gear9\"] = \"gear9\";\n ShapeType[\"halfFrame\"] = \"halfFrame\";\n ShapeType[\"heart\"] = \"heart\";\n ShapeType[\"heptagon\"] = \"heptagon\";\n ShapeType[\"hexagon\"] = \"hexagon\";\n ShapeType[\"homePlate\"] = \"homePlate\";\n ShapeType[\"horizontalScroll\"] = \"horizontalScroll\";\n ShapeType[\"irregularSeal1\"] = \"irregularSeal1\";\n ShapeType[\"irregularSeal2\"] = \"irregularSeal2\";\n ShapeType[\"leftArrow\"] = \"leftArrow\";\n ShapeType[\"leftArrowCallout\"] = \"leftArrowCallout\";\n ShapeType[\"leftBrace\"] = \"leftBrace\";\n ShapeType[\"leftBracket\"] = \"leftBracket\";\n ShapeType[\"leftCircularArrow\"] = \"leftCircularArrow\";\n ShapeType[\"leftRightArrow\"] = \"leftRightArrow\";\n ShapeType[\"leftRightArrowCallout\"] = \"leftRightArrowCallout\";\n ShapeType[\"leftRightCircularArrow\"] = \"leftRightCircularArrow\";\n ShapeType[\"leftRightRibbon\"] = \"leftRightRibbon\";\n ShapeType[\"leftRightUpArrow\"] = \"leftRightUpArrow\";\n ShapeType[\"leftUpArrow\"] = \"leftUpArrow\";\n ShapeType[\"lightningBolt\"] = \"lightningBolt\";\n ShapeType[\"line\"] = \"line\";\n ShapeType[\"lineInv\"] = \"lineInv\";\n ShapeType[\"mathDivide\"] = \"mathDivide\";\n ShapeType[\"mathEqual\"] = \"mathEqual\";\n ShapeType[\"mathMinus\"] = \"mathMinus\";\n ShapeType[\"mathMultiply\"] = \"mathMultiply\";\n ShapeType[\"mathNotEqual\"] = \"mathNotEqual\";\n ShapeType[\"mathPlus\"] = \"mathPlus\";\n ShapeType[\"moon\"] = \"moon\";\n ShapeType[\"noSmoking\"] = \"noSmoking\";\n ShapeType[\"nonIsoscelesTrapezoid\"] = \"nonIsoscelesTrapezoid\";\n ShapeType[\"notchedRightArrow\"] = \"notchedRightArrow\";\n ShapeType[\"octagon\"] = \"octagon\";\n ShapeType[\"parallelogram\"] = \"parallelogram\";\n ShapeType[\"pentagon\"] = \"pentagon\";\n ShapeType[\"pie\"] = \"pie\";\n ShapeType[\"pieWedge\"] = \"pieWedge\";\n ShapeType[\"plaque\"] = \"plaque\";\n ShapeType[\"plaqueTabs\"] = \"plaqueTabs\";\n ShapeType[\"plus\"] = \"plus\";\n ShapeType[\"quadArrow\"] = \"quadArrow\";\n ShapeType[\"quadArrowCallout\"] = \"quadArrowCallout\";\n ShapeType[\"rect\"] = \"rect\";\n ShapeType[\"ribbon\"] = \"ribbon\";\n ShapeType[\"ribbon2\"] = \"ribbon2\";\n ShapeType[\"rightArrow\"] = \"rightArrow\";\n ShapeType[\"rightArrowCallout\"] = \"rightArrowCallout\";\n ShapeType[\"rightBrace\"] = \"rightBrace\";\n ShapeType[\"rightBracket\"] = \"rightBracket\";\n ShapeType[\"round1Rect\"] = \"round1Rect\";\n ShapeType[\"round2DiagRect\"] = \"round2DiagRect\";\n ShapeType[\"round2SameRect\"] = \"round2SameRect\";\n ShapeType[\"roundRect\"] = \"roundRect\";\n ShapeType[\"rtTriangle\"] = \"rtTriangle\";\n ShapeType[\"smileyFace\"] = \"smileyFace\";\n ShapeType[\"snip1Rect\"] = \"snip1Rect\";\n ShapeType[\"snip2DiagRect\"] = \"snip2DiagRect\";\n ShapeType[\"snip2SameRect\"] = \"snip2SameRect\";\n ShapeType[\"snipRoundRect\"] = \"snipRoundRect\";\n ShapeType[\"squareTabs\"] = \"squareTabs\";\n ShapeType[\"star10\"] = \"star10\";\n ShapeType[\"star12\"] = \"star12\";\n ShapeType[\"star16\"] = \"star16\";\n ShapeType[\"star24\"] = \"star24\";\n ShapeType[\"star32\"] = \"star32\";\n ShapeType[\"star4\"] = \"star4\";\n ShapeType[\"star5\"] = \"star5\";\n ShapeType[\"star6\"] = \"star6\";\n ShapeType[\"star7\"] = \"star7\";\n ShapeType[\"star8\"] = \"star8\";\n ShapeType[\"stripedRightArrow\"] = \"stripedRightArrow\";\n ShapeType[\"sun\"] = \"sun\";\n ShapeType[\"swooshArrow\"] = \"swooshArrow\";\n ShapeType[\"teardrop\"] = \"teardrop\";\n ShapeType[\"trapezoid\"] = \"trapezoid\";\n ShapeType[\"triangle\"] = \"triangle\";\n ShapeType[\"upArrow\"] = \"upArrow\";\n ShapeType[\"upArrowCallout\"] = \"upArrowCallout\";\n ShapeType[\"upDownArrow\"] = \"upDownArrow\";\n ShapeType[\"upDownArrowCallout\"] = \"upDownArrowCallout\";\n ShapeType[\"uturnArrow\"] = \"uturnArrow\";\n ShapeType[\"verticalScroll\"] = \"verticalScroll\";\n ShapeType[\"wave\"] = \"wave\";\n ShapeType[\"wedgeEllipseCallout\"] = \"wedgeEllipseCallout\";\n ShapeType[\"wedgeRectCallout\"] = \"wedgeRectCallout\";\n ShapeType[\"wedgeRoundRectCallout\"] = \"wedgeRoundRectCallout\";\n})(ShapeType || (ShapeType = {}));\n/**\n * TODO: FUTURE: v4.0: rename to `ThemeColor`\n */\nvar SchemeColor;\n(function (SchemeColor) {\n SchemeColor[\"text1\"] = \"tx1\";\n SchemeColor[\"text2\"] = \"tx2\";\n SchemeColor[\"background1\"] = \"bg1\";\n SchemeColor[\"background2\"] = \"bg2\";\n SchemeColor[\"accent1\"] = \"accent1\";\n SchemeColor[\"accent2\"] = \"accent2\";\n SchemeColor[\"accent3\"] = \"accent3\";\n SchemeColor[\"accent4\"] = \"accent4\";\n SchemeColor[\"accent5\"] = \"accent5\";\n SchemeColor[\"accent6\"] = \"accent6\";\n})(SchemeColor || (SchemeColor = {}));\nvar AlignH;\n(function (AlignH) {\n AlignH[\"left\"] = \"left\";\n AlignH[\"center\"] = \"center\";\n AlignH[\"right\"] = \"right\";\n AlignH[\"justify\"] = \"justify\";\n})(AlignH || (AlignH = {}));\nvar AlignV;\n(function (AlignV) {\n AlignV[\"top\"] = \"top\";\n AlignV[\"middle\"] = \"middle\";\n AlignV[\"bottom\"] = \"bottom\";\n})(AlignV || (AlignV = {}));\nvar SHAPE_TYPE;\n(function (SHAPE_TYPE) {\n SHAPE_TYPE[\"ACTION_BUTTON_BACK_OR_PREVIOUS\"] = \"actionButtonBackPrevious\";\n SHAPE_TYPE[\"ACTION_BUTTON_BEGINNING\"] = \"actionButtonBeginning\";\n SHAPE_TYPE[\"ACTION_BUTTON_CUSTOM\"] = \"actionButtonBlank\";\n SHAPE_TYPE[\"ACTION_BUTTON_DOCUMENT\"] = \"actionButtonDocument\";\n SHAPE_TYPE[\"ACTION_BUTTON_END\"] = \"actionButtonEnd\";\n SHAPE_TYPE[\"ACTION_BUTTON_FORWARD_OR_NEXT\"] = \"actionButtonForwardNext\";\n SHAPE_TYPE[\"ACTION_BUTTON_HELP\"] = \"actionButtonHelp\";\n SHAPE_TYPE[\"ACTION_BUTTON_HOME\"] = \"actionButtonHome\";\n SHAPE_TYPE[\"ACTION_BUTTON_INFORMATION\"] = \"actionButtonInformation\";\n SHAPE_TYPE[\"ACTION_BUTTON_MOVIE\"] = \"actionButtonMovie\";\n SHAPE_TYPE[\"ACTION_BUTTON_RETURN\"] = \"actionButtonReturn\";\n SHAPE_TYPE[\"ACTION_BUTTON_SOUND\"] = \"actionButtonSound\";\n SHAPE_TYPE[\"ARC\"] = \"arc\";\n SHAPE_TYPE[\"BALLOON\"] = \"wedgeRoundRectCallout\";\n SHAPE_TYPE[\"BENT_ARROW\"] = \"bentArrow\";\n SHAPE_TYPE[\"BENT_UP_ARROW\"] = \"bentUpArrow\";\n SHAPE_TYPE[\"BEVEL\"] = \"bevel\";\n SHAPE_TYPE[\"BLOCK_ARC\"] = \"blockArc\";\n SHAPE_TYPE[\"CAN\"] = \"can\";\n SHAPE_TYPE[\"CHART_PLUS\"] = \"chartPlus\";\n SHAPE_TYPE[\"CHART_STAR\"] = \"chartStar\";\n SHAPE_TYPE[\"CHART_X\"] = \"chartX\";\n SHAPE_TYPE[\"CHEVRON\"] = \"chevron\";\n SHAPE_TYPE[\"CHORD\"] = \"chord\";\n SHAPE_TYPE[\"CIRCULAR_ARROW\"] = \"circularArrow\";\n SHAPE_TYPE[\"CLOUD\"] = \"cloud\";\n SHAPE_TYPE[\"CLOUD_CALLOUT\"] = \"cloudCallout\";\n SHAPE_TYPE[\"CORNER\"] = \"corner\";\n SHAPE_TYPE[\"CORNER_TABS\"] = \"cornerTabs\";\n SHAPE_TYPE[\"CROSS\"] = \"plus\";\n SHAPE_TYPE[\"CUBE\"] = \"cube\";\n SHAPE_TYPE[\"CURVED_DOWN_ARROW\"] = \"curvedDownArrow\";\n SHAPE_TYPE[\"CURVED_DOWN_RIBBON\"] = \"ellipseRibbon\";\n SHAPE_TYPE[\"CURVED_LEFT_ARROW\"] = \"curvedLeftArrow\";\n SHAPE_TYPE[\"CURVED_RIGHT_ARROW\"] = \"curvedRightArrow\";\n SHAPE_TYPE[\"CURVED_UP_ARROW\"] = \"curvedUpArrow\";\n SHAPE_TYPE[\"CURVED_UP_RIBBON\"] = \"ellipseRibbon2\";\n SHAPE_TYPE[\"CUSTOM_GEOMETRY\"] = \"custGeom\";\n SHAPE_TYPE[\"DECAGON\"] = \"decagon\";\n SHAPE_TYPE[\"DIAGONAL_STRIPE\"] = \"diagStripe\";\n SHAPE_TYPE[\"DIAMOND\"] = \"diamond\";\n SHAPE_TYPE[\"DODECAGON\"] = \"dodecagon\";\n SHAPE_TYPE[\"DONUT\"] = \"donut\";\n SHAPE_TYPE[\"DOUBLE_BRACE\"] = \"bracePair\";\n SHAPE_TYPE[\"DOUBLE_BRACKET\"] = \"bracketPair\";\n SHAPE_TYPE[\"DOUBLE_WAVE\"] = \"doubleWave\";\n SHAPE_TYPE[\"DOWN_ARROW\"] = \"downArrow\";\n SHAPE_TYPE[\"DOWN_ARROW_CALLOUT\"] = \"downArrowCallout\";\n SHAPE_TYPE[\"DOWN_RIBBON\"] = \"ribbon\";\n SHAPE_TYPE[\"EXPLOSION1\"] = \"irregularSeal1\";\n SHAPE_TYPE[\"EXPLOSION2\"] = \"irregularSeal2\";\n SHAPE_TYPE[\"FLOWCHART_ALTERNATE_PROCESS\"] = \"flowChartAlternateProcess\";\n SHAPE_TYPE[\"FLOWCHART_CARD\"] = \"flowChartPunchedCard\";\n SHAPE_TYPE[\"FLOWCHART_COLLATE\"] = \"flowChartCollate\";\n SHAPE_TYPE[\"FLOWCHART_CONNECTOR\"] = \"flowChartConnector\";\n SHAPE_TYPE[\"FLOWCHART_DATA\"] = \"flowChartInputOutput\";\n SHAPE_TYPE[\"FLOWCHART_DECISION\"] = \"flowChartDecision\";\n SHAPE_TYPE[\"FLOWCHART_DELAY\"] = \"flowChartDelay\";\n SHAPE_TYPE[\"FLOWCHART_DIRECT_ACCESS_STORAGE\"] = \"flowChartMagneticDrum\";\n SHAPE_TYPE[\"FLOWCHART_DISPLAY\"] = \"flowChartDisplay\";\n SHAPE_TYPE[\"FLOWCHART_DOCUMENT\"] = \"flowChartDocument\";\n SHAPE_TYPE[\"FLOWCHART_EXTRACT\"] = \"flowChartExtract\";\n SHAPE_TYPE[\"FLOWCHART_INTERNAL_STORAGE\"] = \"flowChartInternalStorage\";\n SHAPE_TYPE[\"FLOWCHART_MAGNETIC_DISK\"] = \"flowChartMagneticDisk\";\n SHAPE_TYPE[\"FLOWCHART_MANUAL_INPUT\"] = \"flowChartManualInput\";\n SHAPE_TYPE[\"FLOWCHART_MANUAL_OPERATION\"] = \"flowChartManualOperation\";\n SHAPE_TYPE[\"FLOWCHART_MERGE\"] = \"flowChartMerge\";\n SHAPE_TYPE[\"FLOWCHART_MULTIDOCUMENT\"] = \"flowChartMultidocument\";\n SHAPE_TYPE[\"FLOWCHART_OFFLINE_STORAGE\"] = \"flowChartOfflineStorage\";\n SHAPE_TYPE[\"FLOWCHART_OFFPAGE_CONNECTOR\"] = \"flowChartOffpageConnector\";\n SHAPE_TYPE[\"FLOWCHART_OR\"] = \"flowChartOr\";\n SHAPE_TYPE[\"FLOWCHART_PREDEFINED_PROCESS\"] = \"flowChartPredefinedProcess\";\n SHAPE_TYPE[\"FLOWCHART_PREPARATION\"] = \"flowChartPreparation\";\n SHAPE_TYPE[\"FLOWCHART_PROCESS\"] = \"flowChartProcess\";\n SHAPE_TYPE[\"FLOWCHART_PUNCHED_TAPE\"] = \"flowChartPunchedTape\";\n SHAPE_TYPE[\"FLOWCHART_SEQUENTIAL_ACCESS_STORAGE\"] = \"flowChartMagneticTape\";\n SHAPE_TYPE[\"FLOWCHART_SORT\"] = \"flowChartSort\";\n SHAPE_TYPE[\"FLOWCHART_STORED_DATA\"] = \"flowChartOnlineStorage\";\n SHAPE_TYPE[\"FLOWCHART_SUMMING_JUNCTION\"] = \"flowChartSummingJunction\";\n SHAPE_TYPE[\"FLOWCHART_TERMINATOR\"] = \"flowChartTerminator\";\n SHAPE_TYPE[\"FOLDED_CORNER\"] = \"folderCorner\";\n SHAPE_TYPE[\"FRAME\"] = \"frame\";\n SHAPE_TYPE[\"FUNNEL\"] = \"funnel\";\n SHAPE_TYPE[\"GEAR_6\"] = \"gear6\";\n SHAPE_TYPE[\"GEAR_9\"] = \"gear9\";\n SHAPE_TYPE[\"HALF_FRAME\"] = \"halfFrame\";\n SHAPE_TYPE[\"HEART\"] = \"heart\";\n SHAPE_TYPE[\"HEPTAGON\"] = \"heptagon\";\n SHAPE_TYPE[\"HEXAGON\"] = \"hexagon\";\n SHAPE_TYPE[\"HORIZONTAL_SCROLL\"] = \"horizontalScroll\";\n SHAPE_TYPE[\"ISOSCELES_TRIANGLE\"] = \"triangle\";\n SHAPE_TYPE[\"LEFT_ARROW\"] = \"leftArrow\";\n SHAPE_TYPE[\"LEFT_ARROW_CALLOUT\"] = \"leftArrowCallout\";\n SHAPE_TYPE[\"LEFT_BRACE\"] = \"leftBrace\";\n SHAPE_TYPE[\"LEFT_BRACKET\"] = \"leftBracket\";\n SHAPE_TYPE[\"LEFT_CIRCULAR_ARROW\"] = \"leftCircularArrow\";\n SHAPE_TYPE[\"LEFT_RIGHT_ARROW\"] = \"leftRightArrow\";\n SHAPE_TYPE[\"LEFT_RIGHT_ARROW_CALLOUT\"] = \"leftRightArrowCallout\";\n SHAPE_TYPE[\"LEFT_RIGHT_CIRCULAR_ARROW\"] = \"leftRightCircularArrow\";\n SHAPE_TYPE[\"LEFT_RIGHT_RIBBON\"] = \"leftRightRibbon\";\n SHAPE_TYPE[\"LEFT_RIGHT_UP_ARROW\"] = \"leftRightUpArrow\";\n SHAPE_TYPE[\"LEFT_UP_ARROW\"] = \"leftUpArrow\";\n SHAPE_TYPE[\"LIGHTNING_BOLT\"] = \"lightningBolt\";\n SHAPE_TYPE[\"LINE_CALLOUT_1\"] = \"borderCallout1\";\n SHAPE_TYPE[\"LINE_CALLOUT_1_ACCENT_BAR\"] = \"accentCallout1\";\n SHAPE_TYPE[\"LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR\"] = \"accentBorderCallout1\";\n SHAPE_TYPE[\"LINE_CALLOUT_1_NO_BORDER\"] = \"callout1\";\n SHAPE_TYPE[\"LINE_CALLOUT_2\"] = \"borderCallout2\";\n SHAPE_TYPE[\"LINE_CALLOUT_2_ACCENT_BAR\"] = \"accentCallout2\";\n SHAPE_TYPE[\"LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR\"] = \"accentBorderCallout2\";\n SHAPE_TYPE[\"LINE_CALLOUT_2_NO_BORDER\"] = \"callout2\";\n SHAPE_TYPE[\"LINE_CALLOUT_3\"] = \"borderCallout3\";\n SHAPE_TYPE[\"LINE_CALLOUT_3_ACCENT_BAR\"] = \"accentCallout3\";\n SHAPE_TYPE[\"LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR\"] = \"accentBorderCallout3\";\n SHAPE_TYPE[\"LINE_CALLOUT_3_NO_BORDER\"] = \"callout3\";\n SHAPE_TYPE[\"LINE_CALLOUT_4\"] = \"borderCallout4\";\n SHAPE_TYPE[\"LINE_CALLOUT_4_ACCENT_BAR\"] = \"accentCallout3=4\";\n SHAPE_TYPE[\"LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR\"] = \"accentBorderCallout4\";\n SHAPE_TYPE[\"LINE_CALLOUT_4_NO_BORDER\"] = \"callout4\";\n SHAPE_TYPE[\"LINE\"] = \"line\";\n SHAPE_TYPE[\"LINE_INVERSE\"] = \"lineInv\";\n SHAPE_TYPE[\"MATH_DIVIDE\"] = \"mathDivide\";\n SHAPE_TYPE[\"MATH_EQUAL\"] = \"mathEqual\";\n SHAPE_TYPE[\"MATH_MINUS\"] = \"mathMinus\";\n SHAPE_TYPE[\"MATH_MULTIPLY\"] = \"mathMultiply\";\n SHAPE_TYPE[\"MATH_NOT_EQUAL\"] = \"mathNotEqual\";\n SHAPE_TYPE[\"MATH_PLUS\"] = \"mathPlus\";\n SHAPE_TYPE[\"MOON\"] = \"moon\";\n SHAPE_TYPE[\"NON_ISOSCELES_TRAPEZOID\"] = \"nonIsoscelesTrapezoid\";\n SHAPE_TYPE[\"NOTCHED_RIGHT_ARROW\"] = \"notchedRightArrow\";\n SHAPE_TYPE[\"NO_SYMBOL\"] = \"noSmoking\";\n SHAPE_TYPE[\"OCTAGON\"] = \"octagon\";\n SHAPE_TYPE[\"OVAL\"] = \"ellipse\";\n SHAPE_TYPE[\"OVAL_CALLOUT\"] = \"wedgeEllipseCallout\";\n SHAPE_TYPE[\"PARALLELOGRAM\"] = \"parallelogram\";\n SHAPE_TYPE[\"PENTAGON\"] = \"homePlate\";\n SHAPE_TYPE[\"PIE\"] = \"pie\";\n SHAPE_TYPE[\"PIE_WEDGE\"] = \"pieWedge\";\n SHAPE_TYPE[\"PLAQUE\"] = \"plaque\";\n SHAPE_TYPE[\"PLAQUE_TABS\"] = \"plaqueTabs\";\n SHAPE_TYPE[\"QUAD_ARROW\"] = \"quadArrow\";\n SHAPE_TYPE[\"QUAD_ARROW_CALLOUT\"] = \"quadArrowCallout\";\n SHAPE_TYPE[\"RECTANGLE\"] = \"rect\";\n SHAPE_TYPE[\"RECTANGULAR_CALLOUT\"] = \"wedgeRectCallout\";\n SHAPE_TYPE[\"REGULAR_PENTAGON\"] = \"pentagon\";\n SHAPE_TYPE[\"RIGHT_ARROW\"] = \"rightArrow\";\n SHAPE_TYPE[\"RIGHT_ARROW_CALLOUT\"] = \"rightArrowCallout\";\n SHAPE_TYPE[\"RIGHT_BRACE\"] = \"rightBrace\";\n SHAPE_TYPE[\"RIGHT_BRACKET\"] = \"rightBracket\";\n SHAPE_TYPE[\"RIGHT_TRIANGLE\"] = \"rtTriangle\";\n SHAPE_TYPE[\"ROUNDED_RECTANGLE\"] = \"roundRect\";\n // eslint-disable-next-line @typescript-eslint/no-duplicate-enum-values\n SHAPE_TYPE[\"ROUNDED_RECTANGULAR_CALLOUT\"] = \"wedgeRoundRectCallout\";\n SHAPE_TYPE[\"ROUND_1_RECTANGLE\"] = \"round1Rect\";\n SHAPE_TYPE[\"ROUND_2_DIAG_RECTANGLE\"] = \"round2DiagRect\";\n SHAPE_TYPE[\"ROUND_2_SAME_RECTANGLE\"] = \"round2SameRect\";\n SHAPE_TYPE[\"SMILEY_FACE\"] = \"smileyFace\";\n SHAPE_TYPE[\"SNIP_1_RECTANGLE\"] = \"snip1Rect\";\n SHAPE_TYPE[\"SNIP_2_DIAG_RECTANGLE\"] = \"snip2DiagRect\";\n SHAPE_TYPE[\"SNIP_2_SAME_RECTANGLE\"] = \"snip2SameRect\";\n SHAPE_TYPE[\"SNIP_ROUND_RECTANGLE\"] = \"snipRoundRect\";\n SHAPE_TYPE[\"SQUARE_TABS\"] = \"squareTabs\";\n SHAPE_TYPE[\"STAR_10_POINT\"] = \"star10\";\n SHAPE_TYPE[\"STAR_12_POINT\"] = \"star12\";\n SHAPE_TYPE[\"STAR_16_POINT\"] = \"star16\";\n SHAPE_TYPE[\"STAR_24_POINT\"] = \"star24\";\n SHAPE_TYPE[\"STAR_32_POINT\"] = \"star32\";\n SHAPE_TYPE[\"STAR_4_POINT\"] = \"star4\";\n SHAPE_TYPE[\"STAR_5_POINT\"] = \"star5\";\n SHAPE_TYPE[\"STAR_6_POINT\"] = \"star6\";\n SHAPE_TYPE[\"STAR_7_POINT\"] = \"star7\";\n SHAPE_TYPE[\"STAR_8_POINT\"] = \"star8\";\n SHAPE_TYPE[\"STRIPED_RIGHT_ARROW\"] = \"stripedRightArrow\";\n SHAPE_TYPE[\"SUN\"] = \"sun\";\n SHAPE_TYPE[\"SWOOSH_ARROW\"] = \"swooshArrow\";\n SHAPE_TYPE[\"TEAR\"] = \"teardrop\";\n SHAPE_TYPE[\"TRAPEZOID\"] = \"trapezoid\";\n SHAPE_TYPE[\"UP_ARROW\"] = \"upArrow\";\n SHAPE_TYPE[\"UP_ARROW_CALLOUT\"] = \"upArrowCallout\";\n SHAPE_TYPE[\"UP_DOWN_ARROW\"] = \"upDownArrow\";\n SHAPE_TYPE[\"UP_DOWN_ARROW_CALLOUT\"] = \"upDownArrowCallout\";\n SHAPE_TYPE[\"UP_RIBBON\"] = \"ribbon2\";\n SHAPE_TYPE[\"U_TURN_ARROW\"] = \"uturnArrow\";\n SHAPE_TYPE[\"VERTICAL_SCROLL\"] = \"verticalScroll\";\n SHAPE_TYPE[\"WAVE\"] = \"wave\";\n})(SHAPE_TYPE || (SHAPE_TYPE = {}));\nvar CHART_TYPE;\n(function (CHART_TYPE) {\n CHART_TYPE[\"AREA\"] = \"area\";\n CHART_TYPE[\"BAR\"] = \"bar\";\n CHART_TYPE[\"BAR3D\"] = \"bar3D\";\n CHART_TYPE[\"BUBBLE\"] = \"bubble\";\n CHART_TYPE[\"BUBBLE3D\"] = \"bubble3D\";\n CHART_TYPE[\"DOUGHNUT\"] = \"doughnut\";\n CHART_TYPE[\"LINE\"] = \"line\";\n CHART_TYPE[\"PIE\"] = \"pie\";\n CHART_TYPE[\"RADAR\"] = \"radar\";\n CHART_TYPE[\"SCATTER\"] = \"scatter\";\n})(CHART_TYPE || (CHART_TYPE = {}));\nvar SCHEME_COLOR_NAMES;\n(function (SCHEME_COLOR_NAMES) {\n SCHEME_COLOR_NAMES[\"TEXT1\"] = \"tx1\";\n SCHEME_COLOR_NAMES[\"TEXT2\"] = \"tx2\";\n SCHEME_COLOR_NAMES[\"BACKGROUND1\"] = \"bg1\";\n SCHEME_COLOR_NAMES[\"BACKGROUND2\"] = \"bg2\";\n SCHEME_COLOR_NAMES[\"ACCENT1\"] = \"accent1\";\n SCHEME_COLOR_NAMES[\"ACCENT2\"] = \"accent2\";\n SCHEME_COLOR_NAMES[\"ACCENT3\"] = \"accent3\";\n SCHEME_COLOR_NAMES[\"ACCENT4\"] = \"accent4\";\n SCHEME_COLOR_NAMES[\"ACCENT5\"] = \"accent5\";\n SCHEME_COLOR_NAMES[\"ACCENT6\"] = \"accent6\";\n})(SCHEME_COLOR_NAMES || (SCHEME_COLOR_NAMES = {}));\nvar MASTER_OBJECTS;\n(function (MASTER_OBJECTS) {\n MASTER_OBJECTS[\"chart\"] = \"chart\";\n MASTER_OBJECTS[\"image\"] = \"image\";\n MASTER_OBJECTS[\"line\"] = \"line\";\n MASTER_OBJECTS[\"rect\"] = \"rect\";\n MASTER_OBJECTS[\"text\"] = \"text\";\n MASTER_OBJECTS[\"placeholder\"] = \"placeholder\";\n})(MASTER_OBJECTS || (MASTER_OBJECTS = {}));\nvar SLIDE_OBJECT_TYPES;\n(function (SLIDE_OBJECT_TYPES) {\n SLIDE_OBJECT_TYPES[\"chart\"] = \"chart\";\n SLIDE_OBJECT_TYPES[\"hyperlink\"] = \"hyperlink\";\n SLIDE_OBJECT_TYPES[\"image\"] = \"image\";\n SLIDE_OBJECT_TYPES[\"media\"] = \"media\";\n SLIDE_OBJECT_TYPES[\"online\"] = \"online\";\n SLIDE_OBJECT_TYPES[\"placeholder\"] = \"placeholder\";\n SLIDE_OBJECT_TYPES[\"table\"] = \"table\";\n SLIDE_OBJECT_TYPES[\"tablecell\"] = \"tablecell\";\n SLIDE_OBJECT_TYPES[\"text\"] = \"text\";\n SLIDE_OBJECT_TYPES[\"notes\"] = \"notes\";\n})(SLIDE_OBJECT_TYPES || (SLIDE_OBJECT_TYPES = {}));\nvar PLACEHOLDER_TYPES;\n(function (PLACEHOLDER_TYPES) {\n PLACEHOLDER_TYPES[\"title\"] = \"title\";\n PLACEHOLDER_TYPES[\"body\"] = \"body\";\n PLACEHOLDER_TYPES[\"image\"] = \"pic\";\n PLACEHOLDER_TYPES[\"chart\"] = \"chart\";\n PLACEHOLDER_TYPES[\"table\"] = \"tbl\";\n PLACEHOLDER_TYPES[\"media\"] = \"media\";\n})(PLACEHOLDER_TYPES || (PLACEHOLDER_TYPES = {}));\n/**\n * NOTE: 20170304: BULLET_TYPES: Only default is used so far. I'd like to combine the two pieces of code that use these before implementing these as options\n * Since we close <p> within the text object bullets, its slightly more difficult than combining into a func and calling to get the paraProp\n * and i'm not sure if anyone will even use these... so, skipping for now.\n */\nvar BULLET_TYPES;\n(function (BULLET_TYPES) {\n BULLET_TYPES[\"DEFAULT\"] = \"&#x2022;\";\n BULLET_TYPES[\"CHECK\"] = \"&#x2713;\";\n BULLET_TYPES[\"STAR\"] = \"&#x2605;\";\n BULLET_TYPES[\"TRIANGLE\"] = \"&#x25B6;\";\n})(BULLET_TYPES || (BULLET_TYPES = {}));\n// IMAGES (base64)\nconst IMG_BROKEN = 'data:image/png;base64,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';\nconst IMG_PLAYBTN = 'data:image/png;base64,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AAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKREkRUAAACwrUpLSwuGDRvWfMCAAS26du3avKysrLiioqKkZcuWzZs1a1bcvHnz0tLS0rJsNtusuLi4ebNmzUoLCgo+8/eijY2N9Zs3b66pra2tqqur21xTU1NdVVVVs2nTptqNGzdWbdiwoeYvf/nL5hUrVlQtWLBgw6xZs6pqamoaJQYAAEDaKYABAACIiIghQ4aUHnTQQW379u3bql27dq3at2/fpkWLFq2bN29eWVpa2qpZs2bNCwsLm2ez2fLCwsLyoqKi8sLCwtKknK+hoaG6vr6+qqGh4S91dXV/aWhoqNq8eXNVTU3NuqqqqvUbNmxYu2rVqjWrV69e99Zbb6177rnnPpgzZ06NTwYAAABJogAGAADIA8OGDWt+xBFHdBwwYECnLl26dGjdunXHFi1adCgtLe1YUlLSvlmzZq0KCgqK07yDwsLCssLCwrKIaPdp/zuNjY21mzdvXrdp06ZVNTU172/YsGHl2rVr31+2bNnKBQsWrHjyySffnzVrVpVPGAAAAE1Fpuexsd9HfaF+ZcSal0ptCAAAIAE6deqUPf744zvtueeeXbp3796lbdu2XSorKzuXlpZ2KS0t7VBYWFhhSztGQ0PDxpqampU1NTXL169fv+yDDz5Y9s477yybPXv2sj/96U8rVqxYUWdLAAAAbE9t9q6Jog4f/TUFMAAAQEJks9nMt7/97Y4jRozo1bdv397t2rXrXl5e3rWsrKxzcXFx+4gosKUmp7G2tnZVTU3Nso0bNy5btWrV0tdff/2tJ598cvG999672noAAADYFgpgAACAhPne977X6a9Fb/v27Xu1bNmyV1lZWa8kvXOXLauvr9/wl7/8ZdG6desWL1u2bNHChQsX/fGPf1w8derUjbYDAADAliiAAQAAmqhsNps59dRTuxx66KH9+/Tp87n27dv3Ly8v719UVOSRzXlq06ZNKzZu3Pj6+++//8abb775xqOPPvrG3XffvcpmAAAA+CsFMAAAQBNx6qmndvniF784qHfv3v3btWv3uYqKis8VFhaW2wxbUl9fv37Dhg1vfPDBB68vXrz4jccee2z+jTfeuNxmAAAA8pMCGAAAYBc45phjWn/rW9/aq3///kPatGnTv6Kiop9HOLO9NDQ0VG/cuPGtNWvWLFy4cOGcO+6445WHHnporc0AAACknwIYAABgJzjjjDO6f+lLX9qrV69eg1u3bj2orKysR0RkbIadJFddXb103bp18xcvXjz30UcffeXqq69+x1oAAADSRwEMAACwnZWWlhb86le/2u3QQw8d1r17931btmw5qLCwsMxmaEoaGhqqP/zww/nvvPPOzGeeeWbW2LFj36ipqWm0GQAAgGRTAAMAAGwHP/7xj7t+9atf3bdXr15D27Ztu1c2m21jKyRJXV3dmg8++OCVRYsWvfznP/95xh/+8IdltgIAAJA8CmAAAIBtcOKJJ7Y75ZRTDujXr9+w1q1bD81ms61shTSpq6tbt3bt2pfffPPNWbfccsvUe++9d7WtAAAANH0KYAAAgE+hoqKi4IILLhg0YsSI/bp27bpfy5YtB2YymUKbIR/kcrmGDz/8cP6777474/nnn59x4YUXvrZx40aPiwYAAGiCFMAAAAAf4/jjj2/7/e9//8D+/fsf2Lp1630KCgpKbAUiGhsbN61fv37eW2+9NeWGG2545u67715lKwAAAE2DAhgAAOB/ZLPZzAUXXPC5I4888sDu3bsfWFFRsVtEFNgMbFl1dfWSd999d8qsWbNmnnvuuS+vW7euwVYAAAB2DQUwAACQ10pLSwsuvfTSQYcccsjBXbt2HVFWVtbDVmDb1dbWrnr//fdfmDp16uRf/vKXL65evbreVgAAAHYeBTAAAJB3Bg0aVHrBBRd8fs899zywQ4cOBxQVFbWwFdj+Ghsba9euXTtrzpw5T59//vmTX3755WpbAQAA2LEUwAAAQF4YNmxY8/POO+/gIUOGHOZ9vrDz/W0ZfNFFFz07a9asKlsBAADY/hTAAABAarVq1arwyiuv3HfEiBEjO3TocFBhYWGZrcCu19DQUP3+++8/O2XKlIk/+clPZm7cuLHRVgAAALYPBTAAAJAqrVq1Kvztb3+7/3777Xd4x44dRxQWFpbbCjRdDQ0NG99///0pM2bMeOqHP/zhC8pgAACAz0YBDAAApMJZZ53V45vf/OaRvXr1GllaWtrVRiB5ampq3l28ePHEO++8c9LVV1/9jo0AAABsPQUwAACQWMOHDy+/6KKLvjB48OCjW7RoMdBGID0+/PDDV+fNmzfhvPPOe3L69Ol/sREAAIBPRwEMAAAkSqtWrQpvuOGGQ/bbb79/atOmzX6ZTCZrK5BeuVyubs2aNTNmzJjx2JgxYyavW7euwVYAAAA+ngIYAABIhB//+Mddv/e9732lZ8+e/1RcXNzWRiD/1NbWfvD2228/dssttzz029/+9l0bAQAA+L8UwAAAQJNVUVFRcO21137+4IMPPrZ169b7ZTKZAlsBIqJxzZo1M59//vnxp5122hR3BQMAAPx/CmAAAKDJOeWUUzqefvrpx/bu3ftL2Wy2jY0AH6e+vn7j0qVLH/vd7373x+uvv36ZjQAAAPlOAQwAADQJ2Ww2c+uttx5wyCGHnNC6deu9I8LdvsDWaFy7du1L06ZN+/OPfvSjZ1evXl1vJQAAQD5SAAMAALtU//79S6655pp/2nPPPY8tLy/vayPAZ1VTU7NswYIF488999wHp06dutFGAACAfKIABgAAdomf//znPU855ZQTu3btemRhYWGZjQDbW2NjY92KFSuevOWWW+689NJLF9kIAACQDxTAAADATuMxz8Cusn79+rlPP/30f5188slT6+rqcjYCAACklQIYAADY4fr27Vv8hz/84a+Pee5nI8CuUlNT8+68efPu/8EPfvDgwoULN9kIAACQNgpgAABghxkyZEjpNddc89XBgwefWFxc3MFGgKaitrZ21dy5c+/5yU9+8uc5c+bU2AgAAJAWWyqAPYoNAADYJqNHj+4wb968n06ZMuXRYcOGnaH8BZqa4uLi9sOGDTtjypQpj86bN++nJ510UntbAQAA0s4dwAAAwFY599xze33/+9//dufOnY/IZDJZGwGSIpfL1S1fvvzJG2644fbLLrvsbRsBAACSyiOgAQCAz+y8887r+53vfOfbHTt2PDyTyRTaCJBUuVyuYcWKFU/cdNNN//XrX/96sY0AAABJowAGAAC22WWXXTboG9/4xg9at249zDaAtFm7du2su++++9pzzjnnNdsAAACSQgEMAABsNcUvkE8UwQAAQJIogAEAgE9N8Qvks7Vr18665557rvv5z38+3zYAAICmaksFcGHlwOj6UV9orIqoWZG1PQAAyBO/+MUvet9xxx3nHHrooT8pLS3tYiNAPiotLe2y7777HvP973+/X1lZ2ZIpU6assxUAAKCpKetcHwXlH/01BTAAAOS5M844o/u99957zpe//OWflZeX94qIjK0AeS5TXl7e8+CDDx71/e9/v3dEvDVjxowPrQUAAGgqFMAAAMD/ceKJJ7a77777fjJq1Kh/KS8v7xOKX4B/lCkvL+99+OGHj/rWt77VfvXq1Qvnz59fbS0AAMCutqUC2DuAAQAgzwwdOrTs+uuvP6l///4nFRYWltkI20NjY2Ns2rQpqquro6amJurr62PTpk2xefPmqK+vj+rq6qivr4/NmzfHpk2boqGhYZv/fxUWFkZJSUk0a9YsioqKoqysLIqKiqJZs2ZRUlISRUVFUVpa+r9/FRQUCIjtoqGhoeq11167a8yYMffMmTOnxkYAAIBdZUvvAFYAAwBAnujUqVP2nnvuGbXXXnudnM1mK22Ej9PQ0BAbN26MDRs2/J+/Nm7cGBs3boyamprYtGlTbNq0KWpqaqK2trbJnqe4uDhKSkqitLT0f/9eUVERFRUV0aJFi//zV0VFRRQWFvog8LHq6urWvvjii7eceOKJf169enW9jQAAADubAhgAAPLcXXfdddAXv/jF00tLS7vZRn7L5XKxYcOGWLt2baxbty7Wrl37d3+tW7cuNmzYkPd7atGiRbRu3TpatWoVrVu3jjZt2vzvf27dunW0aNHCh4morq5e+sgjj1zzne98Z6ptAAAAO5MCGAAA8tTVV189+MQTTzyzoqJioG3kj8bGxli5cmUsX748Pvjgg1i9evX//n3t2rXR2NhoSZ9RYWFhtGrVKtq1axdt27b937937tw5OnTo4LHTeWbDhg3z77333qvOPPPMebYBAADsDApgAADIM1/72tfaXHrppad27979qIjQRKVUQ0NDrFq1KlasWBHvv//+//595cqVTfqRzGlXXFwcHTp0iI4dO0bnzp2jY8eO0alTp2jXrp1HS6dYLpdrfOeddx76+c9/fv2ECRPW2QgAALAjKYABACBP9OrVq9ldd931jT322OM7hYWFZTaSHh9++GG88847sXTp0njvvfdixYoVsXr16mhoaLCchCgsLIz27dtHp06dolu3btG9e/fo3r27x0mnTENDQ9W8efNu++Y3v/nHJUuWbLYRAABgR1AAAwBAHrjrrrtG/NM//dOZJSUlXWwj2davXx9Lly6Nd955539L3w8//NBiUqqysvJ/y+C//tWqVSuLSbiamppljz322G9Gjx49xTYAAIDtTQEMAAAp9qtf/arPD3/4w5+1atVqL9tIno0bN8aSJUvirbfeikWLFsV7770XmzZtspg8V1JSEl27do0+ffpE3759o3fv3lFeXm4xCbRu3bqXr7322ivGjh27yDYAAIDtRQEMAAApNGjQoNI77rjju7vttttJBQUFWRtJhtWrV8ebb74ZixcvjiVLlsTy5cujsbHRYtiigoKC6Ny5c/Tu3Tt69+4d/fr1i7Zt21pMQjQ2Nta98cYbd33rW9+6ff78+TU2AgAAfFYKYAAASJHS0tKCBx988Jj99tvvn7PZbBsbaboaGhri7bffjrfeeisWLFgQS5YscXcv201FRUX06tUr+vbtG3379o2ePXtGYWGhxTRhdXV1a2bMmHHjV77ylYdqamr85gcAALDNFMAAAJASp59+erdf/vKX51ZWVu5jG03T6tWr47XXXouFCxfGm2++GRs3brQUdooWLVpE3759Y8CAATFw4EB3CDdh69evf/E//uM//vPqq69+xzYAAIBtoQAGAICEGzRoUOm99977w969ex+byWTc4teErF+/PubNmxcLFiyIN954Q+FLk9GiRYvo169fDBgwIPbYY4+orKy0lCYkl8s1LF68eNyJJ554rcdCAwAAW0sBDAAACXbNNdcMOemkk35RVlbWyzZ2vVwuF++++27MnTs3XnvttViyZIl3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B7lcrm7y5Mm//vKXv/yIbQAAwK63pXcAK4ABAMg7paWlBTNnzjyzT58+x9vG39uwYUOMGzcuZsyY4VHPQF7KZDKx3377xde//vWoqKiwkH+waNGiP+27775X1dTUeCwEAADsQgpgAAD4H926dctOnjz5V506dRppG/9fLpeLqVOnxp///OfYuHGjhQB5r6KiIkaNGhX777+/x0L/g+XLlz9+6KGHXvLuu+/W2QYAAOwaWyqAvQMYAIC8MXz48PInnnjiynbt2o2wjf/vnXfeiWuvvTaee+652Lx5s4UARMTmzZtjzpw58dprr0XPnj2jRYsWlvI/Kioq+n7rW98aMnXq1Ofee+89f3AAAMAusKV3ACuAAQDIC9/+9rc73n777X9o0aLFANv4b1VVVXHXXXfFvffeG+vXr7cQgI+wbt26eP7552P9+vWx2267RVFRkaVERElJSefjjjvuoA8++GDKK6+88hcbAQCAnUsBDABAXjv//PP7XXzxxX8oKSnpbBv/bfr06XHttdfGokWLLAPgU3jnnXdi2rRp0bp16+jc2R8nERHZbLbyC1/4whElJSUvTp48eY2NAADAzqMABgAgb/3ud7/b60c/+tFVRUVFrWwjYs2aNXHzzTfHpEmTora21kIAtkJtbW289NJL8c4770Tfvn2jtLQ073dSWFhYNnz48C/26dNn4UMPPbTMpwQAAHYOBTAAAHnp1ltv3f+b3/zmfxYWFjbP913kcrl4/vnn4/rrr4/ly5f7cAB8BitXroxp06ZFRUVFdOvWLTKZTF7vo6CgIDto0KBDBw0atOiBBx54xycEAAB2vC0VwJmex8Z+H/WF+pURa17ym6wAACTTww8//KXDDjvsXzKZTN6/rPGDDz6I22+/Pd544w0fDIDtbMCAAfGtb30r2rRpk/e7yOVyjVOmTPn1yJEjH/LJAACAHavN3jVR1OGjv6YABgAgdV555ZXTPve5z30r3/fQ0NAQjz32WDz++ONRV1fngwGwg2Sz2Tj66KPjC1/4QhQUFOT9Pl5//fU79tprr9/7ZAAAwI6jAAYAIC9ks9nMyy+/fFafPn2Oz/ddvPvuu3HbbbfFe++954MBsJN069YtvvOd70S3bt3yfhdLliy5f5999rmypqam0ScDAAC2PwUwAACpV1paWjBr1qyzevfufVw+7yGXy8WTTz4ZDz74oLt+AXaBbDYbxxxzTBxxxBF5fzfw0qVLHxg6dOjlSmAAANj+FMAAAKRar169mk2ePHlsu3btDsrnPaxcuTJuueWWePvtt30oAHaxnj17ximnnBIdOnTI6z2sXr16yiGHHPIvS5Ys2exTAQAA28+WCuDCyoHR9aO+0FgVUbMia3sAADRpQ4cOLXvqqacub9Omzf75uoNcLhfPPPNMXH/99bF27VofCoAmYP369TFlypQoKSmJnj17RiaTycs9NG/evPtJJ500ZPLkyc+sWLHCoykAAGA7KetcHwXlH/01BTAAAIk1ZMiQ0kceeeSKVq1a7Z2vO6iuro7bb789nnjiiWhs9IRNgKaksbEx5s+fH++//34MGDAgstn8/DlLaWlpp6997WuDn3rqqadXrlxZ75MBAACfnQIYAIDUOfTQQ1s8+OCDv2/ZsuUe+bqDOXPmxNVXX+2RzwBN3PLly+OFF16Ijh075u0joUtLSzudcMIJ+7/00ktPv/3227U+FQAA8NkogAEASJVhw4Y1v++++37TsmXLQfl4/vr6+hg/fnz88Y9/jNpaP0MHSILNmzfHiy++GJs3b47ddtstCgoK8m4HxcXFbY866qg9n3vuuaeXL1/ucdAAAPAZKIABAEiNI488snLcuHG/b9GixcB8PP97770XV111VcyZM8eHASCBFi1aFC+//HL069cvWrRokXfnLykp6XDcccftP2fOnGcWLVq0yScCAAC2jQIYAIBUOPLIIyvvvPPO35aXl++Wj+d/+umn48Ybb4wPP/zQhwEgwf7yl7/ECy+8ECUlJdGrV6+8O3+zZs3aHHXUUfspgQEAYNspgAEASLxjjz227W233faH5s2b98m3s1dVVcXNN98cTz31VDQ2NvowAKRAY2NjzJ8/P5YtWxYDBgyIZs2a5dX5mzVr1uaYY4458M0333xm4cKFNT4RAACwdRTAAAAk2qGHHtritttuuzofy9+33347rrnmmli8eLEPAkAKvf/++/HKK69Enz59orKyMq/Ons1mK4888sh9Zs6c+dTSpUs3+zQAAMCnpwAGACCxjjjiiJb33nvvteXl5f3y6dy5XC4mTZoUN998c1RVVfkgAKRYVVVVTJ06NbLZbPTp0ycymUzenL24uLjtV7/61c+/8sorTy1evLjWpwEAAD4dBTAAAIl06KGHtrj33nt/l2/lb3V1ddx0000xefLkyOVyPggAeSCXy8WCBQvi3Xffjd133z2y2fz5mUyzZs1aH3300fvNmDHjSXcCAwDAp6MABgAgcYYOHVo2fvz4qysqKgbk07mXLVsWV111lUc+A+SplStXxiuvvBKf+9znoqKiIm/O3axZszZHH3300GeeeebJFStW1PkkAADAlimAAQBIlCFDhpQ++uij17Rs2XL3fDr31KlT49prr42NGzf6EADksaqqqpg+fXq0bds2unTpkjfnLikpaT9q1KihTz755JMrV66s90kAAICPt6UCuMB6AABoSjp16pSdMGHCv1dWVu6RL2dubGyMcePGxR133BF1dW56AiCitrY2br755hg/fnw0NjbmzbkrKyv3mDBhwr9369bNXQkAALCNFMAAADQZrVq1Kpw+ffolbdq02T9fzlxdXR2/+93vYtKkSd73C8DfyeVy8fjjj8fvf//7qK6uzptzt2nTZv8pU6Zc0qpVq0KfAgAA2HoKYAAAmoSKioqC2bNnX9KuXbuD8uXMS5cujYsuuijmz5/vAwDAx3r11VfjoosuiqVLl+bNmdu1a3fQ7Nmz/72iosLPrgAAYCu5iAYAoEmYOXPmz9q1a3dIvpz35ZdfjiuuuCLWrVsnfAA+0bp16+KKK66Il19+OW/O3K5du4Nnzpz5M+kDAMDWUQADALDLvfjii2N69OgxKh/Omsvl4oEHHogbbrghamtrhQ/Ap1ZbWxs33HBDPPDAA3nz2oAePXqMevHFF8dIHwAAPj0FMAAAu9SkSZO+NnDgwFPy4ax1dXVx8803x8SJE73vF4BtksvlYuLEiXHLLbdEXV1dXpx54MCBJ0+aNOlr0gcAgE9HAQwAwC7z6KOPHnXggQeekw9nXbduXfz617+OWbNmCR6Az2zmzJnx61//Ol9eJZA58MADz3n00UePkjwAAHyywsqB0fWjvtBYFVGzImtDAADsEDfeeOO+Rx999EWZTKYw7Wddvnx5XHXVVbFy5UrBA7DdbNiwIWbPnh0DBw6MioqKtB8307179/179uz56sMPP7xc+gAA5LuyzvVRUP7RX1MAAwCw011xxRV7fPe7372qoKCgWdrPOmfOnPjtb38bGzduFDwA2111dXVMmzYtOnfuHB07dkz1WTOZTOHuu+9+eJs2bV6aNGnSKukDAJDPFMAAADQZZ5xxRvef/exnvy0sLCxP+1knTJgQd999d9TX1wsegB2moaEhXnrppchms9G3b99UnzWTyRTttddeB/3lL395dubMmRukDwBAvlIAAwDQJBx00EEVf/jDH64pLi7ulOZz5nK5eOCBB+Kxxx4TOgA77c+eBQsWRF1dXfTv3z8ymUxqz1pQUFBywAEHDJs+ffqkpUuXbpY+AAD5aEsFcIH1AACwMwwaNKj0vvvuu7qsrKxXms9ZV1cX1113XUyaNEnoAOx0EydOjOuvvz7q6upSfc6ysrJef/rTn67u379/idQBAODvKYABANjhKioqCh577LGLKyoqBqb5nNXV1XHNNdfE7NmzhQ7ALvPKK6/ElVdeGVVVVak+Z4sWLQZOnDhxbEVFhZ9vAQDA33CBDADADjdz5syftW3b9sA0n3HdunVx2WWXxRtvvCFwAHa5xYsXx2WXXRZr165N9TnbtWt34MyZM38mcQAA+P8UwAAA7FBPPvnkqB49eoxK8xlXrVoVV1xxRSxfvlzgADQZK1asiCuuuCJWrlyZ6nP26NFj1KRJk0ZJHAAA/lth5cDo+lFfaKyKqFmRtSEAALbZjTfeuO+XvvSlCzOZTGp/8fDdd9+NK6+8MtatWydwAJqc6urqmDVrVvTv3z8qKytTe85u3boN79mz57yHH37Yb2MBAJAXyjrXR0H5R39NAQwAwA5x3nnn9T311FOvLigoKE7rGV977bW45pprorq6WuAANFmbN2+OGTNmRI8ePaJ9+/apPGMmkykYNGjQIYWFhVOee+45v5UFAEDqKYABANipjjrqqFb/8R//8YdmzZq1SusZX3755bj++uujrq5O4AA0eQ0NDfHSSy9Fp06dolOnTqk8Y0FBQXbYsGGfnz9//qQ33nhjk9QBAEizLRXA3gEMAMB21a1bt+wNN9zwnyUlJR3TesYpU6bEjTfeGPX19QIHIDHq6+vjxhtvjKlTp6b2jCUlJZ1uuOGG/+jWrZu7GgAAyFsKYAAAtqunn376XyorK/dI6/kmTZoUd955ZzQ2NgobgMRpbGyMO+64I5588snUnrGysnLw008//UtpAwCQrxTAAABsN88///w3unTp8k9pPd/EiRNj3LhxkcvlhA1AYuVyubj//vtTXQJ36dLlS88+++yJ0gYAIB95BzAAANvFTTfdNPzII488L5PJZNJ4vsceeyzGjx8vaABS47XXXotmzZpF3759U3m+zp0779urV695Dz/88DJpAwCQNlt6B7ACGACAz+wXv/hF7x/+8IdXFxQUNEvj+R544IF45JFHBA1A6ixYsCDq6upiwIABqTtbJpPJDBo06ODGxsbnpk6dul7aAACkiQIYAIAd5oADDqj43e9+99tmzZq1TeP5xo0bF5MmTRI0AKm1aNGi2Lx5cwwcODB1ZysoKMjut99+w5577rnH33vvvc3SBgAgLbZUAHsHMAAA2yybzWbuvPPOfyktLe2exvNNmDBB+QtAXpg0aVI89NBDqTxbaWlpj3vuuedfstlsRtIAAOQDBTAAANvs+eef/06HDh0OTePZHn744Xj44YeFDEDeeOSRR+LPf/5zKs/WoUOHw5599tlvSxkAgHygAAYAYJvcd999hw8ePPjUNJ7t/vvvjwkTJggZgLzz2GOPxX333ZfKs+25554/+NOf/nSYlAEASDvvAAYAYKudccYZ3ceMGXN5QUFBcdrONnHixHjkkUeEDEDeWrx4cWSz2ejbt2/ajpbp06fPvn/5y18mz5w5c4OkAQBIsi29A1gBDADAVhk2bFjzG2+88Q/NmjVrl7azPfroo6l99CUAbI2FCxdGUVFR9OvXL1XnKigoKD7wwAP3e/LJJx9dsWJFnaQBAEiqLRXAHgENAMBWuffee39ZWlraPW3nevzxx+PBBx8UMAD8jz//+c8xceLE1J2rtLS0x3333fdLCQMAkFYKYAAAPrVJkyaN6tSp0xEpPFeMHz9ewADwD8aPHx+TJ09O3bk6der0hUmTJn1VwgAApJFHQAMA8Kmcd955fU888cR/z2QyRWk618yZM+Puu+8WMAB8jNdeey06duwYnTt3TtW5unbtuk9BQcHzzz333DopAwCQNN4BDADAZ3LEEUe0vOKKK67NZrOVaTrXyy+/HDfffHPkcjkhA8DHyOVyMXv27OjSpUt06tQpNefKZDJF++yzz/CpU6c+9u67726WNAAASeIdwAAAbLNsNpu55ZZb/q2kpKRjms61YMGCuPnmm6OxsVHIAPAJGhsb4+abb44333wzVecqLS3tcvfdd5+fzWYzUgYAIC0UwAAAbNGkSZO+3rZt2wPTdKZly5bFDTfcEPX19QIGgE+prq4urr322li+fHmqztWuXbsDH3/88VESBgAgLTwCGgCAj3XZZZcN+upXvzo2k8mk5hcH33///bjyyiujqqpKwACwlerq6uLll1+OIUOGRHl5eWrO1aVLl31LS0unPvPMM2ukDABAEngENAAAW61///4lJ5988q8ymUxRWs60YcOG+P3vfx8bN24UMABso40bN8bvfve7VP15WlBQkP3hD394ft++fYslDABA4q9vrQAAgI/y4IMPnl1WVtYrLeeprq6O3/zmN7Fq1SrhAsBntGrVqrjyyiujuro6NWcqKyvr8/DDD58lXQAAkk4BDADA/zF+/Pgju3XrdnRazlNfX5/KdxYCwK60fPnyuO6666K+vj41Z+rRo8dXx40bd4R0AQBIMgUwAAB/53vf+16nI4444py0nCeXy8Vtt90Wb7zxhnABYDt7/fXX47bbbotcLpeaMx155JHnfvvb3+4oXQAAkkoBDADA/6qoqCi4+OKLLywsLCxPy5nGjx8fs2bNEi4A7CCzZs2Khx56KDXnKSwsrPj1r399QUVFhZ+bAQCQSC5kAQD4XxMnThxdWVk5OC3nef7552PixImCBYAd7LHHHosXXnghNeeprKzc89FHHz1RsgAAJFFh5cDo+lFfaKyKqFmRtSEAgDxxwQUX7DZq1KgLM5lMYRrO8+qrr8Ytt9ySqkdSAkBT/7O3d+/e0a5du1Scp2PHjkNzudxzU6ZMWSddAACamrLO9VHwMc/wcwcwAADRt2/f4h//+McXZzKZVPwG4HvvvRc33HBDNDY2ChcAdpKGhoa47rrrYtmyZak4T0FBQfbss88e27dv32LpAgCQqGtZKwAAYPz48T8qKyvrkYazbNiwIX7/+99HbW2tYAFgJ9u0aVP8/ve/j40bN6biPGVlZb3GjRs3RrIAACSJAhgAIM/ddNNNw/v06XN8Gs5SX18f1157baxdu1awALCLrFmzJq699tqor69PxXn69ev3jd///vdDJQsAQFIogAEA8thBBx1Uceyxx/5rRGTScJ477rgjFi9eLFgA2MUWLVoUd955Z1qOU/CNb3zj34YNG9ZcsgAAJOIC1goAAPLXzTfffFZxcXG7NJxl4sSJMX36dKECQBMxbdq0mDRpUirOUlJS0unOO+88Q6oAACSBAhgAIE/913/914FdunT5UhrO8tprr8Wf//xnoQJAEzN+/PhYsGBBKs7SrVu3o2+66abhUgUAoKlTAAMA5KEvfelLlV/5yld+lYazrFixIq6//vpobGwULAA0MY2NjXHdddfFihUr0nCczHHHHfergw46qEKyAAA0ZQpgAIA8dPXVV5+ezWYrk36OmpqauPbaa2PTpk1CBYAmatOmTXHttddGTU1N4s+SzWbb3njjjT+RKgAATZkCGAAgz9x6663Du3Tp8uWknyOXy8Utt9wSK1euFCoANHErV66MW2+9NXK5XOLP4lHQAAA0dQpgAIA8MnTo0LKvfvWrv0jDWSZMmBBz584VKgAkxJw5c+Kxxx5LxVlGjRr1i6FDh5ZJFQCApkgBDACQR+64444fFRcXd0z6OV5++eV45JFHBAoACfPQQw+l4he4SkpKOt5xxx0/lCgAAE2RAhgAIE9cfvnlu/fs2XNU0s/xwQcfxB133JGKR0gCQL7J5XJx2223xZo1axJ/lp49ex57+eWX7y5VAACaGgUwAEAe6NatW/a73/3uv2YymURf/9XX18cNN9wQ1dXVQgWAhKqqqoobb7wx6uvrE32OTCZT8N3vfvdX3bp1y0oVAICmRAEMAJAHxo8ff0pZWVmvpJ/jnnvuiaVLlwoUABJuyZIlcd999yX+HGVlZT3Hjx9/ikQBAGhKFMAAACn385//vOeAAQNGJ/0c06dPjylTpggUAFJi8uTJMWPGjMSfY8CAAaN//vOf95QoAABNhQIYACDFstls5qyzzjo3k8kk+tGEK1asiLvvvlugAJAyd911V6xYsSLRZ8hkMtmzzjrr3Gw2m5EoAABNgQIYACDFxo0b98XKysq9knyG2trauOGGG6K2tlagAJAyf/1zfvPmzYk+R2Vl5V7jxo0bKVEAAJoCBTAAQEoNHz68/OCDDz4t6ee4//77Y/ny5QIFgJRavnx5jBs3LvHnGDFixI+HDRvWXKIAAOxqCmAAgJS69dZbT8tms22TfIYZM2bEc889J0wASLnJkyfHzJkzE32G4uLitrfffvtp0gQAYFdTAAMApNBVV121R48ePb6S5DOsXLky7rrrLmECQJ64++6744MPPkj0GXr27PnVK664Yg9pAgCwKymAAQBSprS0tOAb3/jGT5N8rdfY2Bi333679/4CQB6pqamJ2267LRobG5N8jIJvfvObZ5aWlvqZGwAAu+6i1AoAANJlwoQJX6uoqBiQ5DOMHz8+Fi1aJEwAyDNvvvlmPPjgg4k+Q4sWLQY9+OCDx0gTAIBdRQEMAJAiRx55ZOWwYcN+kOQzzJ07N5544glhAkCemjhxYixYsCDRZxg+fPiPjjjiiJbSBABgV1AAAwCkyBVXXHFyUVFRRVLnr6qqijvvvDNyuZwwASBP5XK5uP3226O6ujqxZygqKmrxm9/85mRpAgCwKyiAAQBS4vzzz+/Xu3fv45J8httvvz0+/PBDYQJAnlu3bl3cfvvtiT5D7969jz///PP7SRMAgJ1NAQwAkALZbDZz6qmn/jyTyST2+m769OkxZ84cYQIAERExe/bsmDFjRmLnz2QyBaeeeurPs9lsRpoAAOxMCmAAgBT44x//eERlZeXgpM6/du3auPfeewUJAPyde+65J9atW5fY+SsrKwf/6U9/+oIkAQDYmRTAAAAJ17dv3+JDDjnkR0k+w9133x01NTXCBAD+Tk1NTdx9992JPsPBBx/8o759+xZLEwCAnUUBDACQcHfdddc3S0pKOiV1/smTJ8e8efMECQB8pLlz58azzz6b2PlLSko63nPPPd+SJAAAO4sCGAAgwb70pS9VDhw48KSkzr9mzZoYP368IAGALXrggQdizZo1iZ2/f//+Jx111FGtJAkAwM6gAAYASLArrrji1MLCwvIkzp7L5eK2226LTZs2CRIA2KJNmzbFbbfdFrlcLpHzFxYWll1++eU/kCQAADuDAhgAIKF+8Ytf9O7evftXkjr/s88+G2+88YYgAYBP5Y033ojnn38+sfN369bt6F/96ld9JAkAwI6mAAYASKgf/vCHP8pkMom8nvvggw/igQceECIAsFXGjRsX69atS+TsmUym4NRTT/2xFAEA2NEUwAAACXTdddcNa9eu3YFJnD2Xy8Udd9wRtbW1ggQAtsqmTZvizjvvTOz8bdq02f+mm27aT5IAAOxICmAAgIQpLS0t+NrXvnZ6Uud/4YUXYuHChYIEALbJq6++GjNmzEjs/Mccc8zpFRUVfiYHAMAO42ITACBhbr/99oMrKip2S+LsGzZsiHHjxgkRAPhM7r///qiqqkrk7OXl5X3/67/+6wgpAgCwoyiAAQASpKKiouCwww47Nanz33vvvYn9YS0A0HRs2LAh7r///sTOf9BBB/1zq1atCiUJAMCOoAAGAEiQ+++//+iysrKeSZx9zpw58dJLLwkRANguXnjhhViwYEEiZy8tLe32xz/+8StSBABgR1AAAwAkRN++fYv33Xfff07i7LW1tXHvvfcKEQDYru6+++6oq6tL5Oz77bffKf379y+RIgAA25sCGAAgIW6++eZRxcXFbZM4+yOPPBJr164VIgCwXa1atSoee+yxRM6ezWbb3njjjV+TIgAA25sCGAAgAYYOHVq21157fSeJs7/33nvxxBNPCBEA2CEmTpwYK1asSOTsQ4YM+c7QoUPLpAgAwPakAAYASIBrr732xKKiosqkzZ3L5eKee+6JxsZGIQIAO0R9fX3cddddkcvlEjd7UVFR5bXXXnuCFAEA2J4UwAAATdwBBxxQMWDAgG8kcfYZM2bEW2+9JUQAYId6880348UXX0zk7AMGDPjG8OHDy6UIAMD2ogAGAGjirrrqqhOKiooqkjb3pk2b4oEHHhAgALBT3H///VFbW5u4uYuKilpcffXV7gIGAGC7UQADADRhBx10UEX//v0Teffvww8/HB9++KEQAYCdYv369TFhwoREzj5w4MBvHHDAARVSBABge1AAAwA0Yf/5n/95bGFhYfOkzb1q1aqYPHmyAAGAnerpp5+O1atXJ27uwsLC8ssuu2yUBAEA2B4UwAAATdQBBxxQMWjQoNFJnP3uu++O+vp6IQIAO1V9fX3cddddiZx99913/+bQoUPLpAgAwGelAAYAaKIuv/zyYwsLC8uTNvfcuXNjwYIFAgQAdokFCxbE3LlzEzd3UVFRi9/97ndflyAAAJ+VAhgAoAkaOnRo2aBBgxL37t+6urr405/+JEAAYJf605/+FHV1dYmbe/fdd//mkCFDSiUIAMBnoQAGAGiCfvOb33ylqKioZdLmfu655xL53j0AIF1Wr14dzz33XOLmLioqann11VcfLUEAAD4LBTAAQBPTq1evZoMHD/5m0uaurq6ORx55RIAAQJPwyCOPRHV1deLmHjJkyLe6deuWlSAAANtKAQwA0MTcdNNNxxQXF7dN2twTJkyIqqoqAQIATUJVVVUifzmtuLi43a233uouYAAAtpkCGACgCWnVqlXhXnvtdVLS5l61alU8++yzAgQAmpTJkyfHqlWrEjf30KFDR7dq1apQggAAbAsFMABAE3LLLbccXlJS0jlpcz/44INRX18vQACgSamvr48HH3wwcXOXlJR0vummmw6VIAAA20IBDADQRGSz2cwBBxzw7aTNvWjRonjppZcECAA0SS+99FIsXrw4cXOPGDHiO9lsNiNBAAC2lgIYAKCJuOaaa/YuLy/vm7S5H3roocjlcgIEAJqkXC6XyLuAy8vL+1111VV7SRAAgK2lAAYAaCK+8pWvfDdpM8+bNy8WLlwoPACgSVu4cGG8+uqrrg8BAMgLCmAAgCbgsssuG1RZWblPkmbO5XIxfvx44QEAifDAAw8k7qklrVu33veSSy7pLz0AALaGAhgAoAkYNWrUCUmbefbs2bFs2TLhAQCJsGzZsnjllVcSN/cJJ5xwovQAANgaCmAAgF3sn//5nzt37NjxiCTN3NjYGA888IDwAIBEGT9+fDQ0NCRq5k6dOn1h9OjRHaQHAMCnpQAGANjFfvSjH30tk8kk6rps2rRpsWrVKuEBAImyatWqeOGFFxI1cyaTKfzpT386SnoAAHxaCmAAgF1o0KBBpX369Plqkmaur6+PCRMmCA8ASKQJEyZEXV1dombu27fvV/r27VssPQAAPg0FMADALnTZZZcdXlRUVJGkmadOnRpr164VHgCQSOvXr48pU6YkauaioqLK3/zmN0dIDwCAT0MBDACwi2Sz2cy+++57UpJmrqurc/cvAJB4jz76aOLuAt5///1PymazGekBAPBJFMAAALvI1VdfPbSsrKx3kmaeMmVKbNiwQXgAQKJt2LAhnn/++UTNXFZW1ueqq67aS3oAAHwSBTAAwC7y5S9/+bgkzVtfXx8TJ04UHACQCo8//nji7gL+0pe+dLzkAAD4JApgAIBdYPTo0R3atm07IkkzT5s2LdatWyc8ACAVPvzww5g+fXqiZm7fvv2I0aNHd5AeAABbogAGANgFfvrTn47KZDKFSZm3vr4+HnnkEcEBAKnyyCOPRH19fWLmzWQyhT/96U+/JjkAALZEAQwAsJN16tQp26dPn6OTNLO7fwGANFq3bl1MmzYtUTP36dPnmE6dOmWlBwDAx1EAAwDsZFddddUB2Wy2dVLmbWxsjEmTJgmOVOvYsWN06OCJmgD5aNKkSdHY2JiYebPZbOurrrrqAMkBAPBxFMAAADvZiBEjvp6keV988cVYtWqV4Ei1Ll26xIUXXhinnXZadO3a1UIA8siqVavipZdecj0JAEBqKIABAHaiM844o3tlZeXeSZk3l8vFxIkTBUdeyGQyMXjw4PjVr34VY8aMcUcwQB55/PHHI5fLJWbeysrKvc8444zukgMA4KMogAEAdqJTTjnlqxGRScq8CxYsiPfee09w5JVMJhN77713XHjhhTFmzJho3769pQCk3HvvvRcLFy5M1B9X/3NdCQAA/4cCGABgJ+nVq1ezXr16fTlJM3v3L/nsr0XwBRdcECeffHK0bdvWUgBSLGnXPb169fpyr169mkkOAIB/pAAGANhJrrjiioOLiopaJmXeBN4JAztEYWFhDB8+PC688MIYPXp0VFZWWgpACi1YsCCWLVuWmHmLiopaXnnllYdIDgCAf6QABgDYSYYPH/6VJM2btHfhwY5WVFQUI0aMiEsuuSRGjx4dLVu2tBSAFMnlcvH4448naub99tvvK5IDAOAfKYABAHaC0aNHd6isrByalHnXrl0bL7/8suDgI/y1CL744ovjhBNOiBYtWlgKQEq89NJLsW7dusTMW1lZudfo0aM7SA4AgL+lAAYA2AlOP/30o5J07fXMM89EQ0OD4GALiouL47DDDouxY8fGqFGjoqyszFIAEq6hoSGeeeaZJI1c8D/XmQAA8P8vEq0AAGDHymazmX79+n05KfPW1tbGlClTBAefUnFxcYwcOTIuvfTSGDVqVJSWlloKQII9//zzUVtbm5h5+/Xr9+VsNpuRHAAAf6UABgDYwX7zm9/sWVJS0jkp886YMSOqq6sFB1uppKQkRo4cGZdcckkcffTRUVJSYikACVRdXR0zZ85M0p8/na+44orBkgMA4K8UwAAAO9gXvvCFLyVl1lwuF08//bTQ4DNo3rx5HHXUUXHJJZfEyJEjI5vNWgpAwjz11FORy+USM++RRx75ZakBAPBXCmAAgB1oyJAhpZ07dz4iKfO+/vrrsWLFCsHBdlBeXh6jRo2KSy+9VBEMkDArVqyI119/PTHzdunS5fD+/ft79AQAABGhAAYA2KHGjh17aGFhYWJeCOruX9j+KioqYtSoUXHxxRfH4YcfHkVFRZYC4LpouyosLGz+H//xHwdLDQCACAUwAMAOteeeex6ZlFnXrl0b8+bNExrsIK1atYrjjz8+LrroohgxYkQUFPh2DKApmzdvXqxZsyYx8+61115HSg0AgAgFMADADnPMMce0bt269b5Jmfe5556LxsZGwcEO1qZNmxg9enRcfPHFimCAJqyxsTGee+65JP35MvyYY45pLTkAAPykAQBgBznzzDMPz2Qyibje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FpafffbZvaQFAJA+CmAAgE9p//3375+EOV9//XVhAXmjvLw8Ro0aFf/+7/8eI0eOjGw2aymA67FP6fOf//xAaQEApI8CGADgU+rRo8fuTX3G2traePvtt4UF5J2KiooYNWpUXHzxxXH44Yc3+XdvAum2ePHiRLySo1evXoOkBQCQPgpgAIBPqXXr1k3+DoklS5ZEQ0ODsIC81apVqzj++OPj4osvjhEjRkRBgW97gZ2voaEhlixZ0uTnbNOmjQIYACCFfCcMAPApDBkypLR58+a9m/qcb775prAAIqJ169YxevToGDt2rCIYcF32MZo3b95n0KBBpdICAEgX3wEDAHwKp556av9MJtPkr53eeustYQH8jTZt2sTo0aPjvPPOi+HDhyuCAddlfyOTyRT84Ac/+Jy0AADSxXe+AACfwuDBg5v84/Hq6+tj0aJFwgL4CJ06dYqTTz45/u3f/i323nvvyGQylgLsUIsXL07Eqzn23HPPgdICAEgXBTAAwKfQpUuXAU19xnfeeSfq6uqEBbAFnTt3jjFjxiiCgR2utrY23n333SRc53oPMABAyiiAAQA+hZYtW/Zv6jN6/DPAp9elS5cYM2ZMnHvuuTF48GALAfL2+iwJ17kAAGwdBTAAwCcYPnx4eUlJSeemPqfHPwNsvV69esVpp50W55xzTvTvrwMB8u/6rLS0tPPw4cPLpQUAkB4KYACAT/Ctb31rt4ho8s8IXbx4sbAAtlGfPn3irLPOinPOOSd22203CwG2i4T8gl7m29/+dj9pAQCkhwIYAOAT7L777k2+CVi7dm1s2LBBWACfUZ8+feLss8+OM888M3r27GkhwGfy4Ycfxrp165r8nAMHDlQAAwCkSJEVAABsWadOnZr8D8TefvttQQFsRwMGDIgBAwbEggULYvz48bF06VJLAbb5Oq1Vq1audwEA2GkUwAAAn6CyslIBDJCnBgwYEP3794958+bFQw89FO+++66lAFtlyZIlsddeezX1613PvgcASBEFMADAFnTq1CnbvHnzXk19ziVLlggLYAfJZDIxePDg2GOPPeLll1+OBx98MFauXGkxQGqu05o3b967Xbt2RatXr66XGABA8nkHMADAFowZM6ZnJpPJNuUZGxsbPZoUYCfIZDKx9957x4UXXhhjxoyJ9u3bWwrwiZYuXRqNjY1NesaCgoLsqaee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k8nE7NmzY+LEibFmzRoNAXif/VNSzJo161kTAwBongTAAAC70O233/7KOeecszU/P78022sdMGBAtG/f3tWu0My9+uqrMWnSpFi1apVmALyPjh07xgEHHJCIWhsbG6u/8Y1v/NXUAACaJwEwAMAutHLlyob169fP6tat2+hsrzWVSsXhhx8ekyZNMjhohubMmROTJ0+OJUuWaAbAh3D44YdHKpVKRK3r16+fVVFR0WhqAADNU54WAADsWq+++mpirts77LDDDAyamTfffDP+/d//PX7yk58IfwE+pFQqFSNGjEhMva+88sozpgYA0Hw5AQwAsIvddNNNz5166qnV+fn5rbO91m7dukX//v1j4cKFBgc5btmyZfHYY4/F/PnzNQPgIzrggAOic+fOiai1sbFxy4033jjL1AAAmi8BMADALrZy5cqG8vLyGT179vx0Euo9+uijBcCQw5YvXx7jxo0T/AJ8wv1SUpSXlz9TXl7eYGoAAM2XABgAYDeYMWPGUxdccEEiAuAhQ4ZE69ato7q62uAgh6xcuTImTJgQc+fOjUwmoyEAH1ObNm3i0EMPTUy9zz777FOmBgDQvPkGMADAbvDVr371lYaGhk1JqLWgoCCOOOIIQ4McsW7duvj5z38ed955Z8yZM0f4C/AJjRw5MvLz8xNRa0NDw8abbrrpVVMDAGjenAAGANgNKisrm1atWjW9T58+5ySh3qOPPjqefPJJQREk2Pr16+Oxxx6L2bNn+3cZYBdJpVIxatSoxNS7cuXKadXV1WmTAwBo3pwABgDYTaZNm5aY6/c6duwYAwYMMDRIoA0bNsSvf/3r+Nd//dd49dVXhb8Au9CAAQOiY8eOian36aefftLUAAAQAAMA7CZf+9rX5tTX11ckpd6jjjrK0CBBqqqq4v77749vf/vb8eKLL0ZTU5OmAOxiRx55ZGJqra+vX/eNb3zjdVMDAMAV0AAAu0ltbW16xYoVT++///6fT0K9hx56aLRt2zaqqqoMD7LYli1bYsqUKfHcc8/F9u3bNQRgN2nbtm0MGTIkMfUuX778qdraWtc/AwDgBDAAwO70xz/+cUJSas3Pz4/jjjvO0CBL1dTUxKOPPhq33XZb/OUvfxH+Auxmxx57bOTn5yel3Myvf/3rCaYGAECEABgAYLe66667llZXV89PSr1HH310tGjRwuAgi7wd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qATAAABZ4umnn968fPnyxF3xN3r06GjXrp0BAgBZqUOHDnH88ccnru5ly5ZNmD59+hYTBADgoxIAAwBkkbvvvvtPmUymKUk1FxYWxumnn254AEBWOvPMMxP3yYpMJtN41113/dH0AAD4OATAAABZ5Be/+MWatWvXTkta3UcccUT06tXLAAGArNK7d+847LDDEld3eXn5X+6///51JggAwMchAAYAyDIPP/zwn5JWcyqVijPPPNPwAICsMmbMmEilUomr+8EHH/yT6QEA8HEJgAEAsszXv/71NzZs2DAraXUPHDgwDj74YAMEALLCoEGDYsCAAYmru6KiYuatt966wAQBAPi4BMAAAFlo3Lhxv01i3WPGjIm8PFtMAGDvysvLizFjxiSy9j//+c+/NUEAAD7RflgLAACyz/XXXz+nqqrqr0mru1evXnHUUUcZIACwVx1zzDHRvXv3xNW9adOmV2666aa5JggAwCchAAYAyFJ/+tOf7k1i3WPGjInS0lIDBAD2ijZt2sRZZ52VyNofeOCBe00QAIBPSgAMAJClbrrpprlJPAVcXFwcZ555pgECAHvFWWedFS1btkxc3Zs2bXrl5ptvnmeCAAB8UgJgAIAsNm7cuF8lse5Ro0ZF7969DRAA2KP69OkTI0eOTGTtjz322K9MEACAXUEADACQxcaOHTu7qqrqb0mrO5VKxfnnnx+pVMoQAYA9tv/4/Oc/n8j9R2Vl5d+uueaav5kiAAC7ggAYACDLTZ069bdJrLtv374xZMgQAwQA9ojDDjsssTeQTJ48+TcmCADAriIABgDIcpdeeumLVVVVryax9s9//vNRXFxsiADAblVaWhrnn39+Imuvqqr66+WXX/6SKQIAsKsIgAEAEuChhx76WRLrLisri9NPP90AAYDd6qyzzoqSkpIklp753e9+91MTBABgVxIAAwAkwA033DB3w4YNs5JY+3HHHRd9+vQxRABgt+jbt28cddRRiay9oqJi1te//vU3TBEAgF1JAAwAkBA///nPfxoR6aTVnUql4vOf/3zk5dl6AgC7Vn5+flx00UWRSqWSWH76F7/4xX+bIgAAu5q3cAAACXHHHXe8tW7duulJrL13795xzDHHGCIAsEudcMIJ0b1790TWXl5e/pc77rjjLVMEAGBXEwADACTI3XfffW8mk2lKYu1nnXVWtG3b1hAB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onv37vEv//IvccABBzSrdWcymaYnnnji9s997nPPeAoAAODDEQADAJBYDz/88NJjjjlmY+/evY+KiGZzFKq0tDSGDx8eq1evjvXr13sQAHLcwIED45prrol27do1t6VnZsyY8YOzzjprqqcAAAA+PAEwAACJdv/99795zDHHVO6zzz5HRDMKgVu0aBGHHXZYtGzZMhYuXBjpdNrDAJBjCgoK4pxzzonzzz8/WrRo0dyWn37uuefuOuWUUyZ4EgAA4KMRAAMAkHi///3v5w8bNmxF3759j2lO10GnUqno27dvDB06NBYvXhxbtmzxMADkiJ49e8YNN9wQgwcPblbf+434x7XPU6ZM+fbpp58+2ZMAAAAfnQAYAICc8OCDDy4ZNmzYin79+jWrEDgionXr1nHEEUdEfX19LF261MMAkGCpVCpOOOGEuOKKK6JNmzbNbv07wt9vnXPOOX/xNAAAwMcjAAYAIGc89NBDS4YNG7a8X79+xza3EDg/Pz8OPvjg6NWrV8yfPz8aGho8EAAJU1JSEpdffnmccMIJkZ+f3+zWn8lkGp944olvffazn53maQAAgI9PAAwAQE556KGHlo4cOXJdnz59RqWa252ZEdG1a9cYNmxYLFu2LCorKz0QAAnRt2/fuO6662K//fZrluvPZDLpp59++rvnnHPO054GAAD4ZATAAADknD/96U+LDj300KX7779/s7sOOiKiuLg4jjzyyCgpKYk333wz0um0hwIgSxUUFMRnP/vZuPDCC6OkpKRZ9iCdTjc88sgjt5x//vnTPREAAPDJCYABAMhJDz/88NId3wQelUqlmt09mqlUKvr06RMHH3xwLFy4MLZt2+ahAMgynTt3jrFjx8bQoUOjGV5aERH/CH+feOKJ2y+88MLnPBEAALBrCIABAMhZDz300JIePXq8NmjQoGPz8vJaNMcetG3bNkaNGhVNTU2xZMkSDwVAFkilUjF69Oi48soro0OHDs22D01NTdt++9vf/stll132oqcCAAB2HQEwAAA5bdKkSeXdu3efM3jw4GYbAufn58eAAQOiV69esWDBgti+fbsHA2Avad26dVx66aVx/PHHR35+frPtQ2NjY/WvfvWrf7nuuute81QAAMCuJQAGACDnTZ48eW1jY+OMI4444uiCgoKS5tqHrl27xqhRo2Lbtm2xcuVKDwbAHpRKpWLUqFExduzY6NWrV7PuRX19/fo77rjjK9/61rcWejIAAGDXEwADANAsPP/881UbNmx45rjjjjuqsLCwrLn2obCwMAYNGhT77bdfLF68OGpraz0cALtZ+/bt44orrogTTzwxCgub9/uU2tralTfffPPVP/nJT1Z7MgAAYPcQAAMA0Gz87W9/27p27doZJ5xwwsjCwsK2zbkXnTp1ipEjR0Z1dbXTwAC70ciRI+Pqq6+OHj16NPte1NTULL/hhhuu/e1vf7vOkwEAALuPABgAgGbltdde2zpv3rynTznllKFFRUWdmnMvCgsL49BDD4399tsvFi1a5DQwwC709qnfk08+udmf+o2I2Lx587yLL774unHjxm30dAAAwO71fgFwat9zYsTOftC4LmLjq610DwCAxOrVq1fhs88++69du3Y9QTciGhoaYurUqTF58uRobGzUEICPqaCgIE499dQYPXq04HeH8vLyp4499tjvrly5skE3AABg9+swrDYKuuz8ZwJgAAByWuvWrfNeeumlm/fdd9+zdeMfVq9eHffff38sWbJEMwA+ov322y8uuugi1z2/w8KFC38/fPjwnzY0NGR0AwAA9gwBMAAAzd7zzz9/8aGHHnp1RKR0IyKTycTMmTPjz3/+c9TV1WkIwAcoKSmJ8847L0aMGBGplL9Kdki//PLL9xx77LEPagUAAOxZ7xcA+wYwAADNwn333Tfn+OOP39yrV6/DQwgcqVQqevfuHcOHD49169ZFRUWFhwTgPRxyyCExduzY6N+/v/B3h0wm0/jMM8/828knnzxONwAAYM97v28AC4ABAGg2fve7370xePDgJf369Ts6lUrl60hEcXFxjBgxInr06BFLly6N2tpaTQHYoUOHDvGFL3whzjzzzCguLtaQHZqammoeeOCBWz73uc9N1w0AANg7BMAAALDDww8/vKygoOC54cOHH1FQUFCqI//QrVu3OO6446K0tDQWL14cTU1NmgI0Wy1btoxzzjknLr300ujevbuGvENtbe2K22677arbbrvtDd0AAIC9RwAMAADv8Oyzz25avHjx0yeddNKQoqKiTjryD3l5edGnT58YOXJkbN26NVatWqUpQLNz+OGHx1e+8pUYMGBA5OXlacg7VFVV/e3CCy+8/oEHHvDdAAAA2MsEwAAA8C7z58+vefbZZ58+44wz+hcXF/fSkf/RsmXLGDJkSOyzzz6xdOnSqKmp0RQg53Xs2DG++MUvximnnBItW7bUkHdZt27dMyeffPI3Xn755W26AQAAe9/7BcCpfc+JETv7QeO6iI2vttI9AAByWmFhYer555//0sEHH3y5bvxfTU1N8fzzz8f48eOjurpaQ4Cc07p16zjzzDPjyCOPdOJ35zJ///vff3rMMcfc39DQkNEOAADIDh2G1UZBl53/TAAMAAARMWnSpM8cc8wxt6RSKdfg7ERNTU1MmTIlpk2bFg0NDRoCJF5hYWGccsopcdJJJ0VRUZGG7EQ6na6fOnXqd88555y/6AYAAGSX9wuAXQENAAAR8Yc//GHhfvvt98aAAQOOysvLkwS8S2FhYQwYMCCGDh0amzZtinXr1mkKkFiDBw+Oq666KoYOHRoFBQUashONjY1Vv//972/5whe+MEs3AAAg+/gGMAAAfAgTJkxYXV1dPf3II4/8VGFhYTsd+b9KS0vjsMMOi/79+8eaNWti8+bNmgIkRu/evePyyy+PU045JUpLSzXkPWzdunXxLbfccs33vve9hboBAADZyTeAAQDgI+jTp0+LJ5988us9evQ4TTfe3/z58+ORRx6JlStXagaQtXr16hXnnHNODBgwQDM+wKpVq5444YQTfrBy5Ur3/QMAQBbzDWAAAPgYnnnmmfOHDx9+fSqVytON95bJZGL27Nkxbty4qKio0BAga3Tu3DnOOuusGDp0aKRSKQ15/z/Lm2bNmvXDk08++THdAACA7OcbwAAA8DH85je/eX3//fd//cADDzzSd4HfWyqViu7du8cxxxwT7dq1i2XLlkV9fb3GAHtN27Zt49xzz42LL744evToIfz9AI2NjdUPPvjgLZ/97Gf/ohsAAJAMvgEMAAAf0/jx41dFxPOHHXbYiMLCwjIdeW95eXnRu3fvOOqoo6KgoCBWrlwZjY2NGgPsMcXFxXHKKafEl770pejbt2/k5bnA4YPU1tau+MEPfnD9LbfcMk83AAAgQf/94xvAAADwyQwePLjVo48++s1u3bqdpBsfTn19fTzzzDMxderU2LZtm4YAu01ZWVmceuqpceSRR0ZRkQsbPqyVK1c+/ulPf/pHixcvdm0DAAAkjG8AAwDALvLkk0+edeSRR96USqVcl/MhCYKB3eXtE7/HHnus4PcjyGQyDbNmzfoP3/sFAIDk8g1gAADYRX7/+98v6NGjx2uHHHLIyPz8fL8x+SEUFBREv3794qijjoq8vLxYtWqVq6GBT6Rly5ZxwgknxBVXXBEHHXRQFBQUaMqH1NDQsOG3v/3t1z7/+c8/oxsAAJBcroAGAIBd7Lzzzut4991339m2bdvBuvHR1NTUxLPPPhvTpk2LLVu2aAjwoZWVlcXxxx8fxxxzTBQXF2vIR1RVVfW3a6+99vZHHnlkg24AAECyuQIaAAB2g06dOhVMmzZtbN++fT8XESkd+WgaGhri+eefjyeffDI2bJBFAO/7522cdNJJccQRR0RhodvKPobMokWL/nTsscf+pLKyskk7AAAg+QTAAACwG/3hD38Ydfrpp99WUFDQRjc+unQ6Ha+++mpMnTo1Vq5cqSHAP/Xq1StOOeWUGDp0aOTl5WnIx9DY2Fg1YcKEOy666KKZugEAALlDAAwAALvZaaed1vbee+/9docOHUbqxse3fPnymDZtWrz88suRTqc1BJqhvLy8OOyww+L444+P3r17a8gnsHHjxue//OUvf3fSpElVugEAALlFAAwAAHtAYWFh6qmnnjpv+PDh16RSKXeUfgIbNmyIGTNmxHPPPRc1NTUaAs1AcXFxjBo1Ko4++ujo2LGjhnwCmUym4ZVXXvl/J5100kMNDQ0ZHQEAgNzzfgFwftuDoufOfpDeFlFb7p0VAAB8WOl0On7zm9+8Xlpa+uLgwYM/VVhYWKYrH09xcXEMGDAgjj322GjTpk2sXbs2amtrNQZyUIcOHeKMM86ISy+9NAYOHBjFxcWa8gnU1tau+slPfnLjxRdf/IybFAAAIHcVd2+MvNKd/8wJYAAA2A1OPPHENvfdd9+tnTp1Olo3PrnGxsb429/+Fs8++2wsWrRIQyAH9OvXL44++ugYNmxYFBQUaMguUFFR8cwXv/jFf5s+ffoW3QAAgNzmCmgAANhLHn744RNGjx799YKCgta6sWusX78+Zs6cGc8//3xUV1drCCRIaWlpHHnkkXHUUUdF586dNWQXaWxs3DJ16tS7PvvZz/5FNwAAoHkQAAMAwF50ySWXdP3+97//rXbt2g3VjV2nsbExXnvttXjuuedi/vz5GgJZbMCAATFq1KgYPHiw0767WFVV1atf//rXv/e73/1urW4AAEDzIQAGAIC9rF27dvlTp0699OCDD740lUrl68iutXz58nj++efj5ZdfjpqaGg2BLFBSUhLDhw+PI444Inr37q0hu1gmk2mcN2/efSeeeOJvq6urfewXAACaGQEwAABkia9//ev73Xjjjf9aWlraXzd2vXQ6HW+++WY899xz8dprr0VjY6OmwB5UUFAQgwcPjlGjRsUBBxwQeXl5mrIbVFdXL/zP//zPf/3BD36wRDcAAKB5EgADAEAWOfjgg1v9+c9/vrZ3795jIiKlI7tHZWVlvPjii/HCCy/EunXrNAR2o65du8bIkSPj8MMPj7Zt22rI7pNZunTpn88888z/t3jx4nrtAACA5ksADAAAWejuu+8eePHFF9/WqlUrd6PuZuXl5fHqq6/GSy+9FOvXr9cQ2AU6d+4cI0aMiGHDhkW3bt00ZDerqalZ9tvf/vbOm266aa5uAAAAAmAAAMhS/fr1K3r44Ycv79+//4WpVMpdqXvA8uXL46WXXoqXX345qqurNQQ+grKyshg+fHiMGDHCd333kEwmk164cOEfzj777F8sXbp0u44AAAARAmAAAMh6P/3pT4d97nOf+2bLli176Mae0dDQEHPnzo2//vWvMXfu3Ni+Xa4CO9OyZcsYNGhQDBs2LA455JAoKCjQlD2ktrZ21R//+Mc7rr322r/rBgAA8E4CYAAASIA+ffq0ePTRR69wGnjPS6fTsXTp0nj11VedDIaIaNu2bQwbNiyGDRsWffr0ibw8fyTtSZlMpuG11177+ZlnnvmnioqKRh0BAADeTQAMAAAJ8uMf//jQCy644JutWrXaRzf2vLdPBs+ePTvmzp0bdXV1mkKzUFZWFoMHD45hw4ZF//79Iz8/X1P2gpqammX333//nTfccINv/QIAAO9JAAwAAAnTrl27/HHjxp37qU996qq8vDwb870kk8nEihUrYu7cuTFnzpxYsWJFZDIZjSEnpFKp6Nu3bwwbNiwGDRoUHTt21JS9qKmpqfbVV1/92ZgxY/5cWVnZpCMAAMD7EQADAEBCffnLX+5x++23f7V9+/aH68bet2XLlnjjjTdizpw5MW/evKivr9cUEqVly5Zx8MEHx6BBg+KQQw6J0tJSTckCGzdufPG73/3uv//iF79YoxsAAMCHIQAGAIAEKywsTE2cOPGMkSNHXlNQUNBaR7JDXV1dvPnmm/HGG2/EG2+8EevXr9cUslKXLl3ioIMOioMOOigOOOCAKCoq0pQs0djYuGXmzJk/PvPMMyc2NDS4XgAAAPjQBMAAAJADjjzyyNY/+9nPrujbt++5EZGnI9mluro6Fi5cGPPnz4958+ZFZWWlprBXtGvXLg455JAYMGBA9O/fP1q39nsjWSj91ltv/fmqq676xaxZs6q1AwAA+KgEwAAAkEN++ctfjhgzZsyNrVq16q0b2SmdTsfKlStj0aJFsXDhwli8eHFs27ZNY9gtSkpKol+/ftG/f//Yf//9o1evXpGX53dEslVNTc3yRx999EdXXnnlK7oBAAB8XAJgAADIMd26dSt8+OGHPzd48ODL8vPzbdyzXCaTiTVr1sTChQtj0aJFsWjRotiyZYvG8LGUlZVF//79/xn6du/ePVKplMZkuaampprXXnvtV2PGjHmgoqKiUUcAAIBPQgAMAAA56rjjjiv7r//6r8tdC508mzdvjuXLl8eKFSti+fLlsXjx4qipqdEY/pfi4uLo169f9O7dO/bZZ5/Yd999o6ysTGMSJJPJpJcsWfLn66677pfTp0/3mx8AAMAuIQAGAIAc99Of/nTIueeee3NpaWlf3UimxsbGWLlyZSxdujSWLVsWy5cvj3Xr1kUmk9GcZiKVSkWXLl1in332iT59+kSfPn2iV69eUVBQoDkJtXXr1sUPPvjgj6699tq/6wYAALArCYABAKAZaNeuXf64cePOGTp06BUFBQWtdST56uvrY+XKlf88KbxixYpYu3ZtpNNpzUm4vLy86Nq1a+yzzz7//KdXr17RsmVLzckBjY2NW/7617/+4pxzznm0srKySUcAAIBdTQAMAADNyIknntjmnnvuuXzfffcdk0qlHB3MMdu3b481a9bEmjVrYu3atbF27dooLy+PDRs2CIazUF5eXnTs2DG6desWXbt2jW7dukW3bt2iR48eUVhYqEE5JpPJNC5ZsuRR1z0DAAC7mwAYAACaoa9+9av7Xnfdddd16NDhCN3IfY2Njf8MhNetWxfr1q2LioqKWLduXWzbtk2DdrPS0tLo3LnzP//p0qVLdO3aNbp27eoK52Ziw4YNM//rv/7rxz/60Y+W6wYAALC7CYABAKAZ++UvfznirLPOuq64uNj3gZupmpqaWL9+/T//qaioiMrKyqisrIxNmzZFY2OjJn2AgoKCaN++fbRr1y7at28fHTt2jC5dukSnTp2ic+fOUVxcrEnN1NatW98aP378PVdcccXLugEAAOwpAmAAAGjm2rVrl//ggw+eOWLEiCsLCwvb6gjvtHnz5n+GwZs2bYrKysqorq6OLVu2xJYtW6K6ujqqq6sjk8nk3NpTqVS0bt06WrduHWVlZdGmTZsoLS39X2Fvu3btok2bNh4U/peGhobKl1566efnnHPO+OrqavevAwAAe5QAGAAAiIiIoUOHFt97770XHHjggRfk5+c7ssiHlk6n/xkEV1dXR01Nzfv+k8lkora2NtLpdNTX10dTU1PU1dXt0u8U5+XlRcuWLSM/Pz+KiooiLy8vWrVqFalUKoqLi3f6T0lJSbRq1eqfgW9paWnk5eUZMB9aU1NTzYIFC/745S9/+Y+zZ8+u0REAAGBvEAADAAD/y2mnndb2rrvuurRPnz5n5+XlFeoIe9LbgfDbtm/f/r7XUBcUFESLFi3++b/fDnxhT8pkMg1LliwZd8stt/xq0qRJVToCAADsTQJgAABgp0477bS2d95554X777//5wTBAP9XJpNpWLhw4QO33nrrHwS/AABAtni/ADi/7UHRc2c/SG+LqC33/gcAAHLZokWL6u69995X0un0swcddFCnkpKS3roC8A8VFRUz/7//7/+77aKLLpq6aNGiOh0BAACyRXH3xsgr3fnPBMAAAEDMnDmz8u67736qqalpWr9+/Ypbt27dN5VKpXQGaG4ymUx6zZo1U+65555/Peeccx6cOXNmpa4AAADZRgAMAAB8KDNnzqz88Y9//Gw6nZ4uCAaak7eD37vvvvtfzz///McEvwAAQDYTAAMAAB+JIBhoLgS/AABAEgmAAQCAj+XtILisrOyFvn37diwuLu4VEYJgIBdkKioqnrv33nu/PWbMmEcEvwAAQJK8XwCc2vecGLGzHzSui9j4aivdAwAA/unqq6/u8ZWvfOX8Pn36nJWXl9dCR4CkSafT9UuXLh3/X//1Xw/84he/WKMjAABAEnUYVhsFXXb+MwEwAADwkZ1xxhntb7/99rMPPPDA8/Pz81vrCJDtmpqaqhcsWPDgd77znUcmTpzotC8AAJBoAmAAAGC3GD58eMkPf/jDzwwePPjioqKijjoCZJv6+voNr7322u9vvPHGx2fPnl2jIwAAQC4QAAMAALvV0KFDi++5556zDjnkkPOKioq66giwt9XV1a19/fXXH7z++uvHC34BAIBcIwAGAAD2iFatWuXdc889w0455ZTzO3bseJSOAHtYZsOGDbOmTJny4PXXX/9qbW1tWksAAIBcJAAGAAD2uH/913/tf/7555/dq1ev0/Ly8lroCLC7pNPp+pUrV05+4IEHHvnOd76zSEcAAIBcJwAGAAD2mjPOOKP97bfffvYBBxzw2YKCgjY6AuwqjY2NVW+++eafv/e97z06YcKETToCAAA0FwJgAABgrxs+fHjJ97///dGDBg0aU1paur+OAB9XdXX1wtdee+3Rr371q1Nfe+21Wh0BAACaGwEwAACQVb761a/ue8EFF3y6b9++ZxUUFLTWEeCDNDY2bnnrrbfG/+EPf5j4ox/9aLmOAAAAzZkAGAAAyEpDhw4t/sEPfnDy4MGDz27dunV/HQHerbq6+s2XX375weuuu+7ppUuXbtcRAAAAATAAAJDlCgsLU3ffffeQ0aNHn9G1a9fj8vLyinQFmq90Ol1XXl4+bcqUKROuvfbav+sIAADA/yYABgAAEqNPnz4t/v3f/33UyJEjz2rfvv2nIiKlK9AsZDZt2vTXF1544bGvfe1rzzntCwAA8N4EwAAAQCJddNFFXa6++uqTDzzwwLNbtmzZTUcg99TV1a1ZsGDBuJ/+9KdP3n///et0BAAA4IMJgAEAgETr1q1b4d13333k4YcffmqHDh2OyMvLK9QVSK50Ot2wcePGWbNmzZp8/fXXz6qoqGjUFQAAgA9PAAwAAOSMo48+uvWtt956/CGHHHJKu3btBkdEnq5AIqQrKytfmzdv3uQ777xz+owZM6q1BAAA4OMRAAMAADnpuOOOK/vGN75x/CGHHHJa27ZtB4bvBUO2yVRVVc2dN2/epO9///vTpk+fvkVLAAAAPjkBMAAAkPNuu+22vmedddZJffr0Oa5Vq1a9dQT2ntra2uXLly+f/uijjz51xx13vKUjAAAAu5YAGAAAaFa+9KUvdbv44ouP7t+//wlOBsMekamqqpq7cOHCv/z+97+fcd9995VrCQAAwO4jAAYAAJqtSy65pOtll112jDAYdrl0VVXVvIULF/7lV7/61bO/+93v1moJAADAniEABgAAiIirr766x/nnnz9q//33P7JNmzZDUqlUga7Ah5fJZBoqKyv/vnjx4uf+9Kc/zbr33ntX6woAAMCeJwAGAAB4l379+hV97WtfGzRy5MhRPXv2PLaoqKizrsD/VV9fv37VqlXPvPDCC8/9+7//+5zFixfX6woAAMDeJQAGAAB4H61bt8678847Bx599NFHde/efURpaen+4apomq/M1q1bF69Zs+bF5557btY3v/nNOdXV1WltAQAAyB4CYAAAgI9g8ODBrcaOHXvI8OHDD+vevfvw1q1bHxACYXJXprq6+s01a9a88sorr7z8k5/8ZN5rr71Wqy0AAADZSwAMAADwCVx//fX7nHHGGYf169dvePv27Yfm5+e31hWSrLGxsXrjxo2vvvXWWy+PHz/+lR//+McrdQUAACA5BMAAAAC70Je//OUe55xzzvA+ffoM7tix45CioqKuukI2q6+vX7t27doXFy9ePGfixImv3Xvvvat1BQAAILkEwAAAALvRl7/85R6f+cxnBvfr129Qly5dDm/ZsqVAmL2qrq5u7bp16wS+AAAAOUoADAAAsIe0atUq75prrtnn2GOPPXi//fY7uH379oeUlpb2TaVS+brDbpKuqalZtnHjxnlvvfXW3GeffXbef/3Xfy2vra1Naw0AAEBuEgADAADsRQceeGDLq6+++oAhQ4Yc3LNnz4Pbtm17sGuj+biampqqq6qqXi8vL583Z86ceb/85S/nvfjii1t1BgAAoPkQAAMAAGSZoUOHFn/xi1/cf9CgQQf26NHjwHbt2h3YqlWr3qlUKk932CFdU1OzvLKycsHq1asXzJkzZ8Gf//znJTNmzKjWGgAAgOZNAAwAAJAAxx13XNkFF1xw4MEHH3xA165dDywtLd23pKRkn1QqVag7uS2TyTRs27ZtRXV19dJ169YtfOONNxZOmDBh4YQJEzbpDgAAAO8mAAYAAEiw8847r+OJJ57Yp3///vt16dKlT5s2bfZr3bp1v/z8/GLdSZampqaa6urqxZs3b16ybt26pQsXLlzy9NNPL33ooYc26A4AAAAflgAYAAAgx7Rr1y7/kksu6TFkyJCe++67b89OnTr1Kisr61VcXNyzZcuW3VKpVL4u7R2ZTKaprq6uvKamZtWWLVtWVlRUrFy6dOnK2bNnr7r//vvXVFZWNukSAAAAn4QAGAAAoBnp1KlTwec+97luQ4cO7bnPPvv0aNeuXafWrVt3Li4u7tqyZcvORUVFnfLy8lro1MeTTqe319fXr6+rq6uoqalZW11dvb6ysnL9ihUrVr/66qurHnzwwbUVFRWNOgUAAMDuIgAGAADgfznjjDPaH3bYYZ369OnTuUuXLp3Kysral5SUtC0uLu5YVFTUrqioqG2LFi065OfnlzaXnjQ1NW3dvn37xvr6+qr6+vrKmpqaDdu2bavasmXLpnXr1lUsXbp0/Ysvvrh+4sSJlZ4gAAAA9iYBMAAAAB9Lr169CkeNGtXuoIMOatexY8ey9u3bl7Zp06Z1SUlJWXFxcetWrVq1btGiRVlRUVHrwsLC1hGRX1hYWBoR+QUFBSV5eXkFeXl5u/0/LtPpdG06nW5sbGzcFhFNDQ0NW3f83+r6+vrq7du3b6mtra2uqamp3rZtW/XmzZurN23aVL1hw4YtCxYsqJo1a1bl0qVLt5s4AAAASSAABgAAYK/q169fUffu3Vvss88+xSUlJQVv//8LCwtT3bp1+8BTxuXl5VsbGhoyb//vbdu2Na5YsaJmzZo12xcvXlyvwwAAADQn7xcAF2gPAAAAu9vixYvrdwS11boBAAAAu0+eFgAAAAAAAADkBgEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4o0AIAAAAAAACA5GhoLIyCxoaIiEilIpNXGE1v/0wADAAAAAAAAJAghQUN/0x6MxGppvT/5L6ugAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAIb/v5272ZHiusM4/FZ1NUkz9sQwOF4EyZJtpJCwysa5jSy4n1xPEqRIuQFvvfGSgIwBOzGRQAQERnx0d1UW0cgWGvKxsMGvnmfVdc7/1OJsf+oCAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoMY3JP//9K8My551lzpAk293a7QAAAAAAAAD8iIw3r+SL7TpPxuSt4/ibJJuz20QDBgAAAAAAAHhzrJPp6NvHYcyyjLl7dJTPbl/Jp6sPLufSsM+5ec7q5YOrF0OeP/SVaAAAAAAAAIA3weH7u6zfm79dWDIMSw6225w785vsx3XyzasOby5ssz69c4sAAAAAAAAAr9n69C6bC9sT93a7rKdnORin5Otxynzi1JQcfiwCAwAAAAAAALxO69O7HH68TaaT98cp85R8vbp3Nfszv8q0LHn7xMF1sjk/ZzUPmZ/MmWefhAYAAAAAAAD4oayPdjn7223Gn7x6ZrXPnetX8mBKkpv3cufDd/Pufn5FL56SzcVtNheT3dNt8tQlAwAAAAAAAHyv1sm0ySv/9XtsNWZ3I/lHkgzHi7/4XY7WYz5yiwAAAAAAAAA/Ivtcv/3nPEyS1fHa42t5+vNLyX7JoRsCAAAAAAAAePPt1/nbV3/KvePn1Xc371/NYxEYAAAAAAAA4M0yTHk2rvNo2WdzvHZqzN9v/SF3vju3evng/at5fPDLPDu1yuGyZHSVAAAAAAAAAK/XOGe4ueSvZ4e8M8xZbVe5ceuPufvy3Oqkw4+v5emDX+fuuTlLhhwsEYIBAAAAAAAAXpclGR8OuXP0TR4cPM/9z/+SRyfNDf/1TZezOp/87KdjzizJZkhO7edMy/w/nAUAAAAAAADg/zaMWcZkP8/ZLsmLacr2/MV8+cnvs/tP5/4FmLjAq1ifcioAAAAASUVORK5CYII=';\n\n/**\n * PptxGenJS: Utility Methods\n */\n/**\n * Translates any type of `x`/`y`/`w`/`h` prop to EMU\n * - guaranteed to return a result regardless of undefined, null, etc. (0)\n * - {number} - 12800 (EMU)\n * - {number} - 0.5 (inches)\n * - {string} - \"75%\"\n * @param {number|string} size - numeric (\"5.5\") or percentage (\"90%\")\n * @param {'X' | 'Y'} xyDir - direction\n * @param {PresLayout} layout - presentation layout\n * @returns {number} calculated size\n */\nfunction getSmartParseNumber(size, xyDir, layout) {\n // FIRST: Convert string numeric value if reqd\n if (typeof size === 'string' && !isNaN(Number(size)))\n size = Number(size);\n // CASE 1: Number in inches\n // Assume any number less than 100 is inches\n if (typeof size === 'number' && size < 100)\n return inch2Emu(size);\n // CASE 2: Number is already converted to something other than inches\n // Assume any number greater than 100 sure isnt inches! Just return it (assume value is EMU already).\n if (typeof size === 'number' && size >= 100)\n return size;\n // CASE 3: Percentage (ex: '50%')\n if (typeof size === 'string' && size.includes('%')) {\n if (xyDir && xyDir === 'X')\n return Math.round((parseFloat(size) / 100) * layout.width);\n if (xyDir && xyDir === 'Y')\n return Math.round((parseFloat(size) / 100) * layout.height);\n // Default: Assume width (x/cx)\n return Math.round((parseFloat(size) / 100) * layout.width);\n }\n // LAST: Default value\n return 0;\n}\n/**\n * Basic UUID Generator Adapted\n * @link https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript#answer-2117523\n * @param {string} uuidFormat - UUID format\n * @returns {string} UUID\n */\nfunction getUuid(uuidFormat) {\n return uuidFormat.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n/**\n * Replace special XML characters with HTML-encoded strings\n * @param {string} xml - XML string to encode\n * @returns {string} escaped XML\n */\nfunction encodeXmlEntities(xml) {\n // NOTE: Dont use short-circuit eval here as value c/b \"0\" (zero) etc.!\n if (typeof xml === 'undefined' || xml == null)\n return '';\n return xml.toString().replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;').replace(/'/g, '&apos;');\n}\n/**\n * Convert inches into EMU\n * @param {number|string} inches - as string or number\n * @returns {number} EMU value\n */\nfunction inch2Emu(inches) {\n // NOTE: Provide Caller Safety: Numbers may get conv<->conv during flight, so be kind and do some simple checks to ensure inches were passed\n // Any value over 100 damn sure isnt inches, so lets assume its in EMU already, therefore, just return the same value\n if (typeof inches === 'number' && inches > 100)\n return inches;\n if (typeof inches === 'string')\n inches = Number(inches.replace(/in*/gi, ''));\n return Math.round(EMU * inches);\n}\n/**\n * Convert `pt` into points (using `ONEPT`)\n * @param {number|string} pt\n * @returns {number} value in points (`ONEPT`)\n */\nfunction valToPts(pt) {\n const points = Number(pt) || 0;\n return isNaN(points) ? 0 : Math.round(points * ONEPT);\n}\n/**\n * Convert degrees (0..360) to PowerPoint `rot` value\n * @param {number} d degrees\n * @returns {number} calculated `rot` value\n */\nfunction convertRotationDegrees(d) {\n d = d || 0;\n return Math.round((d > 360 ? d - 360 : d) * 60000);\n}\n/**\n * Converts component value to hex value\n * @param {number} c - component color\n * @returns {string} hex string\n */\nfunction componentToHex(c) {\n const hex = c.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * Converts RGB colors from css selectors to Hex for Presentation colors\n * @param {number} r - red value\n * @param {number} g - green value\n * @param {number} b - blue value\n * @returns {string} XML string\n */\nfunction rgbToHex(r, g, b) {\n return (componentToHex(r) + componentToHex(g) + componentToHex(b)).toUpperCase();\n}\n/** TODO: FUTURE: TODO-4.0:\n * @date 2022-04-10\n * @tldr this s/b a private method with all current calls switched to `genXmlColorSelection()`\n * @desc lots of code calls this method\n * @example [gen-charts.tx] `strXml += '<a:solidFill>' + createColorElement(seriesColor, `<a:alpha val=\"${Math.round(opts.chartColorsOpacity * 1000)}\"/>`) + '</a:solidFill>'`\n * Thi sis wrong. We s/b calling `genXmlColorSelection()` instead as it returns `<a:solidfill>BLAH</a:solidFill>`!!\n */\n/**\n * Create either a `a:schemeClr` - (scheme color) or `a:srgbClr` (hexa representation).\n * @param {string|SCHEME_COLORS} colorStr - hexa representation (eg. \"FFFF00\") or a scheme color constant (eg. pptx.SchemeColor.ACCENT1)\n * @param {string} innerElements - additional elements that adjust the color and are enclosed by the color element\n * @returns {string} XML string\n */\nfunction createColorElement(colorStr, innerElements) {\n let colorVal = (colorStr || '').replace('#', '');\n if (!REGEX_HEX_COLOR.test(colorVal) &&\n colorVal !== SchemeColor.background1 &&\n colorVal !== SchemeColor.background2 &&\n colorVal !== SchemeColor.text1 &&\n colorVal !== SchemeColor.text2 &&\n colorVal !== SchemeColor.accent1 &&\n colorVal !== SchemeColor.accent2 &&\n colorVal !== SchemeColor.accent3 &&\n colorVal !== SchemeColor.accent4 &&\n colorVal !== SchemeColor.accent5 &&\n colorVal !== SchemeColor.accent6) {\n console.warn(`\"${colorVal}\" is not a valid scheme color or hex RGB! \"${DEF_FONT_COLOR}\" used instead. Only provide 6-digit RGB or 'pptx.SchemeColor' values!`);\n colorVal = DEF_FONT_COLOR;\n }\n const tagName = REGEX_HEX_COLOR.test(colorVal) ? 'srgbClr' : 'schemeClr';\n const colorAttr = 'val=\"' + (REGEX_HEX_COLOR.test(colorVal) ? colorVal.toUpperCase() : colorVal) + '\"';\n return innerElements ? `<a:${tagName} ${colorAttr}>${innerElements}</a:${tagName}>` : `<a:${tagName} ${colorAttr}/>`;\n}\n/**\n * Creates `a:glow` element\n * @param {TextGlowProps} options glow properties\n * @param {TextGlowProps} defaults defaults for unspecified properties in `opts`\n * @see http://officeopenxml.com/drwSp-effects.php\n * { size: 8, color: 'FFFFFF', opacity: 0.75 };\n */\nfunction createGlowElement(options, defaults) {\n let strXml = '';\n const opts = Object.assign(Object.assign({}, defaults), options);\n const size = Math.round(opts.size * ONEPT);\n const color = opts.color;\n const opacity = Math.round(opts.opacity * 100000);\n strXml += `<a:glow rad=\"${size}\">`;\n strXml += createColorElement(color, `<a:alpha val=\"${opacity}\"/>`);\n strXml += '</a:glow>';\n return strXml;\n}\n/**\n * Create color selection\n * @param {Color | ShapeFillProps | ShapeLineProps} props fill props\n * @returns XML string\n */\nfunction genXmlColorSelection(props) {\n let fillType = 'solid';\n let colorVal = '';\n let internalElements = '';\n let outText = '';\n if (props) {\n if (typeof props === 'string')\n colorVal = props;\n else {\n if (props.type)\n fillType = props.type;\n if (props.color)\n colorVal = props.color;\n if (props.alpha)\n internalElements += `<a:alpha val=\"${Math.round((100 - props.alpha) * 1000)}\"/>`; // DEPRECATED: @deprecated v3.3.0\n if (props.transparency)\n internalElements += `<a:alpha val=\"${Math.round((100 - props.transparency) * 1000)}\"/>`;\n }\n switch (fillType) {\n case 'solid':\n outText += `<a:solidFill>${createColorElement(colorVal, internalElements)}</a:solidFill>`;\n break;\n default: // @note need a statement as having only \"break\" is removed by rollup, then tiggers \"no-default\" js-linter\n outText += '';\n break;\n }\n }\n return outText;\n}\n/**\n * Get a new rel ID (rId) for charts, media, etc.\n * @param {PresSlide} target - the slide to use\n * @returns {number} count of all current rels plus 1 for the caller to use as its \"rId\"\n */\nfunction getNewRelId(target) {\n return target._rels.length + target._relsChart.length + target._relsMedia.length + 1;\n}\n/**\n * Checks shadow options passed by user and performs corrections if needed.\n * @param {ShadowProps} ShadowProps - shadow options\n */\nfunction correctShadowOptions(ShadowProps) {\n if (!ShadowProps || typeof ShadowProps !== 'object') {\n // console.warn(\"`shadow` options must be an object. Ex: `{shadow: {type:'none'}}`\")\n return;\n }\n // OPT: `type`\n if (ShadowProps.type !== 'outer' && ShadowProps.type !== 'inner' && ShadowProps.type !== 'none') {\n console.warn('Warning: shadow.type options are `outer`, `inner` or `none`.');\n ShadowProps.type = 'outer';\n }\n // OPT: `angle`\n if (ShadowProps.angle) {\n // A: REALITY-CHECK\n if (isNaN(Number(ShadowProps.angle)) || ShadowProps.angle < 0 || ShadowProps.angle > 359) {\n console.warn('Warning: shadow.angle can only be 0-359');\n ShadowProps.angle = 270;\n }\n // B: ROBUST: Cast any type of valid arg to int: '12', 12.3, etc. -> 12\n ShadowProps.angle = Math.round(Number(ShadowProps.angle));\n }\n // OPT: `opacity`\n if (ShadowProps.opacity) {\n // A: REALITY-CHECK\n if (isNaN(Number(ShadowProps.opacity)) || ShadowProps.opacity < 0 || ShadowProps.opacity > 1) {\n console.warn('Warning: shadow.opacity can only be 0-1');\n ShadowProps.opacity = 0.75;\n }\n // B: ROBUST: Cast any type of valid arg to int: '12', 12.3, etc. -> 12\n ShadowProps.opacity = Number(ShadowProps.opacity);\n }\n // OPT: `color`\n if (ShadowProps.color) {\n // INCORRECT FORMAT\n if (ShadowProps.color.startsWith('#')) {\n console.warn('Warning: shadow.color should not include hash (#) character, , e.g. \"FF0000\"');\n ShadowProps.color = ShadowProps.color.replace('#', '');\n }\n }\n return ShadowProps;\n}\n\n/**\n * PptxGenJS: Table Generation\n */\n/**\n * Break cell text into lines based upon table column width (e.g.: Magic Happens Here(tm))\n * @param {TableCell} cell - table cell\n * @param {number} colWidth - table column width (inches)\n * @return {TableRow[]} - cell's text objects grouped into lines\n */\nfunction parseTextToLines(cell, colWidth, verbose) {\n var _a, _b;\n // FYI: CPL = Width / (font-size / font-constant)\n // FYI: CHAR:2.3, colWidth:10, fontSize:12 => CPL=138, (actual chars per line in PPT)=145 [14.5 CPI]\n // FYI: CHAR:2.3, colWidth:7 , fontSize:12 => CPL= 97, (actual chars per line in PPT)=100 [14.3 CPI]\n // FYI: CHAR:2.3, colWidth:9 , fontSize:16 => CPL= 96, (actual chars per line in PPT)=84 [ 9.3 CPI]\n const FOCO = 2.3 + (((_a = cell.options) === null || _a === void 0 ? void 0 : _a.autoPageCharWeight) ? cell.options.autoPageCharWeight : 0); // Character Constant\n const CPL = Math.floor((colWidth / ONEPT) * EMU) / ((((_b = cell.options) === null || _b === void 0 ? void 0 : _b.fontSize) ? cell.options.fontSize : DEF_FONT_SIZE) / FOCO); // Chars-Per-Line\n const parsedLines = [];\n let inputCells = [];\n const inputLines1 = [];\n const inputLines2 = [];\n /*\n if (cell.options && cell.options.autoPageCharWeight) {\n let CHR1 = 2.3 + (cell.options && cell.options.autoPageCharWeight ? cell.options.autoPageCharWeight : 0) // Character Constant\n let CPL1 = ((colWidth / ONEPT) * EMU) / ((cell.options && cell.options.fontSize ? cell.options.fontSize : DEF_FONT_SIZE) / CHR1) // Chars-Per-Line\n console.log(`cell.options.autoPageCharWeight: '${cell.options.autoPageCharWeight}' => CPL: ${CPL1}`)\n let CHR2 = 2.3 + 0\n let CPL2 = ((colWidth / ONEPT) * EMU) / ((cell.options && cell.options.fontSize ? cell.options.fontSize : DEF_FONT_SIZE) / CHR2) // Chars-Per-Line\n console.log(`cell.options.autoPageCharWeight: '0' => CPL: ${CPL2}`)\n }\n */\n /**\n * EX INPUTS: `cell.text`\n * - string....: \"Account Name Column\"\n * - object....: { text:\"Account Name Column\" }\n * - object[]..: [{ text:\"Account Name\", options:{ bold:true } }, { text:\" Column\" }]\n * - object[]..: [{ text:\"Account Name\", options:{ breakLine:true } }, { text:\"Input\" }]\n */\n /**\n * EX OUTPUTS:\n * - string....: [{ text:\"Account Name Column\" }]\n * - object....: [{ text:\"Account Name Column\" }]\n * - object[]..: [{ text:\"Account Name\", options:{ breakLine:true } }, { text:\"Input\" }]\n * - object[]..: [{ text:\"Account Name\", options:{ breakLine:true } }, { text:\"Input\" }]\n */\n // STEP 1: Ensure inputCells is an array of TableCells\n if (cell.text && cell.text.toString().trim().length === 0) {\n // Allow a single space/whitespace as cell text (user-requested feature)\n inputCells.push({ _type: SLIDE_OBJECT_TYPES.tablecell, text: ' ' });\n }\n else if (typeof cell.text === 'number' || typeof cell.text === 'string') {\n inputCells.push({ _type: SLIDE_OBJECT_TYPES.tablecell, text: (cell.text || '').toString().trim() });\n }\n else if (Array.isArray(cell.text)) {\n inputCells = cell.text;\n }\n // STEP 2: Group table cells into lines based on \"\\n\" or `breakLine` prop\n /**\n * - EX: `[{ text:\"Input Output\" }, { text:\"Extra\" }]` == 1 line\n * - EX: `[{ text:\"Input\" }, { text:\"Output\", options:{ breakLine:true } }]` == 1 line\n * - EX: `[{ text:\"Input\\nOutput\" }]` == 2 lines\n * - EX: `[{ text:\"Input\", options:{ breakLine:true } }, { text:\"Output\" }]` == 2 lines\n */\n let newLine = [];\n inputCells.forEach(cell => {\n var _a;\n // (this is always true, we just constructed them above, but we need to tell typescript b/c type is still string||Cell[])\n if (typeof cell.text === 'string') {\n if (cell.text.split('\\n').length > 1) {\n cell.text.split('\\n').forEach(textLine => {\n newLine.push({\n _type: SLIDE_OBJECT_TYPES.tablecell,\n text: textLine,\n options: Object.assign(Object.assign({}, cell.options), { breakLine: true }),\n });\n });\n }\n else {\n newLine.push({\n _type: SLIDE_OBJECT_TYPES.tablecell,\n text: cell.text.trim(),\n options: cell.options,\n });\n }\n if ((_a = cell.options) === null || _a === void 0 ? void 0 : _a.breakLine) {\n inputLines1.push(newLine);\n newLine = [];\n }\n }\n // Flush buffer\n if (newLine.length > 0) {\n inputLines1.push(newLine);\n newLine = [];\n }\n });\n // STEP 3: Tokenize every text object into words (then it's really easy to assemble lines below without having to break text, add its `options`, etc.)\n inputLines1.forEach(line => {\n line.forEach(cell => {\n const lineCells = [];\n const cellTextStr = String(cell.text); // force convert to string (compiled JS is better with this than a cast)\n const lineWords = cellTextStr.split(' ');\n lineWords.forEach((word, idx) => {\n const cellProps = Object.assign({}, cell.options);\n // IMPORTANT: Handle `breakLine` prop - we cannot apply to each word - only apply to very last word!\n if (cellProps === null || cellProps === void 0 ? void 0 : cellProps.breakLine)\n cellProps.breakLine = idx + 1 === lineWords.length;\n lineCells.push({ _type: SLIDE_OBJECT_TYPES.tablecell, text: word + (idx + 1 < lineWords.length ? ' ' : ''), options: cellProps });\n });\n inputLines2.push(lineCells);\n });\n });\n // STEP 4: Group cells/words into lines based upon space consumed by word letters\n inputLines2.forEach(line => {\n let lineCells = [];\n let strCurrLine = '';\n line.forEach(word => {\n // A: create new line when horizontal space is exhausted\n if (strCurrLine.length + word.text.length > CPL) {\n // if (verbose) console.log(`STEP 4: New line added: (${strCurrLine.length} + ${word.text.length} > ${CPL})`);\n parsedLines.push(lineCells);\n lineCells = [];\n strCurrLine = '';\n }\n // B: add current word to line cells\n lineCells.push(word);\n // C: add current word to `strCurrLine` which we use to keep track of line's char length\n strCurrLine += word.text.toString();\n });\n // Flush buffer: Only create a line when there's text to avoid empty row\n if (lineCells.length > 0)\n parsedLines.push(lineCells);\n });\n // Done:\n return parsedLines;\n}\n/**\n * Takes an array of table rows and breaks into an array of slides, which contain the calculated amount of table rows that fit on that slide\n * @param {TableCell[][]} tableRows - table rows\n * @param {TableToSlidesProps} tableProps - table2slides properties\n * @param {PresLayout} presLayout - presentation layout\n * @param {SlideLayout} masterSlide - master slide\n * @return {TableRowSlide[]} array of table rows\n */\nfunction getSlidesForTableRows(tableRows = [], tableProps = {}, presLayout, masterSlide) {\n let arrInchMargins = DEF_SLIDE_MARGIN_IN;\n let emuSlideTabW = EMU * 1;\n let emuSlideTabH = EMU * 1;\n let emuTabCurrH = 0;\n let numCols = 0;\n const tableRowSlides = [];\n const tablePropX = getSmartParseNumber(tableProps.x, 'X', presLayout);\n const tablePropY = getSmartParseNumber(tableProps.y, 'Y', presLayout);\n const tablePropW = getSmartParseNumber(tableProps.w, 'X', presLayout);\n const tablePropH = getSmartParseNumber(tableProps.h, 'Y', presLayout);\n let tableCalcW = tablePropW;\n function calcSlideTabH() {\n let emuStartY = 0;\n if (tableRowSlides.length === 0)\n emuStartY = tablePropY || inch2Emu(arrInchMargins[0]);\n if (tableRowSlides.length > 0)\n emuStartY = inch2Emu(tableProps.autoPageSlideStartY || tableProps.newSlideStartY || arrInchMargins[0]);\n emuSlideTabH = (tablePropH || presLayout.height) - emuStartY - inch2Emu(arrInchMargins[2]);\n // console.log(`| startY .......................................... = ${(emuStartY / EMU).toFixed(1)}`)\n // console.log(`| emuSlideTabH .................................... = ${(emuSlideTabH / EMU).toFixed(1)}`)\n if (tableRowSlides.length > 1) {\n // D: RULE: Use margins for starting point after the initial Slide, not `opt.y` (ISSUE #43, ISSUE #47, ISSUE #48)\n if (typeof tableProps.autoPageSlideStartY === 'number') {\n emuSlideTabH = (tablePropH || presLayout.height) - inch2Emu(tableProps.autoPageSlideStartY + arrInchMargins[2]);\n }\n else if (typeof tableProps.newSlideStartY === 'number') {\n // @deprecated v3.3.0\n emuSlideTabH = (tablePropH || presLayout.height) - inch2Emu(tableProps.newSlideStartY + arrInchMargins[2]);\n }\n else if (tablePropY) {\n emuSlideTabH = (tablePropH || presLayout.height) - inch2Emu((tablePropY / EMU < arrInchMargins[0] ? tablePropY / EMU : arrInchMargins[0]) + arrInchMargins[2]);\n // Use whichever is greater: area between margins or the table H provided (dont shrink usable area - the whole point of over-riding Y on paging is to *increase* usable space)\n if (emuSlideTabH < tablePropH)\n emuSlideTabH = tablePropH;\n }\n }\n }\n if (tableProps.verbose) {\n console.log('[[VERBOSE MODE]]');\n console.log('|-- TABLE PROPS --------------------------------------------------------|');\n console.log(`| presLayout.width ................................ = ${(presLayout.width / EMU).toFixed(1)}`);\n console.log(`| presLayout.height ............................... = ${(presLayout.height / EMU).toFixed(1)}`);\n console.log(`| tableProps.x .................................... = ${typeof tableProps.x === 'number' ? (tableProps.x / EMU).toFixed(1) : tableProps.x}`);\n console.log(`| tableProps.y .................................... = ${typeof tableProps.y === 'number' ? (tableProps.y / EMU).toFixed(1) : tableProps.y}`);\n console.log(`| tableProps.w .................................... = ${typeof tableProps.w === 'number' ? (tableProps.w / EMU).toFixed(1) : tableProps.w}`);\n console.log(`| tableProps.h .................................... = ${typeof tableProps.h === 'number' ? (tableProps.h / EMU).toFixed(1) : tableProps.h}`);\n console.log(`| tableProps.slideMargin .......................... = ${tableProps.slideMargin ? String(tableProps.slideMargin) : ''}`);\n console.log(`| tableProps.margin ............................... = ${String(tableProps.margin)}`);\n console.log(`| tableProps.colW ................................. = ${String(tableProps.colW)}`);\n console.log(`| tableProps.autoPageSlideStartY .................. = ${tableProps.autoPageSlideStartY}`);\n console.log(`| tableProps.autoPageCharWeight ................... = ${tableProps.autoPageCharWeight}`);\n console.log('|-- CALCULATIONS -------------------------------------------------------|');\n console.log(`| tablePropX ...................................... = ${tablePropX / EMU}`);\n console.log(`| tablePropY ...................................... = ${tablePropY / EMU}`);\n console.log(`| tablePropW ...................................... = ${tablePropW / EMU}`);\n console.log(`| tablePropH ...................................... = ${tablePropH / EMU}`);\n console.log(`| tableCalcW ...................................... = ${tableCalcW / EMU}`);\n }\n // STEP 1: Calculate margins\n {\n // Important: Use default size as zero cell margin is causing our tables to be too large and touch bottom of slide!\n if (!tableProps.slideMargin && tableProps.slideMargin !== 0)\n tableProps.slideMargin = DEF_SLIDE_MARGIN_IN[0];\n if (masterSlide && typeof masterSlide._margin !== 'undefined') {\n if (Array.isArray(masterSlide._margin))\n arrInchMargins = masterSlide._margin;\n else if (!isNaN(Number(masterSlide._margin))) {\n arrInchMargins = [Number(masterSlide._margin), Number(masterSlide._margin), Number(masterSlide._margin), Number(masterSlide._margin)];\n }\n }\n else if (tableProps.slideMargin || tableProps.slideMargin === 0) {\n if (Array.isArray(tableProps.slideMargin))\n arrInchMargins = tableProps.slideMargin;\n else if (!isNaN(tableProps.slideMargin))\n arrInchMargins = [tableProps.slideMargin, tableProps.slideMargin, tableProps.slideMargin, tableProps.slideMargin];\n }\n if (tableProps.verbose)\n console.log(`| arrInchMargins .................................. = [${arrInchMargins.join(', ')}]`);\n }\n // STEP 2: Calculate number of columns\n {\n // NOTE: Cells may have a colspan, so merely taking the length of the [0] (or any other) row is not\n // ....: sufficient to determine column count. Therefore, check each cell for a colspan and total cols as reqd\n const firstRow = tableRows[0] || [];\n firstRow.forEach(cell => {\n if (!cell)\n cell = { _type: SLIDE_OBJECT_TYPES.tablecell };\n const cellOpts = cell.options || null;\n numCols += Number((cellOpts === null || cellOpts === void 0 ? void 0 : cellOpts.colspan) ? cellOpts.colspan : 1);\n });\n if (tableProps.verbose)\n console.log(`| numCols ......................................... = ${numCols}`);\n }\n // STEP 3: Calculate width using tableProps.colW if possible\n if (!tablePropW && tableProps.colW) {\n tableCalcW = Array.isArray(tableProps.colW) ? tableProps.colW.reduce((p, n) => p + n) * EMU : tableProps.colW * numCols || 0;\n if (tableProps.verbose)\n console.log(`| tableCalcW ...................................... = ${tableCalcW / EMU}`);\n }\n // STEP 4: Calculate usable width now that total usable space is known (`emuSlideTabW`)\n {\n emuSlideTabW = tableCalcW || inch2Emu((tablePropX ? tablePropX / EMU : arrInchMargins[1]) + arrInchMargins[3]);\n if (tableProps.verbose)\n console.log(`| emuSlideTabW .................................... = ${(emuSlideTabW / EMU).toFixed(1)}`);\n }\n // STEP 5: Calculate column widths if not provided (emuSlideTabW will be used below to determine lines-per-col)\n if (!tableProps.colW || !Array.isArray(tableProps.colW)) {\n if (tableProps.colW && !isNaN(Number(tableProps.colW))) {\n const arrColW = [];\n const firstRow = tableRows[0] || [];\n firstRow.forEach(() => arrColW.push(tableProps.colW));\n tableProps.colW = [];\n arrColW.forEach(val => {\n if (Array.isArray(tableProps.colW))\n tableProps.colW.push(val);\n });\n }\n else {\n // No column widths provided? Then distribute cols.\n tableProps.colW = [];\n for (let iCol = 0; iCol < numCols; iCol++) {\n tableProps.colW.push(emuSlideTabW / EMU / numCols);\n }\n }\n }\n // STEP 6: **MAIN** Iterate over rows, add table content, create new slides as rows overflow\n let newTableRowSlide = { rows: [] };\n tableRows.forEach((row, iRow) => {\n // A: Row variables\n const rowCellLines = [];\n let maxCellMarTopEmu = 0;\n let maxCellMarBtmEmu = 0;\n // B: Create new row in data model, calc `maxCellMar*`\n let currTableRow = [];\n row.forEach(cell => {\n var _a, _b, _c, _d;\n currTableRow.push({\n _type: SLIDE_OBJECT_TYPES.tablecell,\n text: [],\n options: cell.options,\n });\n /** FUTURE: DEPRECATED:\n * - Backwards-Compat: Oops! Discovered we were still using points for cell margin before v3.8.0 (UGH!)\n * - We cant introduce a breaking change before v4.0, so...\n */\n if (cell.options.margin && cell.options.margin[0] >= 1) {\n if (((_a = cell.options) === null || _a === void 0 ? void 0 : _a.margin) && cell.options.margin[0] && valToPts(cell.options.margin[0]) > maxCellMarTopEmu)\n maxCellMarTopEmu = valToPts(cell.options.margin[0]);\n else if ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.margin) && tableProps.margin[0] && valToPts(tableProps.margin[0]) > maxCellMarTopEmu)\n maxCellMarTopEmu = valToPts(tableProps.margin[0]);\n if (((_b = cell.options) === null || _b === void 0 ? void 0 : _b.margin) && cell.options.margin[2] && valToPts(cell.options.margin[2]) > maxCellMarBtmEmu)\n maxCellMarBtmEmu = valToPts(cell.options.margin[2]);\n else if ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.margin) && tableProps.margin[2] && valToPts(tableProps.margin[2]) > maxCellMarBtmEmu)\n maxCellMarBtmEmu = valToPts(tableProps.margin[2]);\n }\n else {\n if (((_c = cell.options) === null || _c === void 0 ? void 0 : _c.margin) && cell.options.margin[0] && inch2Emu(cell.options.margin[0]) > maxCellMarTopEmu)\n maxCellMarTopEmu = inch2Emu(cell.options.margin[0]);\n else if ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.margin) && tableProps.margin[0] && inch2Emu(tableProps.margin[0]) > maxCellMarTopEmu)\n maxCellMarTopEmu = inch2Emu(tableProps.margin[0]);\n if (((_d = cell.options) === null || _d === void 0 ? void 0 : _d.margin) && cell.options.margin[2] && inch2Emu(cell.options.margin[2]) > maxCellMarBtmEmu)\n maxCellMarBtmEmu = inch2Emu(cell.options.margin[2]);\n else if ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.margin) && tableProps.margin[2] && inch2Emu(tableProps.margin[2]) > maxCellMarBtmEmu)\n maxCellMarBtmEmu = inch2Emu(tableProps.margin[2]);\n }\n });\n // C: Calc usable vertical space/table height. Set default value first, adjust below when necessary.\n calcSlideTabH();\n emuTabCurrH += maxCellMarTopEmu + maxCellMarBtmEmu; // Start row height with margins\n if (tableProps.verbose && iRow === 0)\n console.log(`| SLIDE [${tableRowSlides.length}]: emuSlideTabH ...... = ${(emuSlideTabH / EMU).toFixed(1)} `);\n // D: --==[[ BUILD DATA SET ]]==-- (iterate over cells: split text into lines[], set `lineHeight`)\n row.forEach((cell, iCell) => {\n var _a;\n const newCell = {\n _type: SLIDE_OBJECT_TYPES.tablecell,\n _lines: null,\n _lineHeight: inch2Emu(((((_a = cell.options) === null || _a === void 0 ? void 0 : _a.fontSize) ? cell.options.fontSize : tableProps.fontSize ? tableProps.fontSize : DEF_FONT_SIZE) *\n (LINEH_MODIFIER + (tableProps.autoPageLineWeight ? tableProps.autoPageLineWeight : 0))) /\n 100),\n text: [],\n options: cell.options,\n };\n // E-1: Exempt cells with `rowspan` from increasing lineHeight (or we could create a new slide when unecessary!)\n if (newCell.options.rowspan)\n newCell._lineHeight = 0;\n // E-2: The parseTextToLines method uses `autoPageCharWeight`, so inherit from table options\n newCell.options.autoPageCharWeight = tableProps.autoPageCharWeight ? tableProps.autoPageCharWeight : null;\n // E-3: **MAIN** Parse cell contents into lines based upon col width, font, etc\n let totalColW = tableProps.colW[iCell];\n if (cell.options.colspan && Array.isArray(tableProps.colW)) {\n totalColW = tableProps.colW.filter((_cell, idx) => idx >= iCell && idx < idx + cell.options.colspan).reduce((prev, curr) => prev + curr);\n }\n // E-4: Create lines based upon available column width\n newCell._lines = parseTextToLines(cell, totalColW);\n // E-5: Add cell to array\n rowCellLines.push(newCell);\n });\n /** E: --==[[ PAGE DATA SET ]]==--\n * Add text one-line-a-time to this row's cells until: lines are exhausted OR table height limit is hit\n *\n * Design:\n * - Building cells L-to-R/loop style wont work as one could be 100 lines and another 1 line\n * - Therefore, build the whole row, one-line-at-a-time, across each table columns\n * - Then, when the vertical size limit is hit is by any of the cells, make a new slide and continue adding any remaining lines\n *\n * Implementation:\n * - `rowCellLines` is an array of cells, one for each column in the table, with each cell containing an array of lines\n *\n * Sample Data:\n * - `rowCellLines` ..: [ TableCell, TableCell, TableCell ]\n * - `TableCell` .....: { _type: 'tablecell', _lines: TableCell[], _lineHeight: 10 }\n * - `_lines` ........: [ {_type: 'tablecell', text: 'cell-1,line-1', options: {…}}, {_type: 'tablecell', text: 'cell-1,line-2', options: {…}} }\n * - `_lines` is TableCell[] (the 1-N words in the line)\n * {\n * _lines: [{ text:'cell-1,line-1' }, { text:'cell-1,line-2' }], // TOTAL-CELL-HEIGHT = 2\n * _lines: [{ text:'cell-2,line-1' }, { text:'cell-2,line-2' }], // TOTAL-CELL-HEIGHT = 2\n * _lines: [{ text:'cell-3,line-1' }, { text:'cell-3,line-2' }, { text:'cell-3,line-3' }, { text:'cell-3,line-4' }], // TOTAL-CELL-HEIGHT = 4\n * }\n *\n * Example: 2 rows, with the firstrow overflowing onto a new slide\n * SLIDE 1:\n * |--------|--------|--------|--------|\n * | line-1 | line-1 | line-1 | line-1 |\n * | | | line-2 | |\n * | | | line-3 | |\n * |--------|--------|--------|--------|\n *\n * SLIDE 2:\n * |--------|--------|--------|--------|\n * | | | line-4 | |\n * |--------|--------|--------|--------|\n * | line-1 | line-1 | line-1 | line-1 |\n * |--------|--------|--------|--------|\n */\n if (tableProps.verbose)\n console.log(`\\n| SLIDE [${tableRowSlides.length}]: ROW [${iRow}]: START...`);\n let currCellIdx = 0;\n let emuLineMaxH = 0;\n let isDone = false;\n while (!isDone) {\n const srcCell = rowCellLines[currCellIdx];\n let tgtCell = currTableRow[currCellIdx]; // NOTE: may be redefined below (a new row may be created, thus changing this value)\n // 1: calc emuLineMaxH\n rowCellLines.forEach(cell => {\n if (cell._lineHeight >= emuLineMaxH)\n emuLineMaxH = cell._lineHeight;\n });\n // 2: create a new slide if there is insufficient room for the current row\n if (emuTabCurrH + emuLineMaxH > emuSlideTabH) {\n if (tableProps.verbose) {\n console.log('\\n|-----------------------------------------------------------------------|');\n // prettier-ignore\n console.log(`|-- NEW SLIDE CREATED (currTabH+currLineH > maxH) => ${(emuTabCurrH / EMU).toFixed(2)} + ${(srcCell._lineHeight / EMU).toFixed(2)} > ${emuSlideTabH / EMU}`);\n console.log('|-----------------------------------------------------------------------|\\n\\n');\n }\n // A: add current row slide or it will be lost (only if it has rows and text)\n if (currTableRow.length > 0 && currTableRow.map(cell => cell.text.length).reduce((p, n) => p + n) > 0)\n newTableRowSlide.rows.push(currTableRow);\n // B: add current slide to Slides array\n tableRowSlides.push(newTableRowSlide);\n // C: reset working/curr slide to hold rows as they're created\n const newRows = [];\n newTableRowSlide = { rows: newRows };\n // D: reset working/curr row\n currTableRow = [];\n row.forEach(cell => currTableRow.push({ _type: SLIDE_OBJECT_TYPES.tablecell, text: [], options: cell.options }));\n // E: Calc usable vertical space/table height now as we may still be in the same row and code above (\"C: Calc usable vertical space/table height.\") calc may now be invalid\n calcSlideTabH();\n emuTabCurrH += maxCellMarTopEmu + maxCellMarBtmEmu; // Start row height with margins\n if (tableProps.verbose)\n console.log(`| SLIDE [${tableRowSlides.length}]: emuSlideTabH ...... = ${(emuSlideTabH / EMU).toFixed(1)} `);\n // F: reset current table height for this new Slide\n emuTabCurrH = 0;\n // G: handle repeat headers option /or/ Add new empty row to continue current lines into\n if ((tableProps.addHeaderToEach || tableProps.autoPageRepeatHeader) && tableProps._arrObjTabHeadRows) {\n tableProps._arrObjTabHeadRows.forEach(row => {\n const newHeadRow = [];\n let maxLineHeight = 0;\n row.forEach(cell => {\n newHeadRow.push(cell);\n if (cell._lineHeight > maxLineHeight)\n maxLineHeight = cell._lineHeight;\n });\n newTableRowSlide.rows.push(newHeadRow);\n emuTabCurrH += maxLineHeight; // TODO: what about margins? dont we need to include cell margin in line height?\n });\n }\n // WIP: NEW: TEST THIS!!\n tgtCell = currTableRow[currCellIdx];\n }\n // 3: set array of words that comprise this line\n const currLine = srcCell._lines.shift();\n // 4: create new line by adding all words from curr line (or add empty if there are no words to avoid \"needs repair\" issue triggered when cells have null content)\n if (Array.isArray(tgtCell.text)) {\n if (currLine)\n tgtCell.text = tgtCell.text.concat(currLine);\n else if (tgtCell.text.length === 0)\n tgtCell.text = tgtCell.text.concat({ _type: SLIDE_OBJECT_TYPES.tablecell, text: '' });\n // IMPORTANT: ^^^ add empty if there are no words to avoid \"needs repair\" issue triggered when cells have null content\n }\n // 5: increase table height by the curr line height (if we're on the last column)\n if (currCellIdx === rowCellLines.length - 1)\n emuTabCurrH += emuLineMaxH;\n // 6: advance column/cell index (or circle back to first one to continue adding lines)\n currCellIdx = currCellIdx < rowCellLines.length - 1 ? currCellIdx + 1 : 0;\n // 7: WIP: done?\n const brent = rowCellLines.map(cell => cell._lines.length).reduce((prev, next) => prev + next);\n if (brent === 0)\n isDone = true;\n }\n // F: Flush/capture row buffer before it resets at the top of this loop\n if (currTableRow.length > 0)\n newTableRowSlide.rows.push(currTableRow);\n if (tableProps.verbose) {\n console.log(`- SLIDE [${tableRowSlides.length}]: ROW [${iRow}]: ...COMPLETE ...... emuTabCurrH = ${(emuTabCurrH / EMU).toFixed(2)} ( emuSlideTabH = ${(emuSlideTabH / EMU).toFixed(2)} )`);\n }\n });\n // STEP 7: Flush buffer / add final slide\n tableRowSlides.push(newTableRowSlide);\n if (tableProps.verbose) {\n console.log('\\n|================================================|');\n console.log(`| FINAL: tableRowSlides.length = ${tableRowSlides.length}`);\n tableRowSlides.forEach(slide => console.log(slide));\n console.log('|================================================|\\n\\n');\n }\n // LAST:\n return tableRowSlides;\n}\n/**\n * Reproduces an HTML table as a PowerPoint table - including column widths, style, etc. - creates 1 or more slides as needed\n * @param {PptxGenJS} pptx - pptxgenjs instance\n * @param {string} tabEleId - HTMLElementID of the table\n * @param {ITableToSlidesOpts} options - array of options (e.g.: tabsize)\n * @param {SlideLayout} masterSlide - masterSlide\n */\nfunction genTableToSlides(pptx, tabEleId, options = {}, masterSlide) {\n const opts = options || {};\n opts.slideMargin = opts.slideMargin || opts.slideMargin === 0 ? opts.slideMargin : 0.5;\n let emuSlideTabW = opts.w || pptx.presLayout.width;\n const arrObjTabHeadRows = [];\n const arrObjTabBodyRows = [];\n const arrObjTabFootRows = [];\n const arrColW = [];\n const arrTabColW = [];\n let arrInchMargins = [0.5, 0.5, 0.5, 0.5]; // TRBL-style\n let intTabW = 0;\n // REALITY-CHECK:\n if (!document.getElementById(tabEleId))\n throw new Error('tableToSlides: Table ID \"' + tabEleId + '\" does not exist!');\n // STEP 1: Set margins\n if (masterSlide === null || masterSlide === void 0 ? void 0 : masterSlide._margin) {\n if (Array.isArray(masterSlide._margin))\n arrInchMargins = masterSlide._margin;\n else if (!isNaN(masterSlide._margin))\n arrInchMargins = [masterSlide._margin, masterSlide._margin, masterSlide._margin, masterSlide._margin];\n opts.slideMargin = arrInchMargins;\n }\n else if (opts === null || opts === void 0 ? void 0 : opts.slideMargin) {\n if (Array.isArray(opts.slideMargin))\n arrInchMargins = opts.slideMargin;\n else if (!isNaN(opts.slideMargin))\n arrInchMargins = [opts.slideMargin, opts.slideMargin, opts.slideMargin, opts.slideMargin];\n }\n emuSlideTabW = (opts.w ? inch2Emu(opts.w) : pptx.presLayout.width) - inch2Emu(arrInchMargins[1] + arrInchMargins[3]);\n if (opts.verbose) {\n console.log('[[VERBOSE MODE]]');\n console.log('|-- `tableToSlides` ----------------------------------------------------|');\n console.log(`| tableProps.h .................................... = ${opts.h}`);\n console.log(`| tableProps.w .................................... = ${opts.w}`);\n console.log(`| pptx.presLayout.width ........................... = ${(pptx.presLayout.width / EMU).toFixed(1)}`);\n console.log(`| pptx.presLayout.height .......................... = ${(pptx.presLayout.height / EMU).toFixed(1)}`);\n console.log(`| emuSlideTabW .................................... = ${(emuSlideTabW / EMU).toFixed(1)}`);\n }\n // STEP 2: Grab table col widths - just find the first availble row, either thead/tbody/tfoot, others may have colspans, who cares, we only need col widths from 1\n let firstRowCells = document.querySelectorAll(`#${tabEleId} tr:first-child th`);\n if (firstRowCells.length === 0)\n firstRowCells = document.querySelectorAll(`#${tabEleId} tr:first-child td`);\n firstRowCells.forEach((cellEle) => {\n const cell = cellEle;\n if (cell.getAttribute('colspan')) {\n // Guesstimate (divide evenly) col widths\n // NOTE: both j$query and vanilla selectors return {0} when table is not visible)\n for (let idxc = 0; idxc < Number(cell.getAttribute('colspan')); idxc++) {\n arrTabColW.push(Math.round(cell.offsetWidth / Number(cell.getAttribute('colspan'))));\n }\n }\n else {\n arrTabColW.push(cell.offsetWidth);\n }\n });\n arrTabColW.forEach(colW => {\n intTabW += colW;\n });\n // STEP 3: Calc/Set column widths by using same column width percent from HTML table\n arrTabColW.forEach((colW, idxW) => {\n const intCalcWidth = Number(((Number(emuSlideTabW) * ((colW / intTabW) * 100)) / 100 / EMU).toFixed(2));\n let intMinWidth = 0;\n const colSelectorMin = document.querySelector(`#${tabEleId} thead tr:first-child th:nth-child(${idxW + 1})`);\n if (colSelectorMin)\n intMinWidth = Number(colSelectorMin.getAttribute('data-pptx-min-width'));\n const colSelectorSet = document.querySelector(`#${tabEleId} thead tr:first-child th:nth-child(${idxW + 1})`);\n if (colSelectorSet)\n intMinWidth = Number(colSelectorSet.getAttribute('data-pptx-width'));\n arrColW.push((intMinWidth > intCalcWidth ? intMinWidth : intCalcWidth));\n });\n if (opts.verbose) {\n console.log(`| arrColW ......................................... = [${arrColW.join(', ')}]`);\n }\n // STEP 4: Iterate over each table element and create data arrays (text and opts)\n // NOTE: We create 3 arrays instead of one so we can loop over body then show header/footer rows on first and last page\n const tableParts = ['thead', 'tbody', 'tfoot'];\n tableParts.forEach(part => {\n document.querySelectorAll(`#${tabEleId} ${part} tr`).forEach((row) => {\n const htmlRow = row;\n const arrObjTabCells = [];\n Array.from(htmlRow.cells).forEach(cell => {\n // A: Get RGB text/bkgd colors\n const arrRGB1 = window.getComputedStyle(cell).getPropertyValue('color').replace(/\\s+/gi, '').replace('rgba(', '').replace('rgb(', '').replace(')', '').split(',');\n let arrRGB2 = window\n .getComputedStyle(cell)\n .getPropertyValue('background-color')\n .replace(/\\s+/gi, '')\n .replace('rgba(', '')\n .replace('rgb(', '')\n .replace(')', '')\n .split(',');\n if (\n // NOTE: (ISSUE#57): Default for unstyled tables is black bkgd, so use white instead\n window.getComputedStyle(cell).getPropertyValue('background-color') === 'rgba(0, 0, 0, 0)' ||\n window.getComputedStyle(cell).getPropertyValue('transparent')) {\n arrRGB2 = ['255', '255', '255'];\n }\n // B: Create option object\n const cellOpts = {\n align: null,\n bold: !!(window.getComputedStyle(cell).getPropertyValue('font-weight') === 'bold' ||\n Number(window.getComputedStyle(cell).getPropertyValue('font-weight')) >= 500),\n border: null,\n color: rgbToHex(Number(arrRGB1[0]), Number(arrRGB1[1]), Number(arrRGB1[2])),\n fill: { color: rgbToHex(Number(arrRGB2[0]), Number(arrRGB2[1]), Number(arrRGB2[2])) },\n fontFace: (window.getComputedStyle(cell).getPropertyValue('font-family') || '').split(',')[0].replace(/\"/g, '').replace('inherit', '').replace('initial', '') ||\n null,\n fontSize: Number(window.getComputedStyle(cell).getPropertyValue('font-size').replace(/[a-z]/gi, '')),\n margin: null,\n colspan: Number(cell.getAttribute('colspan')) || null,\n rowspan: Number(cell.getAttribute('rowspan')) || null,\n valign: null,\n };\n if (['left', 'center', 'right', 'start', 'end'].includes(window.getComputedStyle(cell).getPropertyValue('text-align'))) {\n const align = window.getComputedStyle(cell).getPropertyValue('text-align').replace('start', 'left').replace('end', 'right');\n cellOpts.align = align === 'center' ? 'center' : align === 'left' ? 'left' : align === 'right' ? 'right' : null;\n }\n if (['top', 'middle', 'bottom'].includes(window.getComputedStyle(cell).getPropertyValue('vertical-align'))) {\n const valign = window.getComputedStyle(cell).getPropertyValue('vertical-align');\n cellOpts.valign = valign === 'top' ? 'top' : valign === 'middle' ? 'middle' : valign === 'bottom' ? 'bottom' : null;\n }\n // C: Add padding [margin] (if any)\n // NOTE: Margins translate: px->pt 1:1 (e.g.: a 20px padded cell looks the same in PPTX as 20pt Text Inset/Padding)\n if (window.getComputedStyle(cell).getPropertyValue('padding-left')) {\n cellOpts.margin = [0, 0, 0, 0];\n const sidesPad = ['padding-top', 'padding-right', 'padding-bottom', 'padding-left'];\n sidesPad.forEach((val, idxs) => {\n cellOpts.margin[idxs] = Math.round(Number(window.getComputedStyle(cell).getPropertyValue(val).replace(/\\D/gi, '')));\n });\n }\n // D: Add border (if any)\n if (window.getComputedStyle(cell).getPropertyValue('border-top-width') ||\n window.getComputedStyle(cell).getPropertyValue('border-right-width') ||\n window.getComputedStyle(cell).getPropertyValue('border-bottom-width') ||\n window.getComputedStyle(cell).getPropertyValue('border-left-width')) {\n cellOpts.border = [null, null, null, null];\n const sidesBor = ['top', 'right', 'bottom', 'left'];\n sidesBor.forEach((val, idxb) => {\n const intBorderW = Math.round(Number(window\n .getComputedStyle(cell)\n .getPropertyValue('border-' + val + '-width')\n .replace('px', '')));\n let arrRGB = [];\n arrRGB = window\n .getComputedStyle(cell)\n .getPropertyValue('border-' + val + '-color')\n .replace(/\\s+/gi, '')\n .replace('rgba(', '')\n .replace('rgb(', '')\n .replace(')', '')\n .split(',');\n const strBorderC = rgbToHex(Number(arrRGB[0]), Number(arrRGB[1]), Number(arrRGB[2]));\n cellOpts.border[idxb] = { pt: intBorderW, color: strBorderC };\n });\n }\n // LAST: Add cell\n arrObjTabCells.push({\n _type: SLIDE_OBJECT_TYPES.tablecell,\n text: cell.innerText, // `innerText` returns <br> as \"\\n\", so linebreak etc. work later!\n options: cellOpts,\n });\n });\n switch (part) {\n case 'thead':\n arrObjTabHeadRows.push(arrObjTabCells);\n break;\n case 'tbody':\n arrObjTabBodyRows.push(arrObjTabCells);\n break;\n case 'tfoot':\n arrObjTabFootRows.push(arrObjTabCells);\n break;\n default:\n console.log(`table parsing: unexpected table part: ${part}`);\n break;\n }\n });\n });\n // STEP 5: Break table into Slides as needed\n // Pass head-rows as there is an option to add to each table and the parse func needs this data to fulfill that option\n opts._arrObjTabHeadRows = arrObjTabHeadRows || null;\n opts.colW = arrColW;\n getSlidesForTableRows([...arrObjTabHeadRows, ...arrObjTabBodyRows, ...arrObjTabFootRows], opts, pptx.presLayout, masterSlide).forEach((slide, idxTr) => {\n // A: Create new Slide\n const newSlide = pptx.addSlide({ masterName: opts.masterSlideName || null });\n // B: DESIGN: Reset `y` to startY or margin after first Slide (ISSUE#43, ISSUE#47, ISSUE#48)\n if (idxTr === 0)\n opts.y = opts.y || arrInchMargins[0];\n if (idxTr > 0)\n opts.y = opts.autoPageSlideStartY || opts.newSlideStartY || arrInchMargins[0];\n if (opts.verbose)\n console.log(`| opts.autoPageSlideStartY: ${opts.autoPageSlideStartY} / arrInchMargins[0]: ${arrInchMargins[0]} => opts.y = ${opts.y}`);\n // C: Add table to Slide\n newSlide.addTable(slide.rows, { x: opts.x || arrInchMargins[3], y: opts.y, w: Number(emuSlideTabW) / EMU, colW: arrColW, autoPage: false });\n // D: Add any additional objects\n if (opts.addImage) {\n opts.addImage.options = opts.addImage.options || {};\n if (!opts.addImage.image || (!opts.addImage.image.path && !opts.addImage.image.data)) {\n console.warn('Warning: tableToSlides.addImage requires either `path` or `data`');\n }\n else {\n newSlide.addImage({\n path: opts.addImage.image.path,\n data: opts.addImage.image.data,\n x: opts.addImage.options.x,\n y: opts.addImage.options.y,\n w: opts.addImage.options.w,\n h: opts.addImage.options.h,\n });\n }\n }\n if (opts.addShape)\n newSlide.addShape(opts.addShape.shapeName, opts.addShape.options || {});\n if (opts.addTable)\n newSlide.addTable(opts.addTable.rows, opts.addTable.options || {});\n if (opts.addText)\n newSlide.addText(opts.addText.text, opts.addText.options || {});\n });\n}\n\n/**\n * PptxGenJS: Slide Object Generators\n */\n/** counter for included charts (used for index in their filenames) */\nlet _chartCounter = 0;\n/**\n * Transforms a slide definition to a slide object that is then passed to the XML transformation process.\n * @param {SlideMasterProps} props - slide definition\n * @param {PresSlide|SlideLayout} target - empty slide object that should be updated by the passed definition\n */\nfunction createSlideMaster(props, target) {\n // STEP 1: Add background if either the slide or layout has background props\n // if (props.background || target.background) addBackgroundDefinition(props.background, target)\n if (props.bkgd)\n target.bkgd = props.bkgd; // DEPRECATED: (remove in v4.0.0)\n // STEP 2: Add all Slide Master objects in the order they were given\n if (props.objects && Array.isArray(props.objects) && props.objects.length > 0) {\n props.objects.forEach((object, idx) => {\n const key = Object.keys(object)[0];\n const tgt = target;\n if (MASTER_OBJECTS[key] && key === 'chart')\n addChartDefinition(tgt, object[key].type, object[key].data, object[key].opts);\n else if (MASTER_OBJECTS[key] && key === 'image')\n addImageDefinition(tgt, object[key]);\n else if (MASTER_OBJECTS[key] && key === 'line')\n addShapeDefinition(tgt, SHAPE_TYPE.LINE, object[key]);\n else if (MASTER_OBJECTS[key] && key === 'rect')\n addShapeDefinition(tgt, SHAPE_TYPE.RECTANGLE, object[key]);\n else if (MASTER_OBJECTS[key] && key === 'text')\n addTextDefinition(tgt, [{ text: object[key].text }], object[key].options, false);\n else if (MASTER_OBJECTS[key] && key === 'placeholder') {\n // TODO: 20180820: Check for existing `name`?\n object[key].options.placeholder = object[key].options.name;\n delete object[key].options.name; // remap name for earier handling internally\n object[key].options._placeholderType = object[key].options.type;\n delete object[key].options.type; // remap name for earier handling internally\n object[key].options._placeholderIdx = 100 + idx;\n addTextDefinition(tgt, [{ text: object[key].text }], object[key].options, true);\n // TODO: ISSUE#599 - only text is suported now (add more below)\n // else if (object[key].image) addImageDefinition(tgt, object[key].image)\n /* 20200120: So... image placeholders go into the \"slideLayoutN.xml\" file and addImage doesnt do this yet...\n <p:sp>\n <p:nvSpPr>\n <p:cNvPr id=\"7\" name=\"Picture Placeholder 6\">\n <a:extLst>\n <a:ext uri=\"{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}\">\n <a16:creationId xmlns:a16=\"http://schemas.microsoft.com/office/drawing/2014/main\" id=\"{CE1AE45D-8641-0F4F-BDB5-080E69CCB034}\"/>\n </a:ext>\n </a:extLst>\n </p:cNvPr>\n <p:cNvSpPr>\n */\n }\n });\n }\n // STEP 3: Add Slide Numbers (NOTE: Do this last so numbers are not covered by objects!)\n if (props.slideNumber && typeof props.slideNumber === 'object')\n target._slideNumberProps = props.slideNumber;\n}\n/**\n * Generate the chart based on input data.\n * OOXML Chart Spec: ISO/IEC 29500-1:2016(E)\n *\n * @param {CHART_NAME | IChartMulti[]} `type` should belong to: 'column', 'pie'\n * @param {[]} `data` a JSON object with follow the following format\n * @param {IChartOptsLib} `opt` chart options\n * @param {PresSlide} `target` slide object that the chart will be added to\n * @return {object} chart object\n * {\n * title: 'eSurvey chart',\n * data: [\n * {\n * name: 'Income',\n * labels: ['2005', '2006', '2007', '2008', '2009'],\n * values: [23.5, 26.2, 30.1, 29.5, 24.6]\n * },\n * {\n * name: 'Expense',\n * labels: ['2005', '2006', '2007', '2008', '2009'],\n * values: [18.1, 22.8, 23.9, 25.1, 25]\n * }\n * ]\n * }\n */\nfunction addChartDefinition(target, type, data, opt) {\n var _a;\n function correctGridLineOptions(glOpts) {\n if (!glOpts || glOpts.style === 'none')\n return;\n if (glOpts.size !== undefined && (isNaN(Number(glOpts.size)) || glOpts.size <= 0)) {\n console.warn('Warning: chart.gridLine.size must be greater than 0.');\n delete glOpts.size; // delete prop to used defaults\n }\n if (glOpts.style && !['solid', 'dash', 'dot'].includes(glOpts.style)) {\n console.warn('Warning: chart.gridLine.style options: `solid`, `dash`, `dot`.');\n delete glOpts.style;\n }\n if (glOpts.cap && !['flat', 'square', 'round'].includes(glOpts.cap)) {\n console.warn('Warning: chart.gridLine.cap options: `flat`, `square`, `round`.');\n delete glOpts.cap;\n }\n }\n const chartId = ++_chartCounter;\n const resultObject = {\n _type: null,\n text: null,\n options: null,\n chartRid: null,\n };\n // DESIGN: `type` can an object (ex: `pptx.charts.DOUGHNUT`) or an array of chart objects\n // EX: addChartDefinition([ { type:pptx.charts.BAR, data:{name:'', labels:[], values[]} }, {<etc>} ])\n // Multi-Type Charts\n let tmpOpt = null;\n let tmpData = [];\n if (Array.isArray(type)) {\n // For multi-type charts there needs to be data for each type,\n // as well as a single data source for non-series operations.\n // The data is indexed below to keep the data in order when segmented\n // into types.\n type.forEach(obj => {\n tmpData = tmpData.concat(obj.data);\n });\n tmpOpt = data || opt;\n }\n else {\n tmpData = data;\n tmpOpt = opt;\n }\n tmpData.forEach((item, i) => {\n item._dataIndex = i;\n // Converts the 'labels' array from string[] to string[][] (or the respective primitive type), if needed\n if (item.labels !== undefined && !Array.isArray(item.labels[0])) {\n item.labels = [item.labels];\n }\n });\n const options = tmpOpt && typeof tmpOpt === 'object' ? tmpOpt : {};\n // STEP 1: TODO: check for reqd fields, correct type, etc\n // `type` exists in CHART_TYPE\n // Array.isArray(data)\n /*\n if ( Array.isArray(rel.data) && rel.data.length > 0 && typeof rel.data[0] === 'object'\n && rel.data[0].labels && Array.isArray(rel.data[0].labels)\n && rel.data[0].values && Array.isArray(rel.data[0].values) ) {\n obj = rel.data[0];\n }\n else {\n console.warn(\"USAGE: addChart( 'pie', [ {name:'Sales', labels:['Jan','Feb'], values:[10,20]} ], {x:1, y:1} )\");\n return;\n }\n */\n // STEP 2: Set default options/decode user options\n // A: Core\n options._type = type;\n options.x = typeof options.x !== 'undefined' && options.x != null && !isNaN(Number(options.x)) ? options.x : 1;\n options.y = typeof options.y !== 'undefined' && options.y != null && !isNaN(Number(options.y)) ? options.y : 1;\n options.w = options.w || '50%';\n options.h = options.h || '50%';\n options.objectName = options.objectName\n ? encodeXmlEntities(options.objectName)\n : `Chart ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.chart).length}`;\n // B: Options: misc\n if (!['bar', 'col'].includes(options.barDir || ''))\n options.barDir = 'col';\n // barGrouping: \"21.2.3.17 ST_Grouping (Grouping)\"\n // barGrouping must be handled before data label validation as it can affect valid label positioning\n if (options._type === CHART_TYPE.AREA) {\n if (!['stacked', 'standard', 'percentStacked'].includes(options.barGrouping || ''))\n options.barGrouping = 'standard';\n }\n if (options._type === CHART_TYPE.BAR) {\n if (!['clustered', 'stacked', 'percentStacked'].includes(options.barGrouping || ''))\n options.barGrouping = 'clustered';\n }\n if (options._type === CHART_TYPE.BAR3D) {\n if (!['clustered', 'stacked', 'standard', 'percentStacked'].includes(options.barGrouping || ''))\n options.barGrouping = 'standard';\n }\n if ((_a = options.barGrouping) === null || _a === void 0 ? void 0 : _a.includes('tacked')) {\n if (!options.barGapWidthPct)\n options.barGapWidthPct = 50;\n }\n // Clean up and validate data label positions\n // REFERENCE: https://docs.microsoft.com/en-us/openspecs/office_standards/ms-oi29500/e2b1697c-7adc-463d-9081-3daef72f656f?redirectedfrom=MSDN\n if (options.dataLabelPosition) {\n if (options._type === CHART_TYPE.AREA || options._type === CHART_TYPE.BAR3D || options._type === CHART_TYPE.DOUGHNUT || options._type === CHART_TYPE.RADAR) {\n delete options.dataLabelPosition;\n }\n if (options._type === CHART_TYPE.PIE) {\n if (!['bestFit', 'ctr', 'inEnd', 'outEnd'].includes(options.dataLabelPosition))\n delete options.dataLabelPosition;\n }\n if (options._type === CHART_TYPE.BUBBLE || options._type === CHART_TYPE.BUBBLE3D || options._type === CHART_TYPE.LINE || options._type === CHART_TYPE.SCATTER) {\n if (!['b', 'ctr', 'l', 'r', 't'].includes(options.dataLabelPosition))\n delete options.dataLabelPosition;\n }\n if (options._type === CHART_TYPE.BAR) {\n if (!['stacked', 'percentStacked'].includes(options.barGrouping || '')) {\n if (!['ctr', 'inBase', 'inEnd'].includes(options.dataLabelPosition))\n delete options.dataLabelPosition;\n }\n if (!['clustered'].includes(options.barGrouping || '')) {\n if (!['ctr', 'inBase', 'inEnd', 'outEnd'].includes(options.dataLabelPosition))\n delete options.dataLabelPosition;\n }\n }\n }\n options.dataLabelBkgrdColors = options.dataLabelBkgrdColors || !options.dataLabelBkgrdColors ? options.dataLabelBkgrdColors : false;\n if (!['b', 'l', 'r', 't', 'tr'].includes(options.legendPos || ''))\n options.legendPos = 'r';\n // 3D bar: ST_Shape\n if (!['cone', 'coneToMax', 'box', 'cylinder', 'pyramid', 'pyramidToMax'].includes(options.bar3DShape || ''))\n options.bar3DShape = 'box';\n // lineDataSymbol: http://www.datypic.com/sc/ooxml/a-val-32.html\n // Spec has [plus,star,x] however neither PPT2013 nor PPT-Online support them\n if (!['circle', 'dash', 'diamond', 'dot', 'none', 'square', 'triangle'].includes(options.lineDataSymbol || ''))\n options.lineDataSymbol = 'circle';\n if (!['gap', 'span'].includes(options.displayBlanksAs || ''))\n options.displayBlanksAs = 'span';\n if (!['standard', 'marker', 'filled'].includes(options.radarStyle || ''))\n options.radarStyle = 'standard';\n options.lineDataSymbolSize = options.lineDataSymbolSize && !isNaN(options.lineDataSymbolSize) ? options.lineDataSymbolSize : 6;\n options.lineDataSymbolLineSize = options.lineDataSymbolLineSize && !isNaN(options.lineDataSymbolLineSize) ? valToPts(options.lineDataSymbolLineSize) : valToPts(0.75);\n // `layout` allows the override of PPT defaults to maximize space\n if (options.layout) {\n ['x', 'y', 'w', 'h'].forEach(key => {\n const val = options.layout[key];\n if (isNaN(Number(val)) || val < 0 || val > 1) {\n console.warn('Warning: chart.layout.' + key + ' can only be 0-1');\n delete options.layout[key]; // remove invalid value so that default will be used\n }\n });\n }\n // Set gridline defaults\n options.catGridLine = options.catGridLine || (options._type === CHART_TYPE.SCATTER ? { color: 'D9D9D9', size: 1 } : { style: 'none' });\n options.valGridLine = options.valGridLine || (options._type === CHART_TYPE.SCATTER ? { color: 'D9D9D9', size: 1 } : {});\n options.serGridLine = options.serGridLine || (options._type === CHART_TYPE.SCATTER ? { color: 'D9D9D9', size: 1 } : { style: 'none' });\n correctGridLineOptions(options.catGridLine);\n correctGridLineOptions(options.valGridLine);\n correctGridLineOptions(options.serGridLine);\n correctShadowOptions(options.shadow);\n // C: Options: plotArea\n options.showDataTable = options.showDataTable || !options.showDataTable ? options.showDataTable : false;\n options.showDataTableHorzBorder = options.showDataTableHorzBorder || !options.showDataTableHorzBorder ? options.showDataTableHorzBorder : true;\n options.showDataTableVertBorder = options.showDataTableVertBorder || !options.showDataTableVertBorder ? options.showDataTableVertBorder : true;\n options.showDataTableOutline = options.showDataTableOutline || !options.showDataTableOutline ? options.showDataTableOutline : true;\n options.showDataTableKeys = options.showDataTableKeys || !options.showDataTableKeys ? options.showDataTableKeys : true;\n options.showLabel = options.showLabel || !options.showLabel ? options.showLabel : false;\n options.showLegend = options.showLegend || !options.showLegend ? options.showLegend : false;\n options.showPercent = options.showPercent || !options.showPercent ? options.showPercent : true;\n options.showTitle = options.showTitle || !options.showTitle ? options.showTitle : false;\n options.showValue = options.showValue || !options.showValue ? options.showValue : false;\n options.showLeaderLines = options.showLeaderLines || !options.showLeaderLines ? options.showLeaderLines : false;\n options.catAxisLineShow = typeof options.catAxisLineShow !== 'undefined' ? options.catAxisLineShow : true;\n options.valAxisLineShow = typeof options.valAxisLineShow !== 'undefined' ? options.valAxisLineShow : true;\n options.serAxisLineShow = typeof options.serAxisLineShow !== 'undefined' ? options.serAxisLineShow : true;\n options.v3DRotX = !isNaN(options.v3DRotX) && options.v3DRotX >= -90 && options.v3DRotX <= 90 ? options.v3DRotX : 30;\n options.v3DRotY = !isNaN(options.v3DRotY) && options.v3DRotY >= 0 && options.v3DRotY <= 360 ? options.v3DRotY : 30;\n options.v3DRAngAx = options.v3DRAngAx || !options.v3DRAngAx ? options.v3DRAngAx : true;\n options.v3DPerspective = !isNaN(options.v3DPerspective) && options.v3DPerspective >= 0 && options.v3DPerspective <= 240 ? options.v3DPerspective : 30;\n // D: Options: chart\n options.barGapWidthPct = !isNaN(options.barGapWidthPct) && options.barGapWidthPct >= 0 && options.barGapWidthPct <= 1000 ? options.barGapWidthPct : 150;\n options.barGapDepthPct = !isNaN(options.barGapDepthPct) && options.barGapDepthPct >= 0 && options.barGapDepthPct <= 1000 ? options.barGapDepthPct : 150;\n options.chartColors = Array.isArray(options.chartColors)\n ? options.chartColors\n : options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.DOUGHNUT\n ? PIECHART_COLORS\n : BARCHART_COLORS;\n options.chartColorsOpacity = options.chartColorsOpacity && !isNaN(options.chartColorsOpacity) ? options.chartColorsOpacity : null;\n // DEPRECATED: v3.11.0 - use `plotArea.border` vvv\n options.border = options.border && typeof options.border === 'object' ? options.border : null;\n if (options.border && (!options.border.pt || isNaN(options.border.pt)))\n options.border.pt = DEF_CHART_BORDER.pt;\n if (options.border && (!options.border.color || typeof options.border.color !== 'string'))\n options.border.color = DEF_CHART_BORDER.color;\n // DEPRECATED: (remove above in v4.0) ^^^\n options.plotArea = options.plotArea || {};\n options.plotArea.border = options.plotArea.border && typeof options.plotArea.border === 'object' ? options.plotArea.border : null;\n if (options.plotArea.border && (!options.plotArea.border.pt || isNaN(options.plotArea.border.pt)))\n options.plotArea.border.pt = DEF_CHART_BORDER.pt;\n if (options.plotArea.border && (!options.plotArea.border.color || typeof options.plotArea.border.color !== 'string')) {\n options.plotArea.border.color = DEF_CHART_BORDER.color;\n }\n if (options.border)\n options.plotArea.border = options.border; // @deprecated [[remove in v4.0]]\n options.plotArea.fill = options.plotArea.fill || { color: null, transparency: null };\n if (options.fill)\n options.plotArea.fill.color = options.fill; // @deprecated [[remove in v4.0]]\n //\n options.chartArea = options.chartArea || {};\n options.chartArea.border = options.chartArea.border && typeof options.chartArea.border === 'object' ? options.chartArea.border : null;\n if (options.chartArea.border) {\n options.chartArea.border = {\n color: options.chartArea.border.color || DEF_CHART_BORDER.color,\n pt: options.chartArea.border.pt || DEF_CHART_BORDER.pt,\n };\n }\n options.chartArea.roundedCorners = typeof options.chartArea.roundedCorners === 'boolean' ? options.chartArea.roundedCorners : true;\n //\n options.dataBorder = options.dataBorder && typeof options.dataBorder === 'object' ? options.dataBorder : null;\n if (options.dataBorder && (!options.dataBorder.pt || isNaN(options.dataBorder.pt)))\n options.dataBorder.pt = 0.75;\n if (options.dataBorder && options.dataBorder.color) {\n const isHexColor = typeof options.dataBorder.color === 'string' && options.dataBorder.color.length === 6 && /^[0-9A-Fa-f]{6}$/.test(options.dataBorder.color);\n const isSchemeColor = Object.values(SCHEME_COLOR_NAMES).includes(options.dataBorder.color);\n if (!isHexColor && !isSchemeColor) {\n options.dataBorder.color = 'F9F9F9'; // Fallback if neither hex nor scheme color\n }\n }\n //\n if (!options.dataLabelFormatCode && options._type === CHART_TYPE.SCATTER)\n options.dataLabelFormatCode = 'General';\n if (!options.dataLabelFormatCode && (options._type === CHART_TYPE.PIE || options._type === CHART_TYPE.DOUGHNUT)) {\n options.dataLabelFormatCode = options.showPercent ? '0%' : 'General';\n }\n options.dataLabelFormatCode = options.dataLabelFormatCode && typeof options.dataLabelFormatCode === 'string' ? options.dataLabelFormatCode : '#,##0';\n //\n // Set default format for Scatter chart labels to custom string if not defined\n if (!options.dataLabelFormatScatter && options._type === CHART_TYPE.SCATTER)\n options.dataLabelFormatScatter = 'custom';\n //\n options.lineSize = typeof options.lineSize === 'number' ? options.lineSize : 2;\n options.valAxisMajorUnit = typeof options.valAxisMajorUnit === 'number' ? options.valAxisMajorUnit : null;\n if (options._type === CHART_TYPE.AREA || options._type === CHART_TYPE.BAR || options._type === CHART_TYPE.BAR3D || options._type === CHART_TYPE.LINE) {\n options.catAxisMultiLevelLabels = !!options.catAxisMultiLevelLabels;\n }\n else {\n delete options.catAxisMultiLevelLabels;\n }\n // STEP 4: Set props\n resultObject._type = 'chart';\n resultObject.options = options;\n resultObject.chartRid = getNewRelId(target);\n // STEP 5: Add this chart to this Slide Rels (rId/rels count spans all slides! Count all images to get next rId)\n target._relsChart.push({\n rId: getNewRelId(target),\n data: tmpData,\n opts: options,\n type: options._type,\n globalId: chartId,\n fileName: `chart${chartId}.xml`,\n Target: `/ppt/charts/chart${chartId}.xml`,\n });\n target._slideObjects.push(resultObject);\n return resultObject;\n}\n/**\n * Adds an image object to a slide definition.\n * This method can be called with only two args (opt, target) - this is supposed to be the only way in future.\n * @param {ImageProps} `opt` - object containing `path`/`data`, `x`, `y`, etc.\n * @param {PresSlide} `target` - slide that the image should be added to (if not specified as the 2nd arg)\n * @note: Remote images (eg: \"http://whatev.com/blah\"/from web and/or remote server arent supported yet - we'd need to create an <img>, load it, then send to canvas\n * @see: https://stackoverflow.com/questions/164181/how-to-fetch-a-remote-image-to-display-in-a-canvas)\n */\nfunction addImageDefinition(target, opt) {\n const newObject = {\n _type: null,\n text: null,\n options: null,\n image: null,\n imageRid: null,\n hyperlink: null,\n };\n // FIRST: Set vars for this image (object param replaces positional args in 1.1.0)\n const intPosX = opt.x || 0;\n const intPosY = opt.y || 0;\n const intWidth = opt.w || 0;\n const intHeight = opt.h || 0;\n const sizing = opt.sizing || null;\n const objHyperlink = opt.hyperlink || '';\n const strImageData = opt.data || '';\n const strImagePath = opt.path || '';\n let imageRelId = getNewRelId(target);\n const objectName = opt.objectName ? encodeXmlEntities(opt.objectName) : `Image ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.image).length}`;\n // REALITY-CHECK:\n if (!strImagePath && !strImageData) {\n console.error('ERROR: addImage() requires either \\'data\\' or \\'path\\' parameter!');\n return null;\n }\n else if (strImagePath && typeof strImagePath !== 'string') {\n console.error(`ERROR: addImage() 'path' should be a string, ex: {path:'/img/sample.png'} - you sent ${String(strImagePath)}`);\n return null;\n }\n else if (strImageData && typeof strImageData !== 'string') {\n console.error(`ERROR: addImage() 'data' should be a string, ex: {data:'image/png;base64,NMP[...]'} - you sent ${String(strImageData)}`);\n return null;\n }\n else if (strImageData && typeof strImageData === 'string' && !strImageData.toLowerCase().includes('base64,')) {\n console.error('ERROR: Image `data` value lacks a base64 header! Ex: \\'image/png;base64,NMP[...]\\')');\n return null;\n }\n // STEP 1: Set extension\n // NOTE: Split to address URLs with params (eg: `path/brent.jpg?someParam=true`)\n let strImgExtn = (strImagePath\n .substring(strImagePath.lastIndexOf('/') + 1)\n .split('?')[0]\n .split('.')\n .pop()\n .split('#')[0] || 'png').toLowerCase();\n // However, pre-encoded images can be whatever mime-type they want (and good for them!)\n if (strImageData && /image\\/(\\w+);/.exec(strImageData) && /image\\/(\\w+);/.exec(strImageData).length > 0) {\n strImgExtn = /image\\/(\\w+);/.exec(strImageData)[1];\n }\n else if (strImageData === null || strImageData === void 0 ? void 0 : strImageData.toLowerCase().includes('image/svg+xml')) {\n strImgExtn = 'svg';\n }\n // STEP 2: Set type/path\n newObject._type = SLIDE_OBJECT_TYPES.image;\n newObject.image = strImagePath || 'preencoded.png';\n // STEP 3: Set image properties & options\n // FIXME: Measure actual image when no intWidth/intHeight params passed\n // ....: This is an async process: we need to make getSizeFromImage use callback, then set H/W...\n // if ( !intWidth || !intHeight ) { var imgObj = getSizeFromImage(strImagePath);\n newObject.options = {\n x: intPosX || 0,\n y: intPosY || 0,\n w: intWidth || 1,\n h: intHeight || 1,\n altText: opt.altText || '',\n rounding: typeof opt.rounding === 'boolean' ? opt.rounding : false,\n sizing,\n placeholder: opt.placeholder,\n rotate: opt.rotate || 0,\n flipV: opt.flipV || false,\n flipH: opt.flipH || false,\n transparency: opt.transparency || 0,\n objectName,\n shadow: correctShadowOptions(opt.shadow),\n };\n // STEP 4: Add this image to this Slide Rels (rId/rels count spans all slides! Count all images to get next rId)\n if (strImgExtn === 'svg') {\n // SVG files consume *TWO* rId's: (a png version and the svg image)\n // <Relationship Id=\"rId3\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\" Target=\"../media/image1.png\"/>\n // <Relationship Id=\"rId4\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\" Target=\"../media/image2.svg\"/>\n target._relsMedia.push({\n path: strImagePath || strImageData + 'png',\n type: 'image/png',\n extn: 'png',\n data: strImageData || '',\n rId: imageRelId,\n Target: `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.png`,\n isSvgPng: true,\n svgSize: { w: getSmartParseNumber(newObject.options.w, 'X', target._presLayout), h: getSmartParseNumber(newObject.options.h, 'Y', target._presLayout) },\n });\n newObject.imageRid = imageRelId;\n target._relsMedia.push({\n path: strImagePath || strImageData,\n type: 'image/svg+xml',\n extn: strImgExtn,\n data: strImageData || '',\n rId: imageRelId + 1,\n Target: `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.${strImgExtn}`,\n });\n newObject.imageRid = imageRelId + 1;\n }\n else {\n // PERF: Duplicate media should reuse existing `Target` value and not create an additional copy\n const dupeItem = target._relsMedia.filter(item => item.path && item.path === strImagePath && item.type === 'image/' + strImgExtn && !item.isDuplicate)[0];\n target._relsMedia.push({\n path: strImagePath || 'preencoded.' + strImgExtn,\n type: 'image/' + strImgExtn,\n extn: strImgExtn,\n data: strImageData || '',\n rId: imageRelId,\n isDuplicate: !!(dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target),\n Target: (dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target) ? dupeItem.Target : `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.${strImgExtn}`,\n });\n newObject.imageRid = imageRelId;\n }\n // STEP 5: Hyperlink support\n if (typeof objHyperlink === 'object') {\n if (!objHyperlink.url && !objHyperlink.slide)\n throw new Error('ERROR: `hyperlink` option requires either: `url` or `slide`');\n else {\n imageRelId++;\n target._rels.push({\n type: SLIDE_OBJECT_TYPES.hyperlink,\n data: objHyperlink.slide ? 'slide' : 'dummy',\n rId: imageRelId,\n Target: objHyperlink.url || objHyperlink.slide.toString(),\n });\n objHyperlink._rId = imageRelId;\n newObject.hyperlink = objHyperlink;\n }\n }\n // STEP 6: Add object to slide\n target._slideObjects.push(newObject);\n}\n/**\n * Adds a media object to a slide definition.\n * @param {PresSlide} `target` - slide object that the media will be added to\n * @param {MediaProps} `opt` - media options\n */\nfunction addMediaDefinition(target, opt) {\n const intPosX = opt.x || 0;\n const intPosY = opt.y || 0;\n const intSizeX = opt.w || 2;\n const intSizeY = opt.h || 2;\n const strData = opt.data || '';\n const strLink = opt.link || '';\n const strPath = opt.path || '';\n const strType = opt.type || 'audio';\n let strExtn = '';\n const strCover = opt.cover || IMG_PLAYBTN;\n const objectName = opt.objectName ? encodeXmlEntities(opt.objectName) : `Media ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.media).length}`;\n const slideData = { _type: SLIDE_OBJECT_TYPES.media };\n // STEP 1: REALITY-CHECK\n if (!strPath && !strData && strType !== 'online') {\n throw new Error('addMedia() error: either `data` or `path` are required!');\n }\n else if (strData && !strData.toLowerCase().includes('base64,')) {\n throw new Error('addMedia() error: `data` value lacks a base64 header! Ex: \\'video/mpeg;base64,NMP[...]\\')');\n }\n else if (!strCover.toLowerCase().includes('base64,')) {\n throw new Error('addMedia() error: `cover` value lacks a base64 header! Ex: \\'data:image/png;base64,iV[...]\\')');\n }\n // Online Video: requires `link`\n if (strType === 'online' && !strLink) {\n throw new Error('addMedia() error: online videos require `link` value');\n }\n // FIXME: 20190707\n // strType = strData ? strData.split(';')[0].split('/')[0] : strType\n strExtn = opt.extn || (strData ? strData.split(';')[0].split('/')[1] : strPath.split('.').pop()) || 'mp3';\n // STEP 2: Set type, media\n slideData.mtype = strType;\n slideData.media = strPath || 'preencoded.mov';\n slideData.options = {};\n // STEP 3: Set media properties & options\n slideData.options.x = intPosX;\n slideData.options.y = intPosY;\n slideData.options.w = intSizeX;\n slideData.options.h = intSizeY;\n slideData.options.objectName = objectName;\n // STEP 4: Add this media to this Slide Rels (rId/rels count spans all slides! Count all media to get next rId)\n /**\n * NOTE:\n * - rId starts at 2 (hence the intRels+1 below) as slideLayout.xml is rId=1!\n *\n * NOTE:\n * - Audio/Video files consume *TWO* rId's:\n * <Relationship Id=\"rId2\" Target=\"../media/media1.mov\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/video\"/>\n * <Relationship Id=\"rId3\" Target=\"../media/media1.mov\" Type=\"http://schemas.microsoft.com/office/2007/relationships/media\"/>\n */\n if (strType === 'online') {\n const relId1 = getNewRelId(target);\n // A: Add video\n target._relsMedia.push({\n path: strPath || 'preencoded' + strExtn,\n data: 'dummy',\n type: 'online',\n extn: strExtn,\n rId: relId1,\n Target: strLink,\n });\n slideData.mediaRid = relId1;\n // B: Add cover (preview/overlay) image\n target._relsMedia.push({\n path: 'preencoded.png',\n data: strCover,\n type: 'image/png',\n extn: 'png',\n rId: getNewRelId(target),\n Target: `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.png`,\n });\n }\n else {\n // PERF: Duplicate media should reuse existing `Target` value and not create an additional copy\n const dupeItem = target._relsMedia.filter(item => item.path && item.path === strPath && item.type === strType + '/' + strExtn && !item.isDuplicate)[0];\n // A: \"relationships/video\"\n const relId1 = getNewRelId(target);\n target._relsMedia.push({\n path: strPath || 'preencoded' + strExtn,\n type: strType + '/' + strExtn,\n extn: strExtn,\n data: strData || '',\n rId: relId1,\n isDuplicate: !!(dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target),\n Target: (dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target) ? dupeItem.Target : `../media/media-${target._slideNum}-${target._relsMedia.length + 1}.${strExtn}`,\n });\n slideData.mediaRid = relId1;\n // B: \"relationships/media\"\n target._relsMedia.push({\n path: strPath || 'preencoded' + strExtn,\n type: strType + '/' + strExtn,\n extn: strExtn,\n data: strData || '',\n rId: getNewRelId(target),\n isDuplicate: !!(dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target),\n Target: (dupeItem === null || dupeItem === void 0 ? void 0 : dupeItem.Target) ? dupeItem.Target : `../media/media-${target._slideNum}-${target._relsMedia.length + 0}.${strExtn}`,\n });\n // C: Add cover (preview/overlay) image\n target._relsMedia.push({\n path: 'preencoded.png',\n type: 'image/png',\n extn: 'png',\n data: strCover,\n rId: getNewRelId(target),\n Target: `../media/image-${target._slideNum}-${target._relsMedia.length + 1}.png`,\n });\n }\n // LAST\n target._slideObjects.push(slideData);\n}\n/**\n * Adds Notes to a slide.\n * @param {PresSlide} `target` slide object\n * @param {string} `notes`\n * @since 2.3.0\n */\nfunction addNotesDefinition(target, notes) {\n target._slideObjects.push({\n _type: SLIDE_OBJECT_TYPES.notes,\n text: [{ text: notes }],\n });\n}\n/**\n * Adds a shape object to a slide definition.\n * @param {PresSlide} target slide object that the shape should be added to\n * @param {SHAPE_NAME} shapeName shape name\n * @param {ShapeProps} opts shape options\n */\nfunction addShapeDefinition(target, shapeName, opts) {\n const options = typeof opts === 'object' ? opts : {};\n options.line = options.line || { type: 'none' };\n const newObject = {\n _type: SLIDE_OBJECT_TYPES.text,\n shape: shapeName || SHAPE_TYPE.RECTANGLE,\n options,\n text: null,\n };\n // Reality check\n if (!shapeName)\n throw new Error('Missing/Invalid shape parameter! Example: `addShape(pptxgen.shapes.LINE, {x:1, y:1, w:1, h:1});`');\n // 1: ShapeLineProps defaults\n const newLineOpts = {\n type: options.line.type || 'solid',\n color: options.line.color || DEF_SHAPE_LINE_COLOR,\n transparency: options.line.transparency || 0,\n width: options.line.width || 1,\n dashType: options.line.dashType || 'solid',\n beginArrowType: options.line.beginArrowType || null,\n endArrowType: options.line.endArrowType || null,\n };\n if (typeof options.line === 'object' && options.line.type !== 'none')\n options.line = newLineOpts;\n // 2: Set options defaults\n options.x = options.x || (options.x === 0 ? 0 : 1);\n options.y = options.y || (options.y === 0 ? 0 : 1);\n options.w = options.w || (options.w === 0 ? 0 : 1);\n options.h = options.h || (options.h === 0 ? 0 : 1);\n options.objectName = options.objectName\n ? encodeXmlEntities(options.objectName)\n : `Shape ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.text).length}`;\n // 3: Handle line (lots of deprecated opts)\n if (typeof options.line === 'string') {\n const tmpOpts = newLineOpts;\n tmpOpts.color = String(options.line); // @deprecated `options.line` string (was line color)\n options.line = tmpOpts;\n }\n if (typeof options.lineSize === 'number')\n options.line.width = options.lineSize; // @deprecated (part of `ShapeLineProps` now)\n if (typeof options.lineDash === 'string')\n options.line.dashType = options.lineDash; // @deprecated (part of `ShapeLineProps` now)\n if (typeof options.lineHead === 'string')\n options.line.beginArrowType = options.lineHead; // @deprecated (part of `ShapeLineProps` now)\n if (typeof options.lineTail === 'string')\n options.line.endArrowType = options.lineTail; // @deprecated (part of `ShapeLineProps` now)\n // 4: Create hyperlink rels\n createHyperlinkRels(target, newObject);\n // LAST: Add object to slide\n target._slideObjects.push(newObject);\n}\n/**\n * Adds a table object to a slide definition.\n * @param {PresSlide} target - slide object that the table should be added to\n * @param {TableRow[]} tableRows - table data\n * @param {TableProps} options - table options\n * @param {SlideLayout} slideLayout - Slide layout\n * @param {PresLayout} presLayout - Presentation layout\n * @param {Function} addSlide - method\n * @param {Function} getSlide - method\n */\nfunction addTableDefinition(target, tableRows, options, slideLayout, presLayout, addSlide, getSlide) {\n const slides = [target]; // Create array of Slides as more may be added by auto-paging\n const opt = options && typeof options === 'object' ? options : {};\n opt.objectName = opt.objectName ? encodeXmlEntities(opt.objectName) : `Table ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.table).length}`;\n // STEP 1: REALITY-CHECK\n {\n // A: check for empty\n if (tableRows === null || tableRows.length === 0 || !Array.isArray(tableRows)) {\n throw new Error('addTable: Array expected! EX: \\'slide.addTable( [rows], {options} );\\' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)');\n }\n // B: check for non-well-formatted array (ex: rows=['a','b'] instead of [['a','b']])\n if (!tableRows[0] || !Array.isArray(tableRows[0])) {\n throw new Error('addTable: \\'rows\\' should be an array of cells! EX: \\'slide.addTable( [ [\\'A\\'], [\\'B\\'], {text:\\'C\\',options:{align:\\'center\\'}} ] );\\' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)');\n }\n // TODO: FUTURE: This is wacky and wont function right (shows .w value when there is none from demo.js?!) 20191219\n /*\n if (opt.w && opt.colW) {\n console.warn('addTable: please use either `colW` or `w` - not both (table will use `colW` and ignore `w`)')\n console.log(`${opt.w} ${opt.colW}`)\n }\n */\n }\n // STEP 2: Transform `tableRows` into well-formatted TableCell's\n // tableRows can be object or plain text array: `[{text:'cell 1'}, {text:'cell 2', options:{color:'ff0000'}}]` | `[\"cell 1\", \"cell 2\"]`\n const arrRows = [];\n tableRows.forEach(row => {\n const newRow = [];\n if (Array.isArray(row)) {\n row.forEach((cell) => {\n // A:\n const newCell = {\n _type: SLIDE_OBJECT_TYPES.tablecell,\n text: '',\n options: typeof cell === 'object' && cell.options ? cell.options : {},\n };\n // B:\n if (typeof cell === 'string' || typeof cell === 'number')\n newCell.text = cell.toString();\n else if (cell.text) {\n // Cell can contain complex text type, or string, or number\n if (typeof cell.text === 'string' || typeof cell.text === 'number')\n newCell.text = cell.text.toString();\n else if (cell.text)\n newCell.text = cell.text;\n // Capture options\n if (cell.options && typeof cell.options === 'object')\n newCell.options = cell.options;\n }\n // C: Set cell borders\n newCell.options.border = newCell.options.border || opt.border || [{ type: 'none' }, { type: 'none' }, { type: 'none' }, { type: 'none' }];\n const cellBorder = newCell.options.border;\n // CASE 1: border interface is: BorderOptions | [BorderOptions, BorderOptions, BorderOptions, BorderOptions]\n if (!Array.isArray(cellBorder) && typeof cellBorder === 'object')\n newCell.options.border = [cellBorder, cellBorder, cellBorder, cellBorder];\n // Handle: [null, null, {type:'solid'}, null]\n if (!newCell.options.border[0])\n newCell.options.border[0] = { type: 'none' };\n if (!newCell.options.border[1])\n newCell.options.border[1] = { type: 'none' };\n if (!newCell.options.border[2])\n newCell.options.border[2] = { type: 'none' };\n if (!newCell.options.border[3])\n newCell.options.border[3] = { type: 'none' };\n // set complete BorderOptions for all sides\n const arrSides = [0, 1, 2, 3];\n arrSides.forEach(idx => {\n newCell.options.border[idx] = {\n type: newCell.options.border[idx].type || DEF_CELL_BORDER.type,\n color: newCell.options.border[idx].color || DEF_CELL_BORDER.color,\n pt: typeof newCell.options.border[idx].pt === 'number' ? newCell.options.border[idx].pt : DEF_CELL_BORDER.pt,\n };\n });\n // LAST:\n newRow.push(newCell);\n });\n }\n else {\n console.log('addTable: tableRows has a bad row. A row should be an array of cells. You provided:');\n console.log(row);\n }\n arrRows.push(newRow);\n });\n // STEP 3: Set options\n opt.x = getSmartParseNumber(opt.x || (opt.x === 0 ? 0 : EMU / 2), 'X', presLayout);\n opt.y = getSmartParseNumber(opt.y || (opt.y === 0 ? 0 : EMU / 2), 'Y', presLayout);\n if (opt.h)\n opt.h = getSmartParseNumber(opt.h, 'Y', presLayout); // NOTE: Dont set default `h` - leaving it null triggers auto-rowH in `makeXMLSlide()`\n opt.fontSize = opt.fontSize || DEF_FONT_SIZE;\n opt.margin = opt.margin === 0 || opt.margin ? opt.margin : DEF_CELL_MARGIN_IN;\n if (typeof opt.margin === 'number')\n opt.margin = [Number(opt.margin), Number(opt.margin), Number(opt.margin), Number(opt.margin)];\n // NOTE: dont add default color on tables with hyperlinks! (it causes any textObj's with hyperlinks to have subsequent words to be black)\n if (JSON.stringify({ arrRows: arrRows }).indexOf('hyperlink') === -1) {\n if (!opt.color)\n opt.color = opt.color || DEF_FONT_COLOR; // Set default color if needed (table option > inherit from Slide > default to black)\n }\n if (typeof opt.border === 'string') {\n console.warn('addTable `border` option must be an object. Ex: `{border: {type:\\'none\\'}}`');\n opt.border = null;\n }\n else if (Array.isArray(opt.border)) {\n [0, 1, 2, 3].forEach(idx => {\n opt.border[idx] = opt.border[idx]\n ? { type: opt.border[idx].type || DEF_CELL_BORDER.type, color: opt.border[idx].color || DEF_CELL_BORDER.color, pt: opt.border[idx].pt || DEF_CELL_BORDER.pt }\n : { type: 'none' };\n });\n }\n opt.autoPage = typeof opt.autoPage === 'boolean' ? opt.autoPage : false;\n opt.autoPageRepeatHeader = typeof opt.autoPageRepeatHeader === 'boolean' ? opt.autoPageRepeatHeader : false;\n opt.autoPageHeaderRows = typeof opt.autoPageHeaderRows !== 'undefined' && !isNaN(Number(opt.autoPageHeaderRows)) ? Number(opt.autoPageHeaderRows) : 1;\n opt.autoPageLineWeight = typeof opt.autoPageLineWeight !== 'undefined' && !isNaN(Number(opt.autoPageLineWeight)) ? Number(opt.autoPageLineWeight) : 0;\n if (opt.autoPageLineWeight) {\n if (opt.autoPageLineWeight > 1)\n opt.autoPageLineWeight = 1;\n else if (opt.autoPageLineWeight < -1)\n opt.autoPageLineWeight = -1;\n }\n // autoPage ^^^\n // Set/Calc table width\n // Get slide margins - start with default values, then adjust if master or slide margins exist\n let arrTableMargin = DEF_SLIDE_MARGIN_IN;\n // Case 1: Master margins\n if (slideLayout && typeof slideLayout._margin !== 'undefined') {\n if (Array.isArray(slideLayout._margin))\n arrTableMargin = slideLayout._margin;\n else if (!isNaN(Number(slideLayout._margin))) {\n arrTableMargin = [Number(slideLayout._margin), Number(slideLayout._margin), Number(slideLayout._margin), Number(slideLayout._margin)];\n }\n }\n // Case 2: Table margins\n /* FIXME: add `_margin` option to slide options\n else if ( addNewSlide._margin ) {\n if ( Array.isArray(addNewSlide._margin) ) arrTableMargin = addNewSlide._margin;\n else if ( !isNaN(Number(addNewSlide._margin)) ) arrTableMargin = [Number(addNewSlide._margin), Number(addNewSlide._margin), Number(addNewSlide._margin), Number(addNewSlide._margin)];\n }\n */\n /**\n * Calc table width depending upon what data we have - several scenarios exist (including bad data, eg: colW doesnt match col count)\n * The API does not require a `w` value, but XML generation does, hence, code to calc a width below using colW value(s)\n */\n if (opt.colW) {\n const firstRowColCnt = arrRows[0].reduce((totalLen, c) => {\n var _a;\n if (((_a = c === null || c === void 0 ? void 0 : c.options) === null || _a === void 0 ? void 0 : _a.colspan) && typeof c.options.colspan === 'number') {\n totalLen += c.options.colspan;\n }\n else {\n totalLen += 1;\n }\n return totalLen;\n }, 0);\n if (typeof opt.colW === 'string' || typeof opt.colW === 'number') {\n // Ex: `colW = 3` or `colW = '3'`\n opt.w = Math.floor(Number(opt.colW) * firstRowColCnt);\n opt.colW = null; // IMPORTANT: Unset `colW` so table is created using `opt.w`, which will evenly divide cols\n }\n else if (opt.colW && Array.isArray(opt.colW) && opt.colW.length === 1 && firstRowColCnt > 1) {\n // Ex: `colW=[3]` but with >1 cols (same as above, user is saying \"use this width for all\")\n opt.w = Math.floor(Number(opt.colW) * firstRowColCnt);\n opt.colW = null; // IMPORTANT: Unset `colW` so table is created using `opt.w`, which will evenly divide cols\n }\n else if (opt.colW && Array.isArray(opt.colW) && opt.colW.length !== firstRowColCnt) {\n // Err: Mismatched colW and cols count\n console.warn('addTable: mismatch: (colW.length != data.length) Therefore, defaulting to evenly distributed col widths.');\n opt.colW = null;\n }\n }\n else if (opt.w) {\n opt.w = getSmartParseNumber(opt.w, 'X', presLayout);\n }\n else {\n opt.w = Math.floor(presLayout._sizeW / EMU - arrTableMargin[1] - arrTableMargin[3]);\n }\n // STEP 4: Convert units to EMU now (we use different logic in makeSlide->table - smartCalc is not used)\n if (opt.x && opt.x < 20)\n opt.x = inch2Emu(opt.x);\n if (opt.y && opt.y < 20)\n opt.y = inch2Emu(opt.y);\n if (opt.w && typeof opt.w === 'number' && opt.w < 20)\n opt.w = inch2Emu(opt.w);\n if (opt.h && typeof opt.h === 'number' && opt.h < 20)\n opt.h = inch2Emu(opt.h);\n // STEP 5: Loop over cells: transform each to ITableCell; check to see whether to unset `autoPage` while here\n arrRows.forEach(row => {\n row.forEach((cell, idy) => {\n // A: Transform cell data if needed\n /* Table rows can be an object or plain text - transform into object when needed\n // EX:\n var arrTabRows1 = [\n [ { text:'A1\\nA2', options:{rowspan:2, fill:'99FFCC'} } ]\n ,[ 'B2', 'C2', 'D2', 'E2' ]\n ]\n */\n if (typeof cell === 'number' || typeof cell === 'string') {\n // Grab table formatting `opts` to use here so text style/format inherits as it should\n row[idy] = { _type: SLIDE_OBJECT_TYPES.tablecell, text: String(row[idy]), options: opt };\n }\n else if (typeof cell === 'object') {\n // ARG0: `text`\n if (typeof cell.text === 'number')\n row[idy].text = row[idy].text.toString();\n else if (typeof cell.text === 'undefined' || cell.text === null)\n row[idy].text = '';\n // ARG1: `options`: ensure options exists\n row[idy].options = cell.options || {};\n // Set type to tabelcell\n row[idy]._type = SLIDE_OBJECT_TYPES.tablecell;\n }\n // B: Check for fine-grained formatting, disable auto-page when found\n // Since genXmlTextBody already checks for text array ( text:[{},..{}] ) we're done!\n // Text in individual cells will be formatted as they are added by calls to genXmlTextBody within table builder\n // if (cell.text && Array.isArray(cell.text)) opt.autoPage = false\n // TODO: FIXME: WIP: 20210807: We cant do this anymore\n });\n });\n // If autoPage = true, we need to return references to newly created slides if any\n const newAutoPagedSlides = [];\n // STEP 6: Auto-Paging: (via {options} and used internally)\n // (used internally by `tableToSlides()` to not engage recursion - we've already paged the table data, just add this one)\n if (opt && !opt.autoPage) {\n // Create hyperlink rels (IMPORTANT: Wait until table has been shredded across Slides or all rels will end-up on Slide 1!)\n createHyperlinkRels(target, arrRows);\n // Add slideObjects (NOTE: Use `extend` to avoid mutation)\n target._slideObjects.push({\n _type: SLIDE_OBJECT_TYPES.table,\n arrTabRows: arrRows,\n options: Object.assign({}, opt),\n });\n }\n else {\n if (opt.autoPageRepeatHeader)\n opt._arrObjTabHeadRows = arrRows.filter((_row, idx) => idx < opt.autoPageHeaderRows);\n // Loop over rows and create 1-N tables as needed (ISSUE#21)\n getSlidesForTableRows(arrRows, opt, presLayout, slideLayout).forEach((slide, idx) => {\n // A: Create new Slide when needed, otherwise, use existing (NOTE: More than 1 table can be on a Slide, so we will go up AND down the Slide chain)\n if (!getSlide(target._slideNum + idx))\n slides.push(addSlide({ masterName: (slideLayout === null || slideLayout === void 0 ? void 0 : slideLayout._name) || null }));\n // B: Reset opt.y to `option`/`margin` after first Slide (ISSUE#43, ISSUE#47, ISSUE#48)\n if (idx > 0)\n opt.y = inch2Emu(opt.autoPageSlideStartY || opt.newSlideStartY || arrTableMargin[0]);\n // C: Add this table to new Slide\n {\n const newSlide = getSlide(target._slideNum + idx);\n opt.autoPage = false;\n // Create hyperlink rels (IMPORTANT: Wait until table has been shredded across Slides or all rels will end-up on Slide 1!)\n createHyperlinkRels(newSlide, slide.rows);\n // Add rows to new slide\n newSlide.addTable(slide.rows, Object.assign({}, opt));\n // Add reference to the new slide so it can be returned, but don't add the first one because the user already has a reference to that one.\n if (idx > 0)\n newAutoPagedSlides.push(newSlide);\n }\n });\n }\n return newAutoPagedSlides;\n}\n/**\n * Adds a text object to a slide definition.\n * @param {PresSlide} target - slide object that the text should be added to\n * @param {string|TextProps[]} text text string or object\n * @param {TextPropsOptions} opts text options\n * @param {boolean} isPlaceholder whether this a placeholder object\n * @since: 1.0.0\n */\nfunction addTextDefinition(target, text, opts, isPlaceholder) {\n const newObject = {\n _type: isPlaceholder ? SLIDE_OBJECT_TYPES.placeholder : SLIDE_OBJECT_TYPES.text,\n shape: (opts === null || opts === void 0 ? void 0 : opts.shape) || SHAPE_TYPE.RECTANGLE,\n text: !text || text.length === 0 ? [{ text: '', options: null }] : text,\n options: opts || {},\n };\n function cleanOpts(itemOpts) {\n // STEP 1: Set some options\n {\n // A.1: Color (placeholders should inherit their colors or override them, so don't default them)\n if (!itemOpts.placeholder) {\n itemOpts.color = itemOpts.color || newObject.options.color || target.color || DEF_FONT_COLOR;\n }\n // A.2: Placeholder should inherit their bullets or override them, so don't default them\n if (itemOpts.placeholder || isPlaceholder) {\n itemOpts.bullet = itemOpts.bullet || false;\n }\n // A.3: Text targeting a placeholder need to inherit the placeholders options (eg: margin, valign, etc.) (Issue #640)\n if (itemOpts.placeholder && target._slideLayout && target._slideLayout._slideObjects) {\n const placeHold = target._slideLayout._slideObjects.filter(item => item._type === 'placeholder' && item.options && item.options.placeholder && item.options.placeholder === itemOpts.placeholder)[0];\n if (placeHold === null || placeHold === void 0 ? void 0 : placeHold.options)\n itemOpts = Object.assign(Object.assign({}, itemOpts), placeHold.options);\n }\n // A.4: Other options\n itemOpts.objectName = itemOpts.objectName\n ? encodeXmlEntities(itemOpts.objectName)\n : `Text ${target._slideObjects.filter(obj => obj._type === SLIDE_OBJECT_TYPES.text).length}`;\n // B:\n if (itemOpts.shape === SHAPE_TYPE.LINE) {\n // ShapeLineProps defaults\n const newLineOpts = {\n type: itemOpts.line.type || 'solid',\n color: itemOpts.line.color || DEF_SHAPE_LINE_COLOR,\n transparency: itemOpts.line.transparency || 0,\n width: itemOpts.line.width || 1,\n dashType: itemOpts.line.dashType || 'solid',\n beginArrowType: itemOpts.line.beginArrowType || null,\n endArrowType: itemOpts.line.endArrowType || null,\n };\n if (typeof itemOpts.line === 'object')\n itemOpts.line = newLineOpts;\n // 3: Handle line (lots of deprecated opts)\n if (typeof itemOpts.line === 'string') {\n const tmpOpts = newLineOpts;\n if (typeof itemOpts.line === 'string')\n tmpOpts.color = itemOpts.line; // @deprecated [remove in v4.0]\n // tmpOpts.color = itemOpts.line!.toString() // @deprecated `itemOpts.line`:[string] (was line color)\n itemOpts.line = tmpOpts;\n }\n if (typeof itemOpts.lineSize === 'number')\n itemOpts.line.width = itemOpts.lineSize; // @deprecated (part of `ShapeLineProps` now)\n if (typeof itemOpts.lineDash === 'string')\n itemOpts.line.dashType = itemOpts.lineDash; // @deprecated (part of `ShapeLineProps` now)\n if (typeof itemOpts.lineHead === 'string')\n itemOpts.line.beginArrowType = itemOpts.lineHead; // @deprecated (part of `ShapeLineProps` now)\n if (typeof itemOpts.lineTail === 'string')\n itemOpts.line.endArrowType = itemOpts.lineTail; // @deprecated (part of `ShapeLineProps` now)\n }\n // C: Line opts\n itemOpts.line = itemOpts.line || {};\n itemOpts.lineSpacing = itemOpts.lineSpacing && !isNaN(itemOpts.lineSpacing) ? itemOpts.lineSpacing : null;\n itemOpts.lineSpacingMultiple = itemOpts.lineSpacingMultiple && !isNaN(itemOpts.lineSpacingMultiple) ? itemOpts.lineSpacingMultiple : null;\n // D: Transform text options to bodyProperties as thats how we build XML\n itemOpts._bodyProp = itemOpts._bodyProp || {};\n itemOpts._bodyProp.autoFit = itemOpts.autoFit || false; // DEPRECATED: (3.3.0) If true, shape will collapse to text size (Fit To shape)\n itemOpts._bodyProp.anchor = !itemOpts.placeholder ? TEXT_VALIGN.ctr : null; // VALS: [t,ctr,b]\n itemOpts._bodyProp.vert = itemOpts.vert || null; // VALS: [eaVert,horz,mongolianVert,vert,vert270,wordArtVert,wordArtVertRtl]\n itemOpts._bodyProp.wrap = typeof itemOpts.wrap === 'boolean' ? itemOpts.wrap : true;\n // E: Inset\n // @deprecated 3.10.0 (`inset` - use `margin`)\n if ((itemOpts.inset && !isNaN(Number(itemOpts.inset))) || itemOpts.inset === 0) {\n itemOpts._bodyProp.lIns = inch2Emu(itemOpts.inset);\n itemOpts._bodyProp.rIns = inch2Emu(itemOpts.inset);\n itemOpts._bodyProp.tIns = inch2Emu(itemOpts.inset);\n itemOpts._bodyProp.bIns = inch2Emu(itemOpts.inset);\n }\n // F: Transform @deprecated props\n if (typeof itemOpts.underline === 'boolean' && itemOpts.underline === true)\n itemOpts.underline = { style: 'sng' };\n }\n // STEP 2: Transform `align`/`valign` to XML values, store in _bodyProp for XML gen\n {\n if ((itemOpts.align || '').toLowerCase().indexOf('c') === 0)\n itemOpts._bodyProp.align = TEXT_HALIGN.center;\n else if ((itemOpts.align || '').toLowerCase().indexOf('l') === 0)\n itemOpts._bodyProp.align = TEXT_HALIGN.left;\n else if ((itemOpts.align || '').toLowerCase().indexOf('r') === 0)\n itemOpts._bodyProp.align = TEXT_HALIGN.right;\n else if ((itemOpts.align || '').toLowerCase().indexOf('j') === 0)\n itemOpts._bodyProp.align = TEXT_HALIGN.justify;\n if ((itemOpts.valign || '').toLowerCase().indexOf('b') === 0)\n itemOpts._bodyProp.anchor = TEXT_VALIGN.b;\n else if ((itemOpts.valign || '').toLowerCase().indexOf('m') === 0)\n itemOpts._bodyProp.anchor = TEXT_VALIGN.ctr;\n else if ((itemOpts.valign || '').toLowerCase().indexOf('t') === 0)\n itemOpts._bodyProp.anchor = TEXT_VALIGN.t;\n }\n // STEP 3: ROBUST: Set rational values for some shadow props if needed\n correctShadowOptions(itemOpts.shadow);\n return itemOpts;\n }\n // STEP 1: Create/Clean object options\n newObject.options = cleanOpts(newObject.options);\n // STEP 2: Create/Clean text options\n newObject.text.forEach(item => (item.options = cleanOpts(item.options || {})));\n // STEP 3: Create hyperlinks\n createHyperlinkRels(target, newObject.text || '');\n // LAST: Add object to Slide\n target._slideObjects.push(newObject);\n}\n/**\n * Adds placeholder objects to slide\n * @param {PresSlide} slide - slide object containing layouts\n */\nfunction addPlaceholdersToSlideLayouts(slide) {\n // Add all placeholders on this Slide that dont already exist\n (slide._slideLayout._slideObjects || []).forEach(slideLayoutObj => {\n if (slideLayoutObj._type === SLIDE_OBJECT_TYPES.placeholder) {\n // A: Search for this placeholder on Slide before we add\n // NOTE: Check to ensure a placeholder does not already exist on the Slide\n // They are created when they have been populated with text (ex: `slide.addText('Hi', { placeholder:'title' });`)\n if (slide._slideObjects.filter(slideObj => slideObj.options && slideObj.options.placeholder === slideLayoutObj.options.placeholder).length === 0) {\n addTextDefinition(slide, [{ text: '' }], slideLayoutObj.options, false);\n }\n }\n });\n}\n/* -------------------------------------------------------------------------------- */\n/**\n * Adds a background image or color to a slide definition.\n * @param {BackgroundProps} props - color string or an object with image definition\n * @param {PresSlide} target - slide object that the background is set to\n */\nfunction addBackgroundDefinition(props, target) {\n var _a;\n // A: @deprecated\n if (target.bkgd) {\n if (!target.background)\n target.background = {};\n if (typeof target.bkgd === 'string')\n target.background.color = target.bkgd;\n else {\n if (target.bkgd.data)\n target.background.data = target.bkgd.data;\n if (target.bkgd.path)\n target.background.path = target.bkgd.path;\n if (target.bkgd.src)\n target.background.path = target.bkgd.src; // @deprecated (drop in 4.x)\n }\n }\n if ((_a = target.background) === null || _a === void 0 ? void 0 : _a.fill)\n target.background.color = target.background.fill;\n // B: Handle media\n if (props && (props.path || props.data)) {\n // Allow the use of only the data key (`path` isnt reqd)\n props.path = props.path || 'preencoded.png';\n let strImgExtn = (props.path.split('.').pop() || 'png').split('?')[0]; // Handle \"blah.jpg?width=540\" etc.\n if (strImgExtn === 'jpg')\n strImgExtn = 'jpeg'; // base64-encoded jpg's come out as \"data:image/jpeg;base64,/9j/[...]\", so correct exttnesion to avoid content warnings at PPT startup\n target._relsMedia = target._relsMedia || [];\n const intRels = target._relsMedia.length + 1;\n // NOTE: `Target` cannot have spaces (eg:\"Slide 1-image-1.jpg\") or a \"presentation is corrupt\" warning comes up\n target._relsMedia.push({\n path: props.path,\n type: SLIDE_OBJECT_TYPES.image,\n extn: strImgExtn,\n data: props.data || null,\n rId: intRels,\n Target: `../media/${(target._name || '').replace(/\\s+/gi, '-')}-image-${target._relsMedia.length + 1}.${strImgExtn}`,\n });\n target._bkgdImgRid = intRels;\n }\n}\n/**\n * Parses text/text-objects from `addText()` and `addTable()` methods; creates 'hyperlink'-type Slide Rels for each hyperlink found\n * @param {PresSlide} target - slide object that any hyperlinks will be be added to\n * @param {number | string | TextProps | TextProps[] | ITableCell[][]} text - text to parse\n */\nfunction createHyperlinkRels(target, text, options) {\n let textObjs = [];\n // Only text objects can have hyperlinks, bail when text param is plain text\n if (typeof text === 'string' || typeof text === 'number')\n return;\n // IMPORTANT: \"else if\" Array.isArray must come before typeof===object! Otherwise, code will exhaust recursion!\n else if (Array.isArray(text))\n textObjs = text;\n else if (typeof text === 'object')\n textObjs = [text];\n textObjs.forEach((text, idx) => {\n // IMPORTANT: `options` are lost due to recursion/copy!\n if (options && options[idx] && options[idx].hyperlink)\n text.options = Object.assign(Object.assign({}, text.options), options[idx]);\n // NOTE: `text` can be an array of other `text` objects (table cell word-level formatting), continue parsing using recursion\n if (Array.isArray(text)) {\n const cellOpts = [];\n text.forEach((tablecell) => {\n if (tablecell.options && !tablecell.text.options) {\n cellOpts.push(tablecell.options);\n }\n });\n createHyperlinkRels(target, text, cellOpts);\n }\n else if (Array.isArray(text.text)) {\n createHyperlinkRels(target, text.text, options && options[idx] ? [options[idx]] : undefined);\n }\n else if (text && typeof text === 'object' && text.options && text.options.hyperlink && !text.options.hyperlink._rId) {\n if (typeof text.options.hyperlink !== 'object') {\n console.log('ERROR: text `hyperlink` option should be an object. Ex: `hyperlink: {url:\\'https://github.com\\'}` ');\n }\n else if (!text.options.hyperlink.url && !text.options.hyperlink.slide) {\n console.log('ERROR: \\'hyperlink requires either: `url` or `slide`\\'');\n }\n else {\n const relId = getNewRelId(target);\n target._rels.push({\n type: SLIDE_OBJECT_TYPES.hyperlink,\n data: text.options.hyperlink.slide ? 'slide' : 'dummy',\n rId: relId,\n Target: encodeXmlEntities(text.options.hyperlink.url) || text.options.hyperlink.slide.toString(),\n });\n text.options.hyperlink._rId = relId;\n }\n }\n else if (text && typeof text === 'object' && text.options && text.options.hyperlink && text.options.hyperlink._rId) {\n // NOTE: auto-paging will create new slides, but skip above as _rId exists, BUT this is a new slide, so add rels!\n if (target._rels.filter(rel => rel.rId === text.options.hyperlink._rId).length === 0) {\n target._rels.push({\n type: SLIDE_OBJECT_TYPES.hyperlink,\n data: text.options.hyperlink.slide ? 'slide' : 'dummy',\n rId: text.options.hyperlink._rId,\n Target: encodeXmlEntities(text.options.hyperlink.url) || text.options.hyperlink.slide.toString(),\n });\n }\n }\n });\n}\n\n/**\n * PptxGenJS: Slide Class\n */\nclass Slide {\n constructor(params) {\n var _a;\n this.addSlide = params.addSlide;\n this.getSlide = params.getSlide;\n this._name = `Slide ${params.slideNumber}`;\n this._presLayout = params.presLayout;\n this._rId = params.slideRId;\n this._rels = [];\n this._relsChart = [];\n this._relsMedia = [];\n this._setSlideNum = params.setSlideNum;\n this._slideId = params.slideId;\n this._slideLayout = params.slideLayout || null;\n this._slideNum = params.slideNumber;\n this._slideObjects = [];\n /** NOTE: Slide Numbers: In order for Slide Numbers to function they need to be in all 3 files: master/layout/slide\n * `defineSlideMaster` and `addNewSlide.slideNumber` will add {slideNumber} to `this.masterSlide` and `this.slideLayouts`\n * so, lastly, add to the Slide now.\n */\n this._slideNumberProps = ((_a = this._slideLayout) === null || _a === void 0 ? void 0 : _a._slideNumberProps) ? this._slideLayout._slideNumberProps : null;\n }\n set bkgd(value) {\n this._bkgd = value;\n if (!this._background || !this._background.color) {\n if (!this._background)\n this._background = {};\n if (typeof value === 'string')\n this._background.color = value;\n }\n }\n get bkgd() {\n return this._bkgd;\n }\n set background(props) {\n this._background = props;\n // Add background (image data/path must be captured before `exportPresentation()` is called)\n if (props)\n addBackgroundDefinition(props, this);\n }\n get background() {\n return this._background;\n }\n set color(value) {\n this._color = value;\n }\n get color() {\n return this._color;\n }\n set hidden(value) {\n this._hidden = value;\n }\n get hidden() {\n return this._hidden;\n }\n /**\n * @type {SlideNumberProps}\n */\n set slideNumber(value) {\n // NOTE: Slide Numbers: In order for Slide Numbers to function they need to be in all 3 files: master/layout/slide\n this._slideNumberProps = value;\n this._setSlideNum(value);\n }\n get slideNumber() {\n return this._slideNumberProps;\n }\n get newAutoPagedSlides() {\n return this._newAutoPagedSlides;\n }\n /**\n * Add chart to Slide\n * @param {CHART_NAME|IChartMulti[]} type - chart type\n * @param {object[]} data - data object\n * @param {IChartOpts} options - chart options\n * @return {Slide} this Slide\n */\n addChart(type, data, options) {\n // FUTURE: TODO-VERSION-4: Remove first arg - only take data and opts, with \"type\" required on opts\n // Set `_type` on IChartOptsLib as its what is used as object is passed around\n const optionsWithType = options || {};\n optionsWithType._type = type;\n addChartDefinition(this, type, data, options);\n return this;\n }\n /**\n * Add image to Slide\n * @param {ImageProps} options - image options\n * @return {Slide} this Slide\n */\n addImage(options) {\n addImageDefinition(this, options);\n return this;\n }\n /**\n * Add media (audio/video) to Slide\n * @param {MediaProps} options - media options\n * @return {Slide} this Slide\n */\n addMedia(options) {\n addMediaDefinition(this, options);\n return this;\n }\n /**\n * Add speaker notes to Slide\n * @docs https://gitbrent.github.io/PptxGenJS/docs/speaker-notes.html\n * @param {string} notes - notes to add to slide\n * @return {Slide} this Slide\n */\n addNotes(notes) {\n addNotesDefinition(this, notes);\n return this;\n }\n /**\n * Add shape to Slide\n * @param {SHAPE_NAME} shapeName - shape name\n * @param {ShapeProps} options - shape options\n * @return {Slide} this Slide\n */\n addShape(shapeName, options) {\n // NOTE: As of v3.1.0, <script> users are passing the old shape object from the shapes file (orig to the project)\n // But React/TypeScript users are passing the shapeName from an enum, which is a simple string, so lets cast\n // <script./> => `pptx.shapes.RECTANGLE` [string] \"rect\" ... shapeName['name'] = 'rect'\n // TypeScript => `pptxgen.shapes.RECTANGLE` [string] \"rect\" ... shapeName = 'rect'\n // let shapeNameDecode = typeof shapeName === 'object' && shapeName['name'] ? shapeName['name'] : shapeName\n addShapeDefinition(this, shapeName, options);\n return this;\n }\n /**\n * Add table to Slide\n * @param {TableRow[]} tableRows - table rows\n * @param {TableProps} options - table options\n * @return {Slide} this Slide\n */\n addTable(tableRows, options) {\n // FUTURE: we pass `this` - we dont need to pass layouts - they can be read from this!\n this._newAutoPagedSlides = addTableDefinition(this, tableRows, options, this._slideLayout, this._presLayout, this.addSlide, this.getSlide);\n return this;\n }\n /**\n * Add text to Slide\n * @param {string|TextProps[]} text - text string or complex object\n * @param {TextPropsOptions} options - text options\n * @return {Slide} this Slide\n */\n addText(text, options) {\n const textParam = typeof text === 'string' || typeof text === 'number' ? [{ text, options }] : text;\n addTextDefinition(this, textParam, options, false);\n return this;\n }\n}\n\n/**\n * PptxGenJS: Chart Generation\n */\n/**\n * Based on passed data, creates Excel Worksheet that is used as a data source for a chart.\n * @param {ISlideRelChart} chartObject - chart object\n * @param {JSZip} zip - file that the resulting XLSX should be added to\n * @return {Promise} promise of generating the XLSX file\n */\nfunction createExcelWorksheet(chartObject, zip) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = chartObject.data;\n return yield new Promise((resolve, reject) => {\n var _a, _b;\n const zipExcel = new JSZip();\n const intBubbleCols = (data.length - 1) * 2 + 1; // 1 for \"X-Values\", then 2 for every Y-Axis\n const IS_MULTI_CAT_AXES = ((_b = (_a = data[0]) === null || _a === void 0 ? void 0 : _a.labels) === null || _b === void 0 ? void 0 : _b.length) > 1;\n // A: Add folders\n zipExcel.folder('_rels');\n zipExcel.folder('docProps');\n zipExcel.folder('xl/_rels');\n zipExcel.folder('xl/tables');\n zipExcel.folder('xl/theme');\n zipExcel.folder('xl/worksheets');\n zipExcel.folder('xl/worksheets/_rels');\n // B: Add core contents\n {\n zipExcel.file('[Content_Types].xml', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">' +\n ' <Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>' +\n ' <Default Extension=\"xml\" ContentType=\"application/xml\"/>' +\n ' <Override PartName=\"/xl/workbook.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\"/>' +\n ' <Override PartName=\"/xl/worksheets/sheet1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\"/>' +\n ' <Override PartName=\"/xl/theme/theme1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.theme+xml\"/>' +\n ' <Override PartName=\"/xl/styles.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\"/>' +\n ' <Override PartName=\"/xl/sharedStrings.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\"/>' +\n ' <Override PartName=\"/xl/tables/table1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\"/>' +\n ' <Override PartName=\"/docProps/core.xml\" ContentType=\"application/vnd.openxmlformats-package.core-properties+xml\"/>' +\n ' <Override PartName=\"/docProps/app.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.extended-properties+xml\"/>' +\n '</Types>\\n');\n zipExcel.file('_rels/.rels', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">' +\n '<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\" Target=\"docProps/core.xml\"/>' +\n '<Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties\" Target=\"docProps/app.xml\"/>' +\n '<Relationship Id=\"rId3\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"xl/workbook.xml\"/>' +\n '</Relationships>\\n');\n zipExcel.file('docProps/app.xml', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Properties xmlns=\"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\" xmlns:vt=\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\">' +\n '<Application>Microsoft Macintosh Excel</Application>' +\n '<DocSecurity>0</DocSecurity>' +\n '<ScaleCrop>false</ScaleCrop>' +\n '<HeadingPairs><vt:vector size=\"2\" baseType=\"variant\"><vt:variant><vt:lpstr>Worksheets</vt:lpstr></vt:variant><vt:variant><vt:i4>1</vt:i4></vt:variant></vt:vector></HeadingPairs>' +\n '<TitlesOfParts><vt:vector size=\"1\" baseType=\"lpstr\"><vt:lpstr>Sheet1</vt:lpstr></vt:vector></TitlesOfParts>' +\n '<Company></Company><LinksUpToDate>false</LinksUpToDate><SharedDoc>false</SharedDoc><HyperlinksChanged>false</HyperlinksChanged><AppVersion>16.0300</AppVersion>' +\n '</Properties>\\n');\n zipExcel.file('docProps/core.xml', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><cp:coreProperties xmlns:cp=\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:dcmitype=\"http://purl.org/dc/dcmitype/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">' +\n '<dc:creator>PptxGenJS</dc:creator>' +\n '<cp:lastModifiedBy>PptxGenJS</cp:lastModifiedBy>' +\n '<dcterms:created xsi:type=\"dcterms:W3CDTF\">' +\n new Date().toISOString() +\n '</dcterms:created>' +\n '<dcterms:modified xsi:type=\"dcterms:W3CDTF\">' +\n new Date().toISOString() +\n '</dcterms:modified>' +\n '</cp:coreProperties>');\n zipExcel.file('xl/_rels/workbook.xml.rels', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' +\n '<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">' +\n '<Relationship Id=\"rId3\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\" Target=\"styles.xml\"/>' +\n '<Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\" Target=\"theme/theme1.xml\"/>' +\n '<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\" Target=\"worksheets/sheet1.xml\"/>' +\n '<Relationship Id=\"rId4\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\" Target=\"sharedStrings.xml\"/>' +\n '</Relationships>');\n zipExcel.file('xl/styles.xml', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><styleSheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"><numFmts count=\"1\"><numFmt numFmtId=\"0\" formatCode=\"General\"/></numFmts><fonts count=\"4\"><font><sz val=\"9\"/><color indexed=\"8\"/><name val=\"Geneva\"/></font><font><sz val=\"9\"/><color indexed=\"8\"/><name val=\"Geneva\"/></font><font><sz val=\"10\"/><color indexed=\"8\"/><name val=\"Geneva\"/></font><font><sz val=\"18\"/><color indexed=\"8\"/>' +\n '<name val=\"Arial\"/></font></fonts><fills count=\"2\"><fill><patternFill patternType=\"none\"/></fill><fill><patternFill patternType=\"gray125\"/></fill></fills><borders count=\"1\"><border><left/><right/><top/><bottom/><diagonal/></border></borders><dxfs count=\"0\"/><tableStyles count=\"0\"/><colors><indexedColors><rgbColor rgb=\"ff000000\"/><rgbColor rgb=\"ffffffff\"/><rgbColor rgb=\"ffff0000\"/><rgbColor rgb=\"ff00ff00\"/><rgbColor rgb=\"ff0000ff\"/>' +\n '<rgbColor rgb=\"ffffff00\"/><rgbColor rgb=\"ffff00ff\"/><rgbColor rgb=\"ff00ffff\"/><rgbColor rgb=\"ff000000\"/><rgbColor rgb=\"ffffffff\"/><rgbColor rgb=\"ff878787\"/><rgbColor rgb=\"fff9f9f9\"/></indexedColors></colors></styleSheet>\\n');\n zipExcel.file('xl/theme/theme1.xml', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"Office Theme\"><a:themeElements><a:clrScheme name=\"Office\"><a:dk1><a:sysClr val=\"windowText\" lastClr=\"000000\"/></a:dk1><a:lt1><a:sysClr val=\"window\" lastClr=\"FFFFFF\"/></a:lt1><a:dk2><a:srgbClr val=\"44546A\"/></a:dk2><a:lt2><a:srgbClr val=\"E7E6E6\"/></a:lt2><a:accent1><a:srgbClr val=\"4472C4\"/></a:accent1><a:accent2><a:srgbClr val=\"ED7D31\"/></a:accent2><a:accent3><a:srgbClr val=\"A5A5A5\"/></a:accent3><a:accent4><a:srgbClr val=\"FFC000\"/></a:accent4><a:accent5><a:srgbClr val=\"5B9BD5\"/></a:accent5><a:accent6><a:srgbClr val=\"70AD47\"/></a:accent6><a:hlink><a:srgbClr val=\"0563C1\"/></a:hlink><a:folHlink><a:srgbClr val=\"954F72\"/></a:folHlink></a:clrScheme><a:fontScheme name=\"Office\"><a:majorFont><a:latin typeface=\"Calibri Light\" panose=\"020F0302020204030204\"/><a:ea typeface=\"\"/><a:cs typeface=\"\"/><a:font script=\"Jpan\" typeface=\"Yu Gothic Light\"/><a:font script=\"Hang\" typeface=\"맑은 고딕\"/><a:font script=\"Hans\" typeface=\"DengXian Light\"/><a:font script=\"Hant\" typeface=\"新細明體\"/><a:font script=\"Arab\" typeface=\"Times New Roman\"/><a:font script=\"Hebr\" typeface=\"Times New Roman\"/><a:font script=\"Thai\" typeface=\"Tahoma\"/><a:font script=\"Ethi\" typeface=\"Nyala\"/><a:font script=\"Beng\" typeface=\"Vrinda\"/><a:font script=\"Gujr\" typeface=\"Shruti\"/><a:font script=\"Khmr\" typeface=\"MoolBoran\"/><a:font script=\"Knda\" typeface=\"Tunga\"/><a:font script=\"Guru\" typeface=\"Raavi\"/><a:font script=\"Cans\" typeface=\"Euphemia\"/><a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/><a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/><a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/><a:font script=\"Thaa\" typeface=\"MV Boli\"/><a:font script=\"Deva\" typeface=\"Mangal\"/><a:font script=\"Telu\" typeface=\"Gautami\"/><a:font script=\"Taml\" typeface=\"Latha\"/><a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Orya\" typeface=\"Kalinga\"/><a:font script=\"Mlym\" typeface=\"Kartika\"/><a:font script=\"Laoo\" typeface=\"DokChampa\"/><a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/><a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/><a:font script=\"Viet\" typeface=\"Times New Roman\"/><a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/><a:font script=\"Geor\" typeface=\"Sylfaen\"/></a:majorFont><a:minorFont><a:latin typeface=\"Calibri\" panose=\"020F0502020204030204\"/><a:ea typeface=\"\"/><a:cs typeface=\"\"/><a:font script=\"Jpan\" typeface=\"Yu Gothic\"/><a:font script=\"Hang\" typeface=\"맑은 고딕\"/><a:font script=\"Hans\" typeface=\"DengXian\"/><a:font script=\"Hant\" typeface=\"新細明體\"/><a:font script=\"Arab\" typeface=\"Arial\"/><a:font script=\"Hebr\" typeface=\"Arial\"/><a:font script=\"Thai\" typeface=\"Tahoma\"/><a:font script=\"Ethi\" typeface=\"Nyala\"/><a:font script=\"Beng\" typeface=\"Vrinda\"/><a:font script=\"Gujr\" typeface=\"Shruti\"/><a:font script=\"Khmr\" typeface=\"DaunPenh\"/><a:font script=\"Knda\" typeface=\"Tunga\"/><a:font script=\"Guru\" typeface=\"Raavi\"/><a:font script=\"Cans\" typeface=\"Euphemia\"/><a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/><a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/><a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/><a:font script=\"Thaa\" typeface=\"MV Boli\"/><a:font script=\"Deva\" typeface=\"Mangal\"/><a:font script=\"Telu\" typeface=\"Gautami\"/><a:font script=\"Taml\" typeface=\"Latha\"/><a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Orya\" typeface=\"Kalinga\"/><a:font script=\"Mlym\" typeface=\"Kartika\"/><a:font script=\"Laoo\" typeface=\"DokChampa\"/><a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/><a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/><a:font script=\"Viet\" typeface=\"Arial\"/><a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/><a:font script=\"Geor\" typeface=\"Sylfaen\"/></a:minorFont></a:fontScheme><a:fmtScheme name=\"Office\"><a:fillStyleLst><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"110000\"/><a:satMod val=\"105000\"/><a:tint val=\"67000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"105000\"/><a:satMod val=\"103000\"/><a:tint val=\"73000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"105000\"/><a:satMod val=\"109000\"/><a:tint val=\"81000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:satMod val=\"103000\"/><a:lumMod val=\"102000\"/><a:tint val=\"94000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:satMod val=\"110000\"/><a:lumMod val=\"100000\"/><a:shade val=\"100000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"99000\"/><a:satMod val=\"120000\"/><a:shade val=\"78000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w=\"6350\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln><a:ln w=\"12700\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln><a:ln w=\"19050\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad=\"57150\" dist=\"19050\" dir=\"5400000\" algn=\"ctr\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"63000\"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:solidFill><a:schemeClr val=\"phClr\"><a:tint val=\"95000\"/><a:satMod val=\"170000\"/></a:schemeClr></a:solidFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"93000\"/><a:satMod val=\"150000\"/><a:shade val=\"98000\"/><a:lumMod val=\"102000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:tint val=\"98000\"/><a:satMod val=\"130000\"/><a:shade val=\"90000\"/><a:lumMod val=\"103000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"63000\"/><a:satMod val=\"120000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/><a:extLst><a:ext uri=\"{05A4C25C-085E-4340-85A3-A5531E510DB2}\"><thm15:themeFamily xmlns:thm15=\"http://schemas.microsoft.com/office/thememl/2012/main\" name=\"Office Theme\" id=\"{62F939B6-93AF-4DB8-9C6B-D6C7DFDC589F}\" vid=\"{4A3C46E8-61CC-4603-A589-7422A47A8E4A}\"/></a:ext></a:extLst></a:theme>');\n zipExcel.file('xl/workbook.xml', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' +\n '<workbook xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" mc:Ignorable=\"x15\" xmlns:x15=\"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main\">' +\n '<fileVersion appName=\"xl\" lastEdited=\"7\" lowestEdited=\"6\" rupBuild=\"10507\"/>' +\n '<workbookPr/>' +\n '<bookViews><workbookView xWindow=\"0\" yWindow=\"500\" windowWidth=\"20960\" windowHeight=\"15960\"/></bookViews>' +\n '<sheets><sheet name=\"Sheet1\" sheetId=\"1\" r:id=\"rId1\"/></sheets>' +\n '<calcPr calcId=\"0\" concurrentCalc=\"0\"/>' +\n '</workbook>\\n');\n zipExcel.file('xl/worksheets/_rels/sheet1.xml.rels', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' +\n '<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">' +\n '<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table\" Target=\"../tables/table1.xml\"/>' +\n '</Relationships>\\n');\n }\n // sharedStrings.xml\n {\n // A: Start XML\n let strSharedStrings = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>';\n if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) {\n strSharedStrings += `<sst xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" count=\"${intBubbleCols}\" uniqueCount=\"${intBubbleCols}\">`;\n }\n else if (chartObject.opts._type === CHART_TYPE.SCATTER) {\n strSharedStrings += `<sst xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" count=\"${data.length}\" uniqueCount=\"${data.length}\">`;\n }\n else if (IS_MULTI_CAT_AXES) {\n let totCount = data.length;\n data[0].labels.forEach(arrLabel => (totCount += arrLabel.filter(label => label && label !== '').length));\n strSharedStrings += `<sst xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" count=\"${totCount}\" uniqueCount=\"${totCount}\">`;\n strSharedStrings += '<si><t/></si>';\n }\n else {\n // series names + all labels of one series + number of label groups (data.labels.length) of one series (i.e. how many times the blank string is used)\n const totCount = data.length + data[0].labels.length * data[0].labels[0].length + data[0].labels.length;\n // series names + labels of one series + blank string (same for all label groups)\n const unqCount = data.length + data[0].labels.length * data[0].labels[0].length + 1;\n // start `sst`\n strSharedStrings += `<sst xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" count=\"${totCount}\" uniqueCount=\"${unqCount}\">`;\n // B: Add 'blank' for A1, B1, ..., of every label group inside data[n].labels\n strSharedStrings += '<si><t xml:space=\"preserve\"></t></si>';\n }\n // C: Add `name`/Series\n if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) {\n data.forEach((objData, idx) => {\n if (idx === 0)\n strSharedStrings += '<si><t>X-Axis</t></si>';\n else {\n strSharedStrings += `<si><t>${encodeXmlEntities(objData.name || `Y-Axis${idx}`)}</t></si>`;\n strSharedStrings += `<si><t>${encodeXmlEntities(`Size${idx}`)}</t></si>`;\n }\n });\n }\n else {\n data.forEach(objData => {\n strSharedStrings += `<si><t>${encodeXmlEntities((objData.name || ' ').replace('X-Axis', 'X-Values'))}</t></si>`;\n });\n }\n // D: Add `labels`/Categories\n if (chartObject.opts._type !== CHART_TYPE.BUBBLE && chartObject.opts._type !== CHART_TYPE.BUBBLE3D && chartObject.opts._type !== CHART_TYPE.SCATTER) {\n // Use forEach backwards & check for '' to support multi-cat axes\n data[0].labels\n .slice()\n .reverse()\n .forEach(labelsGroup => {\n labelsGroup\n .filter(label => label && label !== '')\n .forEach(label => {\n strSharedStrings += `<si><t>${encodeXmlEntities(label)}</t></si>`;\n });\n });\n }\n // DONE:\n strSharedStrings += '</sst>\\n';\n zipExcel.file('xl/sharedStrings.xml', strSharedStrings);\n }\n // tables/table1.xml\n {\n let strTableXml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>';\n if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) {\n strTableXml += `<table xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" id=\"1\" name=\"Table1\" displayName=\"Table1\" ref=\"A1:${getExcelColName(intBubbleCols)}${intBubbleCols}\" totalsRowShown=\"0\">`;\n strTableXml += `<tableColumns count=\"${intBubbleCols}\">`;\n let idxColLtr = 1;\n data.forEach((obj, idx) => {\n if (idx === 0) {\n strTableXml += `<tableColumn id=\"${idx + 1}\" name=\"X-Values\"/>`;\n }\n else {\n strTableXml += `<tableColumn id=\"${idx + idxColLtr}\" name=\"${obj.name}\"/>`;\n idxColLtr++;\n strTableXml += `<tableColumn id=\"${idx + idxColLtr}\" name=\"Size${idx}\"/>`;\n }\n });\n }\n else if (chartObject.opts._type === CHART_TYPE.SCATTER) {\n strTableXml += `<table xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" id=\"1\" name=\"Table1\" displayName=\"Table1\" ref=\"A1:${getExcelColName(data.length)}${data[0].values.length + 1}\" totalsRowShown=\"0\">`;\n strTableXml += `<tableColumns count=\"${data.length}\">`;\n data.forEach((_obj, idx) => {\n strTableXml += `<tableColumn id=\"${idx + 1}\" name=\"${idx === 0 ? 'X-Values' : 'Y-Value '}${idx}\"/>`;\n });\n }\n else {\n strTableXml += `<table xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" id=\"1\" name=\"Table1\" displayName=\"Table1\" ref=\"A1:${getExcelColName(data.length + data[0].labels.length)}${data[0].labels[0].length + 1}'\" totalsRowShown=\"0\">`;\n strTableXml += `<tableColumns count=\"${data.length + data[0].labels.length}\">`;\n data[0].labels.forEach((_labelsGroup, idx) => {\n strTableXml += `<tableColumn id=\"${idx + 1}\" name=\"Column${idx + 1}\"/>`;\n });\n data.forEach((obj, idx) => {\n strTableXml += `<tableColumn id=\"${idx + data[0].labels.length + 1}\" name=\"${encodeXmlEntities(obj.name)}\"/>`;\n });\n }\n strTableXml += '</tableColumns>';\n strTableXml += '<tableStyleInfo showFirstColumn=\"0\" showLastColumn=\"0\" showRowStripes=\"1\" showColumnStripes=\"0\"/>';\n strTableXml += '</table>';\n zipExcel.file('xl/tables/table1.xml', strTableXml);\n }\n // worksheets/sheet1.xml\n {\n let strSheetXml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>';\n strSheetXml +=\n '<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" mc:Ignorable=\"x14ac\" xmlns:x14ac=\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac\">';\n if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) {\n strSheetXml += `<dimension ref=\"A1:${getExcelColName(intBubbleCols)}${data[0].values.length + 1}\"/>`;\n }\n else if (chartObject.opts._type === CHART_TYPE.SCATTER) {\n strSheetXml += `<dimension ref=\"A1:${getExcelColName(data.length)}${data[0].values.length + 1}\"/>`;\n }\n else {\n strSheetXml += `<dimension ref=\"A1:${getExcelColName(data.length + 1)}${data[0].values.length + 1}\"/>`;\n }\n strSheetXml += '<sheetViews><sheetView tabSelected=\"1\" workbookViewId=\"0\"><selection activeCell=\"B1\" sqref=\"B1\"/></sheetView></sheetViews>';\n strSheetXml += '<sheetFormatPr baseColWidth=\"10\" defaultRowHeight=\"16\"/>';\n if (chartObject.opts._type === CHART_TYPE.BUBBLE || chartObject.opts._type === CHART_TYPE.BUBBLE3D) {\n // UNUSED: strSheetXml += `<cols><col min=\"1\" max=\"${data.length}\" width=\"11\" customWidth=\"1\" /></cols>`\n /* EX: INPUT: `data`\n [\n { name:'X-Axis' , values:[10,11,12,13,14,15,16,17,18,19,20] },\n { name:'Y-Axis 1', values:[ 1, 6, 7, 8, 9], sizes:[ 4, 5, 6, 7, 8] },\n { name:'Y-Axis 2', values:[33,32,42,53,63], sizes:[11,12,13,14,15] }\n ];\n */\n /* EX: OUTPUT: bubbleChart Worksheet:\n -|----A-----|------B-----|------C-----|------D-----|------E-----|\n 1| X-Values | Y-Values 1 | Y-Sizes 1 | Y-Values 2 | Y-Sizes 2 |\n 2| 11 | 22 | 4 | 33 | 8 |\n -|----------|------------|------------|------------|------------|\n */\n strSheetXml += '<sheetData>';\n // A: Create header row first (NOTE: Start at index=1 as headers cols start with 'B')\n strSheetXml += `<row r=\"1\" spans=\"1:${intBubbleCols}\">`;\n strSheetXml += '<c r=\"A1\" t=\"s\"><v>0</v></c>';\n for (let idx = 1; idx < intBubbleCols; idx++) {\n strSheetXml += `<c r=\"${getExcelColName(idx + 1)}1\" t=\"s\"><v>${idx}</v></c>`; // NOTE: add `t=\"s\"` for label cols!\n }\n strSheetXml += '</row>';\n // B: Add row for each X-Axis value (Y-Axis* value is optional)\n data[0].values.forEach((val, idx) => {\n // Leading col is reserved for the 'X-Axis' value, so hard-code it, then loop over col values\n strSheetXml += `<row r=\"${idx + 2}\" spans=\"1:${intBubbleCols}\">`;\n strSheetXml += `<c r=\"A${idx + 2}\"><v>${val}</v></c>`;\n // Add Y-Axis 1->N (idy=0 = Xaxis)\n let idxColLtr = 2;\n for (let idy = 1; idy < data.length; idy++) {\n // y-value\n strSheetXml += `<c r=\"${getExcelColName(idxColLtr)}${idx + 2}\"><v>${data[idy].values[idx] || ''}</v></c>`;\n idxColLtr++;\n // y-size\n strSheetXml += `<c r=\"${getExcelColName(idxColLtr)}${idx + 2}\"><v>${data[idy].sizes[idx] || ''}</v></c>`;\n idxColLtr++;\n }\n strSheetXml += '</row>';\n });\n }\n else if (chartObject.opts._type === CHART_TYPE.SCATTER) {\n /* UNUSED:\n strSheetXml += '<cols>'\n strSheetXml += '<col min=\"1\" max=\"' + data.length + '\" width=\"11\" customWidth=\"1\" />'\n //data.forEach((obj,idx)=>{ strSheetXml += '<col min=\"'+(idx+1)+'\" max=\"'+(idx+1)+'\" width=\"11\" customWidth=\"1\" />' });\n strSheetXml += '</cols>'\n */\n /* EX: INPUT: `data`\n [\n { name:'X-AxisA', values:[ 1, 2, 3, 4, 5] },\n { name:'Y-AxisB', values:[ 2,22,42,52,62] },\n { name:'Y-AxisC', values:[ 3,33,43,53,63] }\n ];\n */\n /* EX: OUTPUT: sheet1.xml:\n -|----A----|----B----|----C----|\n 1| X-AxisA | Y-AxisB | Y-AxisC |\n 2| 1 | 2 | 3 |\n -|---------|---------|---------|\n */\n strSheetXml += '<sheetData>';\n // A: Create header row first (every `name` row provided)\n strSheetXml += `<row r=\"1\" spans=\"1:${data.length}\">`;\n for (let idx = 0; idx < data.length; idx++) {\n strSheetXml += `<c r=\"${getExcelColName(idx + 1)}1\" t=\"s\"><v>${idx}</v></c>`; // NOTE: add `t=\"s\"` for label cols!\n }\n strSheetXml += '</row>';\n // B: Add row for each X-Axis value (Y-Axis* value is optional)\n data[0].values.forEach((val, idx) => {\n // Leading col is reserved for the 'X-Axis' value, so hard-code it, then loop over col values\n strSheetXml += `<row r=\"${idx + 2}\" spans=\"1:${data.length}\">`;\n strSheetXml += `<c r=\"A${idx + 2}\"><v>${val}</v></c>`;\n // Add Y-Axis 1->N\n for (let idy = 1; idy < data.length; idy++) {\n strSheetXml += `<c r=\"${getExcelColName(idy + 1)}${idx + 2}\"><v>${data[idy].values[idx] || data[idy].values[idx] === 0 ? data[idy].values[idx] : ''}</v></c>`;\n }\n strSheetXml += '</row>';\n });\n }\n else {\n // strSheetXml += '<cols><col min=\"1\" max=\"1\" width=\"11\" customWidth=\"1\" /></cols>'\n strSheetXml += '<sheetData>';\n /* EX: INPUT: `data`\n [\n { name:'Red', labels:['Jan..May-17'], values:[11,13,14,15,16] },\n { name:'Amb', labels:['Jan..May-17'], values:[22, 6, 7, 8, 9] },\n { name:'Grn', labels:['Jan..May-17'], values:[33,32,42,53,63] }\n ];\n */\n /* EX: OUTPUT: lineChart Worksheet:\n -|---A---|--B--|--C--|--D--|\n 1| | Red | Amb | Grn |\n 2|Jan-17 | 11| 22| 33|\n 3|Feb-17 | 55| 43| 70|\n 4|Mar-17 | 56| 143| 99|\n 5|Apr-17 | 65| 3| 120|\n 6|May-17 | 75| 93| 170|\n -|-------|-----|-----|-----|\n */\n if (!IS_MULTI_CAT_AXES) {\n // A: Create header row first\n strSheetXml += `<row r=\"1\" spans=\"1:${data.length + data[0].labels.length}\">`;\n data[0].labels.forEach((_labelsGroup, idx) => {\n strSheetXml += `<c r=\"${getExcelColName(idx + 1)}1\" t=\"s\"><v>0</v></c>`;\n });\n for (let idx = 0; idx < data.length; idx++) {\n strSheetXml += `<c r=\"${getExcelColName(idx + 1 + data[0].labels.length)}1\" t=\"s\"><v>${idx + 1}</v></c>`; // NOTE: use `t=\"s\"` for label cols!\n }\n strSheetXml += '</row>';\n // B: Add data row(s) for each category\n data[0].labels[0].forEach((_cat, idx) => {\n strSheetXml += `<row r=\"${idx + 2}\" spans=\"1:${data.length + data[0].labels.length}\">`;\n // Leading cols are reserved for the label groups\n for (let idx2 = data[0].labels.length - 1; idx2 >= 0; idx2--) {\n strSheetXml += `<c r=\"${getExcelColName(data[0].labels.length - idx2)}${idx + 2}\" t=\"s\">`;\n strSheetXml += `<v>${data.length + idx + 1}</v>`;\n strSheetXml += '</c>';\n }\n for (let idy = 0; idy < data.length; idy++) {\n strSheetXml += `<c r=\"${getExcelColName(data[0].labels.length + idy + 1)}${idx + 2}\"><v>${data[idy].values[idx] || ''}</v></c>`;\n }\n strSheetXml += '</row>';\n });\n }\n else {\n // A: create header row\n strSheetXml += `<row r=\"1\" spans=\"1:${data.length + data[0].labels.length}\">`;\n for (let idx = 0; idx < data[0].labels.length; idx++) {\n strSheetXml += `<c r=\"${getExcelColName(idx + 1)}1\" t=\"s\"><v>0</v></c>`;\n }\n for (let idx = data[0].labels.length - 1; idx < data.length + data[0].labels.length - 1; idx++) {\n strSheetXml += `<c r=\"${getExcelColName(idx + data[0].labels.length)}1\" t=\"s\"><v>${idx}</v></c>`; // NOTE: use `t=\"s\"` for label cols!\n }\n strSheetXml += '</row>';\n // FIXME: 20220524 (v3.11.0)\n /**\n * @example INPUT\n * const LABELS = [\n * [\"Gear\", \"Berg\", \"Motr\", \"Swch\", \"Plug\", \"Cord\", \"Pump\", \"Leak\", \"Seal\"],\n * [\"Mech\", \"\", \"\", \"Elec\", \"\", \"\", \"Hydr\", \"\", \"\"],\n * ];\n * const arrDataRegions = [\n * { name: \"West\", labels: LABELS, values: [11, 8, 3, 0, 11, 3, 0, 0, 0] },\n * { name: \"Ctrl\", labels: LABELS, values: [0, 11, 6, 19, 12, 5, 0, 0, 0] },\n * { name: \"East\", labels: LABELS, values: [0, 3, 2, 0, 0, 0, 4, 3, 1] },\n * ];\n */\n /**\n * @example OUTPUT EXCEL SHEET\n * |/|---A--|---B--|---C--|---D--|---E--|\n * |1| | | West | Ctrl | East |\n * |2| Mech | Gear | ## | ## | ## |\n * |3| | Brng | ## | ## | ## |\n * |4| | Motr | ## | ## | ## |\n * |5| Elec | Swch | ## | ## | ## |\n * |6| | Plug | ## | ## | ## |\n * |7| | Cord | ## | ## | ## |\n * |8| Hydr | Pump | ## | ## | ## |\n * |9| | Leak | ## | ## | ## |\n *|10| | Seal | ## | ## | ## |\n */\n /**\n * @example OUTPUT EXCEL SHEET XML\n * <row r=\"1\" spans=\"1:5\">\n * <c r=\"A1\" t=\"s\"><v>0</v></c>\n * <c r=\"B1\" t=\"s\"><v>0</v></c>\n * <c r=\"C1\" t=\"s\"><v>1</v></c>\n * <c r=\"D1\" t=\"s\"><v>2</v></c>\n * <c r=\"E1\" t=\"s\"><v>3</v></c>\n * </row>\n * <row r=\"2\" spans=\"1:5\">\n * <c r=\"A2\" t=\"s\"><v>4</v></c>\n * <c r=\"B2\" t=\"s\"><v>7</v></c>\n * <c r=\"C2\" ><v>###</v></c>\n * </row>\n * <row r=\"3\" spans=\"1:5\">\n * <c r=\"A3\" />\n * <c r=\"B3\" t=\"s\"><v>8</v></c>\n * <c r=\"C3\" ><v>###</v></c>\n * </row>\n */\n /**\n * @example SHARED-STRINGS\n * 1=West, 2=Ctrl, 3=East, 4=Mech, 5=Elec, 6=Mydr, 7=Gear, 8=Brng, [...], 15=Seal\n */\n // B: Add data row(s) for each category\n /**\n * const LABELS = [\n * [\"Gear\", \"Berg\", \"Motr\", \"Swch\", \"Plug\", \"Cord\", \"Pump\", \"Leak\", \"Seal\"],\n * [\"Mech\", \"\", \"\", \"Elec\", \"\", \"\", \"Hydr\", \"\", \"\"],\n * [\"2010\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"],\n * ];\n */\n const TOT_SER = data.length;\n const TOT_CAT = data[0].labels[0].length;\n const TOT_LVL = data[0].labels.length;\n // Iterate across labels/cats as these are the <row>'s\n for (let idx = 0; idx < TOT_CAT; idx++) {\n // A: start row\n strSheetXml += `<row r=\"${idx + 2}\" spans=\"1:${TOT_SER + TOT_LVL}\">`;\n // WIP: FIXME:\n // B: add a col for each label/cat\n let totLabels = TOT_SER;\n const revLabelGroups = data[0].labels.slice().reverse();\n revLabelGroups.forEach((labelsGroup, idy) => {\n /**\n * const LABELS_REVERSED = [\n * [\"Mech\", \"\", \"\", \"Elec\", \"\", \"\", \"Hydr\", \"\", \"\"],\n * [\"Gear\", \"Berg\", \"Motr\", \"Swch\", \"Plug\", \"Cord\", \"Pump\", \"Leak\", \"Seal\"],\n * ];\n */\n const colLabel = labelsGroup[idx];\n if (colLabel) {\n const totGrpLbls = idy === 0 ? 1 : revLabelGroups[idy - 1].filter(label => label && label !== '').length; // get unique label so we can add to get proper shared-string #\n totLabels += totGrpLbls;\n strSheetXml += `<c r=\"${getExcelColName(idx + 1 + idy)}${idx + 2}\" t=\"s\"><v>${totLabels}</v></c>`;\n }\n });\n // WIP: FIXME:\n // C: add a col for each data value\n for (let idy = 0; idy < TOT_SER; idy++) {\n strSheetXml += `<c r=\"${getExcelColName(TOT_LVL + idy + 1)}${idx + 2}\"><v>${data[idy].values[idx] || 0}</v></c>`;\n }\n // D: Done\n strSheetXml += '</row>';\n }\n // console.log(strSheetXml) // WIP: CHECK:\n // console.log(`---CHECK ABOVE---------------------`)\n }\n }\n strSheetXml += '</sheetData>';\n /* FIXME: support multi-level\n if (IS_MULTI_CAT_AXES) {\n strSheetXml += '<mergeCells count=\"3\">'\n strSheetXml += ' <mergeCell ref=\"A2:A4\"/>'\n strSheetXml += ' <mergeCell ref=\"A10:A12\"/>'\n strSheetXml += ' <mergeCell ref=\"A5:A9\"/>'\n strSheetXml += '</mergeCells>'\n }\n */\n strSheetXml += '<pageMargins left=\"0.7\" right=\"0.7\" top=\"0.75\" bottom=\"0.75\" header=\"0.3\" footer=\"0.3\"/>';\n // Link the `table1.xml` file to define an actual Table in Excel\n // NOTE: This only works with scatter charts - all others give a \"cannot find linked file\" error\n // ....: Since we dont need the table anyway (chart data can be edited/range selected, etc.), just dont use this\n // ....: Leaving this so nobody foolishly attempts to add this in the future\n // strSheetXml += '<tableParts count=\"1\"><tablePart r:id=\"rId1\"/></tableParts>'\n strSheetXml += '</worksheet>\\n';\n zipExcel.file('xl/worksheets/sheet1.xml', strSheetXml);\n }\n // C: Add XLSX to PPTX export\n zipExcel\n .generateAsync({ type: 'base64' })\n .then(content => {\n // 1: Create the embedded Excel worksheet with labels and data\n zip.file(`ppt/embeddings/Microsoft_Excel_Worksheet${chartObject.globalId}.xlsx`, content, { base64: true });\n // 2: Create the chart.xml and rel files\n zip.file('ppt/charts/_rels/' + chartObject.fileName + '.rels', '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' +\n '<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">' +\n `<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/package\" Target=\"../embeddings/Microsoft_Excel_Worksheet${chartObject.globalId}.xlsx\"/>` +\n '</Relationships>');\n zip.file(`ppt/charts/${chartObject.fileName}`, makeXmlCharts(chartObject));\n // 3: Done\n resolve('');\n })\n .catch(strErr => {\n reject(strErr);\n });\n });\n });\n}\n/**\n * Main entry point method for create charts\n * @see: http://www.datypic.com/sc/ooxml/s-dml-chart.xsd.html\n * @param {ISlideRelChart} rel - chart object\n * @return {string} XML\n */\nfunction makeXmlCharts(rel) {\n var _a, _b, _c, _d;\n let strXml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>';\n let usesSecondaryValAxis = false;\n // STEP 1: Create chart\n {\n // CHARTSPACE: BEGIN vvv\n strXml +=\n '<c:chartSpace xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">';\n strXml += '<c:date1904 val=\"0\"/>'; // ppt defaults to 1904 dates, excel to 1900\n strXml += `<c:roundedCorners val=\"${rel.opts.chartArea.roundedCorners ? '1' : '0'}\"/>`;\n strXml += '<c:chart>';\n // OPTION: Title\n if (rel.opts.showTitle) {\n strXml += genXmlTitle({\n title: rel.opts.title || 'Chart Title',\n color: rel.opts.titleColor,\n fontFace: rel.opts.titleFontFace,\n fontSize: rel.opts.titleFontSize || DEF_FONT_TITLE_SIZE,\n titleAlign: rel.opts.titleAlign,\n titleBold: rel.opts.titleBold,\n titlePos: rel.opts.titlePos,\n titleRotate: rel.opts.titleRotate,\n }, rel.opts.x, rel.opts.y);\n strXml += '<c:autoTitleDeleted val=\"0\"/>';\n }\n else {\n // NOTE: Add autoTitleDeleted tag in else to prevent default creation of chart title even when showTitle is set to false\n strXml += '<c:autoTitleDeleted val=\"1\"/>';\n }\n /** Add 3D view tag\n * @see: https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_perspective_topic_ID0E6BUQB.html\n */\n if (rel.opts._type === CHART_TYPE.BAR3D) {\n strXml += `<c:view3D><c:rotX val=\"${rel.opts.v3DRotX}\"/><c:rotY val=\"${rel.opts.v3DRotY}\"/><c:rAngAx val=\"${!rel.opts.v3DRAngAx ? 0 : 1}\"/><c:perspective val=\"${rel.opts.v3DPerspective}\"/></c:view3D>`;\n }\n strXml += '<c:plotArea>';\n // IMPORTANT: Dont specify layout to enable auto-fit: PPT does a great job maximizing space with all 4 TRBL locations\n if (rel.opts.layout) {\n strXml += '<c:layout>';\n strXml += ' <c:manualLayout>';\n strXml += ' <c:layoutTarget val=\"inner\" />';\n strXml += ' <c:xMode val=\"edge\" />';\n strXml += ' <c:yMode val=\"edge\" />';\n strXml += ' <c:x val=\"' + (rel.opts.layout.x || 0) + '\" />';\n strXml += ' <c:y val=\"' + (rel.opts.layout.y || 0) + '\" />';\n strXml += ' <c:w val=\"' + (rel.opts.layout.w || 1) + '\" />';\n strXml += ' <c:h val=\"' + (rel.opts.layout.h || 1) + '\" />';\n strXml += ' </c:manualLayout>';\n strXml += '</c:layout>';\n }\n else {\n strXml += '<c:layout/>';\n }\n }\n // A: Create Chart XML -----------------------------------------------------------\n if (Array.isArray(rel.opts._type)) {\n rel.opts._type.forEach(type => {\n // TODO: FIXME: theres `options` on chart rels??\n const options = Object.assign(Object.assign({}, rel.opts), type.options);\n // let options: IChartOptsLib = { type: type.type, }\n const valAxisId = options.secondaryValAxis ? AXIS_ID_VALUE_SECONDARY : AXIS_ID_VALUE_PRIMARY;\n const catAxisId = options.secondaryCatAxis ? AXIS_ID_CATEGORY_SECONDARY : AXIS_ID_CATEGORY_PRIMARY;\n usesSecondaryValAxis = usesSecondaryValAxis || options.secondaryValAxis;\n strXml += makeChartType(type.type, type.data, options, valAxisId, catAxisId);\n });\n }\n else {\n strXml += makeChartType(rel.opts._type, rel.data, rel.opts, AXIS_ID_VALUE_PRIMARY, AXIS_ID_CATEGORY_PRIMARY);\n }\n // B: Axes -----------------------------------------------------------\n if (rel.opts._type !== CHART_TYPE.PIE && rel.opts._type !== CHART_TYPE.DOUGHNUT) {\n // Param check\n if (rel.opts.valAxes && rel.opts.valAxes.length > 1 && !usesSecondaryValAxis) {\n throw new Error('Secondary axis must be used by one of the multiple charts');\n }\n if (rel.opts.catAxes) {\n if (!rel.opts.valAxes || rel.opts.valAxes.length !== rel.opts.catAxes.length) {\n throw new Error('There must be the same number of value and category axes.');\n }\n strXml += makeCatAxis(Object.assign(Object.assign({}, rel.opts), rel.opts.catAxes[0]), AXIS_ID_CATEGORY_PRIMARY, AXIS_ID_VALUE_PRIMARY);\n }\n else {\n strXml += makeCatAxis(rel.opts, AXIS_ID_CATEGORY_PRIMARY, AXIS_ID_VALUE_PRIMARY);\n }\n if (rel.opts.valAxes) {\n strXml += makeValAxis(Object.assign(Object.assign({}, rel.opts), rel.opts.valAxes[0]), AXIS_ID_VALUE_PRIMARY);\n if (rel.opts.valAxes[1]) {\n strXml += makeValAxis(Object.assign(Object.assign({}, rel.opts), rel.opts.valAxes[1]), AXIS_ID_VALUE_SECONDARY);\n }\n }\n else {\n strXml += makeValAxis(rel.opts, AXIS_ID_VALUE_PRIMARY);\n // Add series axis for 3D bar\n if (rel.opts._type === CHART_TYPE.BAR3D) {\n strXml += makeSerAxis(rel.opts, AXIS_ID_SERIES_PRIMARY, AXIS_ID_VALUE_PRIMARY);\n }\n }\n // Combo Charts: Add secondary axes after all vals\n if (((_a = rel.opts) === null || _a === void 0 ? void 0 : _a.catAxes) && ((_b = rel.opts) === null || _b === void 0 ? void 0 : _b.catAxes[1])) {\n strXml += makeCatAxis(Object.assign(Object.assign({}, rel.opts), rel.opts.catAxes[1]), AXIS_ID_CATEGORY_SECONDARY, AXIS_ID_VALUE_SECONDARY);\n }\n }\n // C: Chart Properties and plotArea Options: Border, Data Table, Fill, Legend\n {\n // NOTE: DataTable goes between '</c:valAx>' and '<c:spPr>'\n if (rel.opts.showDataTable) {\n strXml += '<c:dTable>';\n strXml += ` <c:showHorzBorder val=\"${!rel.opts.showDataTableHorzBorder ? 0 : 1}\"/>`;\n strXml += ` <c:showVertBorder val=\"${!rel.opts.showDataTableVertBorder ? 0 : 1}\"/>`;\n strXml += ` <c:showOutline val=\"${!rel.opts.showDataTableOutline ? 0 : 1}\"/>`;\n strXml += ` <c:showKeys val=\"${!rel.opts.showDataTableKeys ? 0 : 1}\"/>`;\n strXml += ' <c:spPr>';\n strXml += ' <a:noFill/>';\n strXml += ' <a:ln w=\"9525\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"tx1\"><a:lumMod val=\"15000\"/><a:lumOff val=\"85000\"/></a:schemeClr></a:solidFill><a:round/></a:ln>';\n strXml += ' <a:effectLst/>';\n strXml += ' </c:spPr>';\n strXml += ' <c:txPr>';\n strXml += ' <a:bodyPr rot=\"0\" spcFirstLastPara=\"1\" vertOverflow=\"ellipsis\" vert=\"horz\" wrap=\"square\" anchor=\"ctr\" anchorCtr=\"1\"/>';\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr rtl=\"0\">';\n strXml += ` <a:defRPr sz=\"${Math.round((rel.opts.dataTableFontSize || DEF_FONT_SIZE) * 100)}\" b=\"0\" i=\"0\" u=\"none\" strike=\"noStrike\" kern=\"1200\" baseline=\"0\">`;\n strXml += ' <a:solidFill><a:schemeClr val=\"tx1\"><a:lumMod val=\"65000\"/><a:lumOff val=\"35000\"/></a:schemeClr></a:solidFill>';\n strXml += ' <a:latin typeface=\"+mn-lt\"/>';\n strXml += ' <a:ea typeface=\"+mn-ea\"/>';\n strXml += ' <a:cs typeface=\"+mn-cs\"/>';\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr>';\n strXml += ' <a:endParaRPr lang=\"en-US\"/>';\n strXml += ' </a:p>';\n strXml += ' </c:txPr>';\n strXml += '</c:dTable>';\n }\n strXml += ' <c:spPr>';\n // OPTION: Fill\n strXml += ((_c = rel.opts.plotArea.fill) === null || _c === void 0 ? void 0 : _c.color) ? genXmlColorSelection(rel.opts.plotArea.fill) : '<a:noFill/>';\n // OPTION: Border\n strXml += rel.opts.plotArea.border\n ? `<a:ln w=\"${valToPts(rel.opts.plotArea.border.pt)}\" cap=\"flat\">${genXmlColorSelection(rel.opts.plotArea.border.color)}</a:ln>`\n : '<a:ln><a:noFill/></a:ln>';\n // Close shapeProp/plotArea before Legend\n strXml += ' <a:effectLst/>';\n strXml += ' </c:spPr>';\n strXml += '</c:plotArea>';\n // OPTION: Legend\n // IMPORTANT: Dont specify layout to enable auto-fit: PPT does a great job maximizing space with all 4 TRBL locations\n if (rel.opts.showLegend) {\n strXml += '<c:legend>';\n strXml += '<c:legendPos val=\"' + rel.opts.legendPos + '\"/>';\n // strXml += '<c:layout/>'\n strXml += '<c:overlay val=\"0\"/>';\n if (rel.opts.legendFontFace || rel.opts.legendFontSize || rel.opts.legendColor) {\n strXml += '<c:txPr>';\n strXml += ' <a:bodyPr/>';\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr>';\n strXml += rel.opts.legendFontSize ? `<a:defRPr sz=\"${Math.round(Number(rel.opts.legendFontSize) * 100)}\">` : '<a:defRPr>';\n if (rel.opts.legendColor)\n strXml += genXmlColorSelection(rel.opts.legendColor);\n if (rel.opts.legendFontFace)\n strXml += '<a:latin typeface=\"' + rel.opts.legendFontFace + '\"/>';\n if (rel.opts.legendFontFace)\n strXml += '<a:cs typeface=\"' + rel.opts.legendFontFace + '\"/>';\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr>';\n strXml += ' <a:endParaRPr lang=\"en-US\"/>';\n strXml += ' </a:p>';\n strXml += '</c:txPr>';\n }\n strXml += '</c:legend>';\n }\n }\n strXml += ' <c:plotVisOnly val=\"1\"/>';\n strXml += ' <c:dispBlanksAs val=\"' + rel.opts.displayBlanksAs + '\"/>';\n if (rel.opts._type === CHART_TYPE.SCATTER)\n strXml += '<c:showDLblsOverMax val=\"1\"/>';\n strXml += '</c:chart>';\n // D: CHARTSPACE SHAPE PROPS\n strXml += '<c:spPr>';\n strXml += ((_d = rel.opts.chartArea.fill) === null || _d === void 0 ? void 0 : _d.color) ? genXmlColorSelection(rel.opts.chartArea.fill) : '<a:noFill/>';\n strXml += rel.opts.chartArea.border\n ? `<a:ln w=\"${valToPts(rel.opts.chartArea.border.pt)}\" cap=\"flat\">${genXmlColorSelection(rel.opts.chartArea.border.color)}</a:ln>`\n : '<a:ln><a:noFill/></a:ln>';\n strXml += ' <a:effectLst/>';\n strXml += '</c:spPr>';\n // E: DATA (Add relID)\n strXml += '<c:externalData r:id=\"rId1\"><c:autoUpdate val=\"0\"/></c:externalData>';\n // LAST: chartSpace end\n strXml += '</c:chartSpace>';\n return strXml;\n}\n/**\n * Create XML string for any given chart type\n * @param {CHART_NAME} chartType chart type name\n * @param {IOptsChartData[]} data chart data\n * @param {IChartOptsLib} opts chart options\n * @param {string} valAxisId chart val axis id\n * @param {string} catAxisId chart cat axis id\n * @param {boolean} isMultiTypeChart is this a mutli-type chart?\n * @example 'bubble' returns <c:bubbleChart></c>\n * @example '<c:lineChart>'\n * @return {string} XML chart\n */\nfunction makeChartType(chartType, data, opts, valAxisId, catAxisId, isMultiTypeChart) {\n // NOTE: \"Chart Range\" (as shown in \"select Chart Area dialog\") is calculated.\n // ....: Ensure each X/Y Axis/Col has same row height (esp. applicable to XY Scatter where X can often be larger than Y's)\n let colorIndex = -1; // Maintain the color index by region\n let idxColLtr = 1;\n let optsChartData = null;\n let strXml = '';\n switch (chartType) {\n case CHART_TYPE.AREA:\n case CHART_TYPE.BAR:\n case CHART_TYPE.BAR3D:\n case CHART_TYPE.LINE:\n case CHART_TYPE.RADAR:\n // 1: Start Chart\n strXml += `<c:${chartType}Chart>`;\n if (chartType === CHART_TYPE.AREA && opts.barGrouping === 'stacked') {\n strXml += '<c:grouping val=\"' + opts.barGrouping + '\"/>';\n }\n if (chartType === CHART_TYPE.BAR || chartType === CHART_TYPE.BAR3D) {\n strXml += '<c:barDir val=\"' + opts.barDir + '\"/>';\n strXml += '<c:grouping val=\"' + (opts.barGrouping || 'clustered') + '\"/>';\n }\n if (chartType === CHART_TYPE.RADAR) {\n strXml += '<c:radarStyle val=\"' + opts.radarStyle + '\"/>';\n }\n strXml += '<c:varyColors val=\"0\"/>';\n // 2: \"Series\" block for every data row\n /* EX1:\n data: [\n {\n name: 'Region 1',\n labels: [['April', 'May', 'June', 'July']],\n values: [17, 26, 53, 96]\n },\n {\n name: 'Region 2',\n labels: [['April', 'May', 'June', 'July']],\n values: [55, 43, 70, 58]\n }\n ]\n */\n /* EX2:\n data: [\n {\n name: 'Region 1',\n labels: [\n ['April', 'May', 'June', 'April', 'May', 'June'],\n ['2020', '', '', '2021', '', '']\n ],\n values: [17, 26, 53, 96, 40, 33]\n },\n {\n name: 'Region 2',\n labels: [\n ['April', 'May', 'June', 'April', 'May', 'June'],\n ['2020', '', '', '2021', '', '']\n ],\n values: [55, 43, 70, 58, 78, 63]\n }\n ]\n */\n data.forEach(obj => {\n var _a;\n colorIndex++;\n strXml += '<c:ser>';\n strXml += ` <c:idx val=\"${obj._dataIndex}\"/><c:order val=\"${obj._dataIndex}\"/>`;\n strXml += ' <c:tx>';\n strXml += ' <c:strRef>';\n strXml += ' <c:f>Sheet1!$' + getExcelColName(obj._dataIndex + obj.labels.length + 1) + '$1</c:f>';\n strXml += ' <c:strCache><c:ptCount val=\"1\"/><c:pt idx=\"0\"><c:v>' + encodeXmlEntities(obj.name) + '</c:v></c:pt></c:strCache>';\n strXml += ' </c:strRef>';\n strXml += ' </c:tx>';\n // Fill and Border\n // TODO: CURRENT: Pull#727\n // TODO: let seriesColor = obj.color ? obj.color : opts.chartColors ? opts.chartColors[colorIndex % opts.chartColors.length] : null\n const seriesColor = opts.chartColors ? opts.chartColors[colorIndex % opts.chartColors.length] : null;\n strXml += ' <c:spPr>';\n if (seriesColor === 'transparent') {\n strXml += '<a:noFill/>';\n }\n else if (opts.chartColorsOpacity) {\n strXml += '<a:solidFill>' + createColorElement(seriesColor, `<a:alpha val=\"${Math.round(opts.chartColorsOpacity * 1000)}\"/>`) + '</a:solidFill>';\n }\n else {\n strXml += '<a:solidFill>' + createColorElement(seriesColor) + '</a:solidFill>';\n }\n if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.RADAR) {\n if (opts.lineSize === 0) {\n strXml += '<a:ln><a:noFill/></a:ln>';\n }\n else {\n strXml += `<a:ln w=\"${valToPts(opts.lineSize)}\" cap=\"${createLineCap(opts.lineCap)}\"><a:solidFill>${createColorElement(seriesColor)}</a:solidFill>`;\n strXml += '<a:prstDash val=\"' + (opts.lineDash || 'solid') + '\"/><a:round/></a:ln>';\n }\n }\n else if (opts.dataBorder) {\n strXml += `<a:ln w=\"${valToPts(opts.dataBorder.pt)}\" cap=\"${createLineCap(opts.lineCap)}\"><a:solidFill>${createColorElement(opts.dataBorder.color)}</a:solidFill><a:prstDash val=\"solid\"/><a:round/></a:ln>`;\n }\n strXml += createShadowElement(opts.shadow, DEF_SHAPE_SHADOW);\n strXml += ' </c:spPr>';\n strXml += ' <c:invertIfNegative val=\"0\"/>';\n // Data Labels per series\n // NOTE: [20190117] Adding these to RADAR chart causes unrecoverable corruption!\n if (chartType !== CHART_TYPE.RADAR) {\n strXml += '<c:dLbls>';\n strXml += `<c:numFmt formatCode=\"${encodeXmlEntities(opts.dataLabelFormatCode) || 'General'}\" sourceLinked=\"0\"/>`;\n if (opts.dataLabelBkgrdColors)\n strXml += `<c:spPr><a:solidFill>${createColorElement(seriesColor)}</a:solidFill></c:spPr>`;\n strXml += '<c:txPr><a:bodyPr/><a:lstStyle/><a:p><a:pPr>';\n strXml += `<a:defRPr b=\"${opts.dataLabelFontBold ? 1 : 0}\" i=\"${opts.dataLabelFontItalic ? 1 : 0}\" strike=\"noStrike\" sz=\"${Math.round((opts.dataLabelFontSize || DEF_FONT_SIZE) * 100)}\" u=\"none\">`;\n strXml += `<a:solidFill>${createColorElement(opts.dataLabelColor || DEF_FONT_COLOR)}</a:solidFill>`;\n strXml += `<a:latin typeface=\"${opts.dataLabelFontFace || 'Arial'}\"/>`;\n strXml += '</a:defRPr></a:pPr></a:p></c:txPr>';\n if (opts.dataLabelPosition)\n strXml += `<c:dLblPos val=\"${opts.dataLabelPosition}\"/>`;\n strXml += '<c:showLegendKey val=\"0\"/>';\n strXml += `<c:showVal val=\"${opts.showValue ? '1' : '0'}\"/>`;\n strXml += `<c:showCatName val=\"0\"/><c:showSerName val=\"${opts.showSerName ? '1' : '0'}\"/><c:showPercent val=\"0\"/><c:showBubbleSize val=\"0\"/>`;\n strXml += `<c:showLeaderLines val=\"${opts.showLeaderLines ? '1' : '0'}\"/>`;\n strXml += '</c:dLbls>';\n }\n // 'c:marker' tag: `lineDataSymbol`\n if (chartType === CHART_TYPE.LINE || chartType === CHART_TYPE.RADAR) {\n strXml += '<c:marker>';\n strXml += ' <c:symbol val=\"' + opts.lineDataSymbol + '\"/>';\n if (opts.lineDataSymbolSize)\n strXml += `<c:size val=\"${opts.lineDataSymbolSize}\"/>`; // Defaults to \"auto\" otherwise (but this is usually too small, so there is a default)\n strXml += ' <c:spPr>';\n strXml += ` <a:solidFill>${createColorElement(opts.chartColors[obj._dataIndex + 1 > opts.chartColors.length ? Math.floor(Math.random() * opts.chartColors.length) : obj._dataIndex])}</a:solidFill>`;\n strXml += ` <a:ln w=\"${opts.lineDataSymbolLineSize}\" cap=\"flat\"><a:solidFill>${createColorElement(opts.lineDataSymbolLineColor || seriesColor)}</a:solidFill><a:prstDash val=\"solid\"/><a:round/></a:ln>`;\n strXml += ' <a:effectLst/>';\n strXml += ' </c:spPr>';\n strXml += '</c:marker>';\n }\n // Allow users with a single data set to pass their own array of colors (check for this using != ours)\n // Color chart bars various colors when >1 color\n // NOTE: `<c:dPt>` created with various colors will change PPT legend by design so each dataPt/color is an legend item!\n if ((chartType === CHART_TYPE.BAR || chartType === CHART_TYPE.BAR3D) &&\n data.length === 1 &&\n ((opts.chartColors && opts.chartColors !== BARCHART_COLORS && opts.chartColors.length > 1) || ((_a = opts.invertedColors) === null || _a === void 0 ? void 0 : _a.length))) {\n // Series Data Point colors\n obj.values.forEach((value, index) => {\n const arrColors = value < 0 ? opts.invertedColors || opts.chartColors || BARCHART_COLORS : opts.chartColors || [];\n strXml += ' <c:dPt>';\n strXml += ` <c:idx val=\"${index}\"/>`;\n strXml += ' <c:invertIfNegative val=\"0\"/>';\n strXml += ' <c:bubble3D val=\"0\"/>';\n strXml += ' <c:spPr>';\n if (opts.lineSize === 0) {\n strXml += '<a:ln><a:noFill/></a:ln>';\n }\n else if (chartType === CHART_TYPE.BAR) {\n strXml += '<a:solidFill>';\n strXml += ' <a:srgbClr val=\"' + arrColors[index % arrColors.length] + '\"/>';\n strXml += '</a:solidFill>';\n }\n else {\n strXml += '<a:ln>';\n strXml += ' <a:solidFill>';\n strXml += ' <a:srgbClr val=\"' + arrColors[index % arrColors.length] + '\"/>';\n strXml += ' </a:solidFill>';\n strXml += '</a:ln>';\n }\n strXml += createShadowElement(opts.shadow, DEF_SHAPE_SHADOW);\n strXml += ' </c:spPr>';\n strXml += ' </c:dPt>';\n });\n }\n // 2: \"Categories\"\n {\n strXml += '<c:cat>';\n if (opts.catLabelFormatCode) {\n // Use 'numRef' as catLabelFormatCode implies that we are expecting numbers here\n strXml += ' <c:numRef>';\n strXml += ` <c:f>Sheet1!$A$2:$A$${obj.labels[0].length + 1}</c:f>`;\n strXml += ' <c:numCache>';\n strXml += ' <c:formatCode>' + (opts.catLabelFormatCode || 'General') + '</c:formatCode>';\n strXml += ` <c:ptCount val=\"${obj.labels[0].length}\"/>`;\n obj.labels[0].forEach((label, idx) => (strXml += `<c:pt idx=\"${idx}\"><c:v>${encodeXmlEntities(label)}</c:v></c:pt>`));\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n }\n else {\n strXml += ' <c:multiLvlStrRef>';\n strXml += ` <c:f>Sheet1!$A$2:$${getExcelColName(obj.labels.length)}$${obj.labels[0].length + 1}</c:f>`;\n strXml += ' <c:multiLvlStrCache>';\n strXml += ` <c:ptCount val=\"${obj.labels[0].length}\"/>`;\n obj.labels.forEach(labelsGroup => {\n strXml += '<c:lvl>';\n labelsGroup.forEach((label, idx) => (strXml += `<c:pt idx=\"${idx}\"><c:v>${encodeXmlEntities(label)}</c:v></c:pt>`));\n strXml += '</c:lvl>';\n });\n strXml += ' </c:multiLvlStrCache>';\n strXml += ' </c:multiLvlStrRef>';\n }\n strXml += '</c:cat>';\n }\n // 3: \"Values\"\n {\n strXml += '<c:val>';\n strXml += ' <c:numRef>';\n strXml += `<c:f>Sheet1!$${getExcelColName(obj._dataIndex + obj.labels.length + 1)}$2:$${getExcelColName(obj._dataIndex + obj.labels.length + 1)}$${obj.labels[0].length + 1}</c:f>`;\n strXml += ' <c:numCache>';\n strXml += ' <c:formatCode>' + (opts.valLabelFormatCode || opts.dataTableFormatCode || 'General') + '</c:formatCode>';\n strXml += ` <c:ptCount val=\"${obj.labels[0].length}\"/>`;\n obj.values.forEach((value, idx) => (strXml += `<c:pt idx=\"${idx}\"><c:v>${value || value === 0 ? value : ''}</c:v></c:pt>`));\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n strXml += '</c:val>';\n }\n // Option: `smooth`\n if (chartType === CHART_TYPE.LINE)\n strXml += '<c:smooth val=\"' + (opts.lineSmooth ? '1' : '0') + '\"/>';\n // 4: Close \"SERIES\"\n strXml += '</c:ser>';\n });\n // 3: \"Data Labels\"\n {\n strXml += ' <c:dLbls>';\n strXml += ` <c:numFmt formatCode=\"${encodeXmlEntities(opts.dataLabelFormatCode) || 'General'}\" sourceLinked=\"0\"/>`;\n strXml += ' <c:txPr>';\n strXml += ' <a:bodyPr/>';\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p><a:pPr>';\n strXml += ` <a:defRPr b=\"${opts.dataLabelFontBold ? 1 : 0}\" i=\"${opts.dataLabelFontItalic ? 1 : 0}\" strike=\"noStrike\" sz=\"${Math.round((opts.dataLabelFontSize || DEF_FONT_SIZE) * 100)}\" u=\"none\">`;\n strXml += ' <a:solidFill>' + createColorElement(opts.dataLabelColor || DEF_FONT_COLOR) + '</a:solidFill>';\n strXml += ' <a:latin typeface=\"' + (opts.dataLabelFontFace || 'Arial') + '\"/>';\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr></a:p>';\n strXml += ' </c:txPr>';\n if (opts.dataLabelPosition)\n strXml += ' <c:dLblPos val=\"' + opts.dataLabelPosition + '\"/>';\n strXml += ' <c:showLegendKey val=\"0\"/>';\n strXml += ' <c:showVal val=\"' + (opts.showValue ? '1' : '0') + '\"/>';\n strXml += ' <c:showCatName val=\"0\"/>';\n strXml += ' <c:showSerName val=\"' + (opts.showSerName ? '1' : '0') + '\"/>';\n strXml += ' <c:showPercent val=\"0\"/>';\n strXml += ' <c:showBubbleSize val=\"0\"/>';\n strXml += ` <c:showLeaderLines val=\"${opts.showLeaderLines ? '1' : '0'}\"/>`;\n strXml += ' </c:dLbls>';\n }\n // 4: Add more chart options (gapWidth, line Marker, etc.)\n if (chartType === CHART_TYPE.BAR) {\n strXml += ` <c:gapWidth val=\"${opts.barGapWidthPct}\"/>`;\n strXml += ` <c:overlap val=\"${(opts.barGrouping || '').includes('tacked') ? 100 : opts.barOverlapPct ? opts.barOverlapPct : 0}\"/>`;\n }\n else if (chartType === CHART_TYPE.BAR3D) {\n strXml += ` <c:gapWidth val=\"${opts.barGapWidthPct}\"/>`;\n strXml += ` <c:gapDepth val=\"${opts.barGapDepthPct}\"/>`;\n strXml += ' <c:shape val=\"' + opts.bar3DShape + '\"/>';\n }\n else if (chartType === CHART_TYPE.LINE) {\n strXml += ' <c:marker val=\"1\"/>';\n }\n // 5: Add axisId (NOTE: order matters! (category comes first))\n strXml += `<c:axId val=\"${catAxisId}\"/><c:axId val=\"${valAxisId}\"/><c:axId val=\"${AXIS_ID_SERIES_PRIMARY}\"/>`;\n // 6: Close Chart tag\n strXml += `</c:${chartType}Chart>`;\n // end switch\n break;\n case CHART_TYPE.SCATTER:\n /*\n `data` = [\n { name:'X-Axis', values:[1,2,3,4,5,6,7,8,9,10,11,12] },\n { name:'Y-Value 1', values:[13, 20, 21, 25] },\n { name:'Y-Value 2', values:[ 1, 2, 5, 9] }\n ];\n */\n // 1: Start Chart\n strXml += '<c:' + chartType + 'Chart>';\n strXml += '<c:scatterStyle val=\"lineMarker\"/>';\n strXml += '<c:varyColors val=\"0\"/>';\n // 2: Series: (One for each Y-Axis)\n colorIndex = -1;\n data.filter((_obj, idx) => idx > 0).forEach((obj, idx) => {\n colorIndex++;\n strXml += '<c:ser>';\n strXml += ` <c:idx val=\"${idx}\"/>`;\n strXml += ` <c:order val=\"${idx}\"/>`;\n strXml += ' <c:tx>';\n strXml += ' <c:strRef>';\n strXml += ` <c:f>Sheet1!$${getExcelColName(idx + 2)}$1</c:f>`;\n strXml += ' <c:strCache><c:ptCount val=\"1\"/><c:pt idx=\"0\"><c:v>' + encodeXmlEntities(obj.name) + '</c:v></c:pt></c:strCache>';\n strXml += ' </c:strRef>';\n strXml += ' </c:tx>';\n // 'c:spPr': Fill, Border, Line, LineStyle (dash, etc.), Shadow\n strXml += ' <c:spPr>';\n {\n const tmpSerColor = opts.chartColors[colorIndex % opts.chartColors.length];\n if (tmpSerColor === 'transparent') {\n strXml += '<a:noFill/>';\n }\n else if (opts.chartColorsOpacity) {\n strXml += '<a:solidFill>' + createColorElement(tmpSerColor, '<a:alpha val=\"' + Math.round(opts.chartColorsOpacity * 1000).toString() + '\"/>') + '</a:solidFill>';\n }\n else {\n strXml += '<a:solidFill>' + createColorElement(tmpSerColor) + '</a:solidFill>';\n }\n if (opts.lineSize === 0) {\n strXml += '<a:ln><a:noFill/></a:ln>';\n }\n else {\n strXml += `<a:ln w=\"${valToPts(opts.lineSize)}\" cap=\"${createLineCap(opts.lineCap)}\"><a:solidFill>${createColorElement(tmpSerColor)}</a:solidFill>`;\n strXml += `<a:prstDash val=\"${opts.lineDash || 'solid'}\"/><a:round/></a:ln>`;\n }\n // Shadow\n strXml += createShadowElement(opts.shadow, DEF_SHAPE_SHADOW);\n }\n strXml += ' </c:spPr>';\n // 'c:marker' tag: `lineDataSymbol`\n {\n strXml += '<c:marker>';\n strXml += ' <c:symbol val=\"' + opts.lineDataSymbol + '\"/>';\n if (opts.lineDataSymbolSize) {\n // Defaults to \"auto\" otherwise (but this is usually too small, so there is a default)\n strXml += `<c:size val=\"${opts.lineDataSymbolSize}\"/>`;\n }\n strXml += '<c:spPr>';\n strXml += `<a:solidFill>${createColorElement(opts.chartColors[idx + 1 > opts.chartColors.length ? Math.floor(Math.random() * opts.chartColors.length) : idx])}</a:solidFill>`;\n strXml += `<a:ln w=\"${opts.lineDataSymbolLineSize}\" cap=\"flat\"><a:solidFill>${createColorElement(opts.lineDataSymbolLineColor || opts.chartColors[colorIndex % opts.chartColors.length])}</a:solidFill><a:prstDash val=\"solid\"/><a:round/></a:ln>`;\n strXml += '<a:effectLst/>';\n strXml += '</c:spPr>';\n strXml += '</c:marker>';\n }\n // Option: scatter data point labels\n if (opts.showLabel) {\n const chartUuid = getUuid('-xxxx-xxxx-xxxx-xxxxxxxxxxxx');\n if (obj.labels[0] && (opts.dataLabelFormatScatter === 'custom' || opts.dataLabelFormatScatter === 'customXY')) {\n strXml += '<c:dLbls>';\n obj.labels[0].forEach((label, idx) => {\n if (opts.dataLabelFormatScatter === 'custom' || opts.dataLabelFormatScatter === 'customXY') {\n strXml += ' <c:dLbl>';\n strXml += ` <c:idx val=\"${idx}\"/>`;\n strXml += ' <c:tx>';\n strXml += ' <c:rich>';\n strXml += ' <a:bodyPr>';\n strXml += ' <a:spAutoFit/>';\n strXml += ' </a:bodyPr>';\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr>';\n strXml += ' <a:defRPr/>';\n strXml += ' </a:pPr>';\n strXml += ' <a:r>';\n strXml += ' <a:rPr lang=\"' + (opts.lang || 'en-US') + '\" dirty=\"0\"/>';\n strXml += ' <a:t>' + encodeXmlEntities(label) + '</a:t>';\n strXml += ' </a:r>';\n // Apply XY values at end of custom label\n // Do not apply the values if the label was empty or just spaces\n // This allows for selective labelling where required\n if (opts.dataLabelFormatScatter === 'customXY' && !/^ *$/.test(label)) {\n strXml += ' <a:r>';\n strXml += ' <a:rPr lang=\"' + (opts.lang || 'en-US') + '\" baseline=\"0\" dirty=\"0\"/>';\n strXml += ' <a:t> (</a:t>';\n strXml += ' </a:r>';\n strXml += ' <a:fld id=\"{' + getUuid('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx') + '}\" type=\"XVALUE\">';\n strXml += ' <a:rPr lang=\"' + (opts.lang || 'en-US') + '\" baseline=\"0\"/>';\n strXml += ' <a:pPr>';\n strXml += ' <a:defRPr/>';\n strXml += ' </a:pPr>';\n strXml += ' <a:t>[' + encodeXmlEntities(obj.name) + '</a:t>';\n strXml += ' </a:fld>';\n strXml += ' <a:r>';\n strXml += ' <a:rPr lang=\"' + (opts.lang || 'en-US') + '\" baseline=\"0\" dirty=\"0\"/>';\n strXml += ' <a:t>, </a:t>';\n strXml += ' </a:r>';\n strXml += ' <a:fld id=\"{' + getUuid('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx') + '}\" type=\"YVALUE\">';\n strXml += ' <a:rPr lang=\"' + (opts.lang || 'en-US') + '\" baseline=\"0\"/>';\n strXml += ' <a:pPr>';\n strXml += ' <a:defRPr/>';\n strXml += ' </a:pPr>';\n strXml += ' <a:t>[' + encodeXmlEntities(obj.name) + ']</a:t>';\n strXml += ' </a:fld>';\n strXml += ' <a:r>';\n strXml += ' <a:rPr lang=\"' + (opts.lang || 'en-US') + '\" baseline=\"0\" dirty=\"0\"/>';\n strXml += ' <a:t>)</a:t>';\n strXml += ' </a:r>';\n strXml += ' <a:endParaRPr lang=\"' + (opts.lang || 'en-US') + '\" dirty=\"0\"/>';\n }\n strXml += ' </a:p>';\n strXml += ' </c:rich>';\n strXml += ' </c:tx>';\n strXml += ' <c:spPr>';\n strXml += ' <a:noFill/>';\n strXml += ' <a:ln>';\n strXml += ' <a:noFill/>';\n strXml += ' </a:ln>';\n strXml += ' <a:effectLst/>';\n strXml += ' </c:spPr>';\n if (opts.dataLabelPosition)\n strXml += ' <c:dLblPos val=\"' + opts.dataLabelPosition + '\"/>';\n strXml += ' <c:showLegendKey val=\"0\"/>';\n strXml += ' <c:showVal val=\"0\"/>';\n strXml += ' <c:showCatName val=\"0\"/>';\n strXml += ' <c:showSerName val=\"0\"/>';\n strXml += ' <c:showPercent val=\"0\"/>';\n strXml += ' <c:showBubbleSize val=\"0\"/>';\n strXml += ' <c:showLeaderLines val=\"1\"/>';\n strXml += ' <c:extLst>';\n strXml += ' <c:ext uri=\"{CE6537A1-D6FC-4f65-9D91-7224C49458BB}\" xmlns:c15=\"http://schemas.microsoft.com/office/drawing/2012/chart\"/>';\n strXml += ' <c:ext uri=\"{C3380CC4-5D6E-409C-BE32-E72D297353CC}\" xmlns:c16=\"http://schemas.microsoft.com/office/drawing/2014/chart\">';\n strXml += ` <c16:uniqueId val=\"{${'00000000'.substring(0, 8 - (idx + 1).toString().length).toString()}${idx + 1}${chartUuid}}\"/>`;\n strXml += ' </c:ext>';\n strXml += ' </c:extLst>';\n strXml += '</c:dLbl>';\n }\n });\n strXml += '</c:dLbls>';\n }\n if (opts.dataLabelFormatScatter === 'XY') {\n strXml += '<c:dLbls>';\n strXml += ' <c:spPr>';\n strXml += ' <a:noFill/>';\n strXml += ' <a:ln>';\n strXml += ' <a:noFill/>';\n strXml += ' </a:ln>';\n strXml += ' <a:effectLst/>';\n strXml += ' </c:spPr>';\n strXml += ' <c:txPr>';\n strXml += ' <a:bodyPr>';\n strXml += ' <a:spAutoFit/>';\n strXml += ' </a:bodyPr>';\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr>';\n strXml += ' <a:defRPr/>';\n strXml += ' </a:pPr>';\n strXml += ' <a:endParaRPr lang=\"en-US\"/>';\n strXml += ' </a:p>';\n strXml += ' </c:txPr>';\n if (opts.dataLabelPosition)\n strXml += ' <c:dLblPos val=\"' + opts.dataLabelPosition + '\"/>';\n strXml += ' <c:showLegendKey val=\"0\"/>';\n strXml += ` <c:showVal val=\"${opts.showLabel ? '1' : '0'}\"/>`;\n strXml += ` <c:showCatName val=\"${opts.showLabel ? '1' : '0'}\"/>`;\n strXml += ` <c:showSerName val=\"${opts.showSerName ? '1' : '0'}\"/>`;\n strXml += ' <c:showPercent val=\"0\"/>';\n strXml += ' <c:showBubbleSize val=\"0\"/>';\n strXml += ' <c:extLst>';\n strXml += ' <c:ext uri=\"{CE6537A1-D6FC-4f65-9D91-7224C49458BB}\" xmlns:c15=\"http://schemas.microsoft.com/office/drawing/2012/chart\">';\n strXml += ' <c15:showLeaderLines val=\"1\"/>';\n strXml += ' </c:ext>';\n strXml += ' </c:extLst>';\n strXml += '</c:dLbls>';\n }\n }\n // Color bar chart bars various colors\n // Allow users with a single data set to pass their own array of colors (check for this using != ours)\n if (data.length === 1 && opts.chartColors !== BARCHART_COLORS) {\n // Series Data Point colors\n obj.values.forEach((value, index) => {\n const arrColors = value < 0 ? opts.invertedColors || opts.chartColors || BARCHART_COLORS : opts.chartColors || [];\n strXml += ' <c:dPt>';\n strXml += ` <c:idx val=\"${index}\"/>`;\n strXml += ' <c:invertIfNegative val=\"0\"/>';\n strXml += ' <c:bubble3D val=\"0\"/>';\n strXml += ' <c:spPr>';\n if (opts.lineSize === 0) {\n strXml += '<a:ln><a:noFill/></a:ln>';\n }\n else {\n strXml += '<a:solidFill>';\n strXml += ' <a:srgbClr val=\"' + arrColors[index % arrColors.length] + '\"/>';\n strXml += '</a:solidFill>';\n }\n strXml += createShadowElement(opts.shadow, DEF_SHAPE_SHADOW);\n strXml += ' </c:spPr>';\n strXml += ' </c:dPt>';\n });\n }\n // 3: \"Values\": Scatter Chart has 2: `xVal` and `yVal`\n {\n // X-Axis is always the same\n strXml += '<c:xVal>';\n strXml += ' <c:numRef>';\n strXml += ` <c:f>Sheet1!$A$2:$A$${data[0].values.length + 1}</c:f>`;\n strXml += ' <c:numCache>';\n strXml += ' <c:formatCode>General</c:formatCode>';\n strXml += ` <c:ptCount val=\"${data[0].values.length}\"/>`;\n data[0].values.forEach((value, idx) => {\n strXml += `<c:pt idx=\"${idx}\"><c:v>${value || value === 0 ? value : ''}</c:v></c:pt>`;\n });\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n strXml += '</c:xVal>';\n // Y-Axis vals are this object's `values`\n strXml += '<c:yVal>';\n strXml += ' <c:numRef>';\n strXml += ` <c:f>Sheet1!$${getExcelColName(idx + 2)}$2:$${getExcelColName(idx + 2)}$${data[0].values.length + 1}</c:f>`;\n strXml += ' <c:numCache>';\n strXml += ' <c:formatCode>General</c:formatCode>';\n // NOTE: Use pt count and iterate over data[0] (X-Axis) as user can have more values than data (eg: timeline where only first few months are populated)\n strXml += ` <c:ptCount val=\"${data[0].values.length}\"/>`;\n data[0].values.forEach((_value, idx) => {\n strXml += `<c:pt idx=\"${idx}\"><c:v>${obj.values[idx] || obj.values[idx] === 0 ? obj.values[idx] : ''}</c:v></c:pt>`;\n });\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n strXml += '</c:yVal>';\n }\n // Option: `smooth`\n strXml += '<c:smooth val=\"' + (opts.lineSmooth ? '1' : '0') + '\"/>';\n // 4: Close \"SERIES\"\n strXml += '</c:ser>';\n });\n // 3: Data Labels\n {\n strXml += ' <c:dLbls>';\n strXml += ` <c:numFmt formatCode=\"${encodeXmlEntities(opts.dataLabelFormatCode) || 'General'}\" sourceLinked=\"0\"/>`;\n strXml += ' <c:txPr>';\n strXml += ' <a:bodyPr/>';\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p><a:pPr>';\n strXml += ` <a:defRPr b=\"${opts.dataLabelFontBold ? '1' : '0'}\" i=\"${opts.dataLabelFontItalic ? '1' : '0'}\" strike=\"noStrike\" sz=\"${Math.round((opts.dataLabelFontSize || DEF_FONT_SIZE) * 100)}\" u=\"none\">`;\n strXml += ' <a:solidFill>' + createColorElement(opts.dataLabelColor || DEF_FONT_COLOR) + '</a:solidFill>';\n strXml += ' <a:latin typeface=\"' + (opts.dataLabelFontFace || 'Arial') + '\"/>';\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr></a:p>';\n strXml += ' </c:txPr>';\n if (opts.dataLabelPosition)\n strXml += ' <c:dLblPos val=\"' + opts.dataLabelPosition + '\"/>';\n strXml += ' <c:showLegendKey val=\"0\"/>';\n strXml += ' <c:showVal val=\"' + (opts.showValue ? '1' : '0') + '\"/>';\n strXml += ' <c:showCatName val=\"0\"/>';\n strXml += ' <c:showSerName val=\"' + (opts.showSerName ? '1' : '0') + '\"/>';\n strXml += ' <c:showPercent val=\"0\"/>';\n strXml += ' <c:showBubbleSize val=\"0\"/>';\n strXml += ' </c:dLbls>';\n }\n // 4: Add axis Id (NOTE: order matters! - category comes first)\n strXml += `<c:axId val=\"${catAxisId}\"/><c:axId val=\"${valAxisId}\"/>`;\n // 5: Close Chart tag\n strXml += '</c:' + chartType + 'Chart>';\n // end switch\n break;\n case CHART_TYPE.BUBBLE:\n case CHART_TYPE.BUBBLE3D:\n /*\n `data` = [\n { name:'X-Axis', values:[1,2,3,4,5,6,7,8,9,10,11,12] },\n { name:'Y-Values 1', values:[13, 20, 21, 25], sizes:[10, 5, 20, 15] },\n { name:'Y-Values 2', values:[ 1, 2, 5, 9], sizes:[ 5, 3, 9, 3] }\n ];\n */\n // 1: Start Chart\n strXml += '<c:bubbleChart>';\n strXml += '<c:varyColors val=\"0\"/>';\n // 2: Series: (One for each Y-Axis)\n colorIndex = -1;\n data.filter((_obj, idx) => idx > 0).forEach((obj, idx) => {\n colorIndex++;\n strXml += '<c:ser>';\n strXml += ` <c:idx val=\"${idx}\"/>`;\n strXml += ` <c:order val=\"${idx}\"/>`;\n // A: `<c:tx>`\n strXml += ' <c:tx>';\n strXml += ' <c:strRef>';\n strXml += ' <c:f>Sheet1!$' + getExcelColName(idxColLtr + 1) + '$1</c:f>';\n strXml += ' <c:strCache><c:ptCount val=\"1\"/><c:pt idx=\"0\"><c:v>' + encodeXmlEntities(obj.name) + '</c:v></c:pt></c:strCache>';\n strXml += ' </c:strRef>';\n strXml += ' </c:tx>';\n // B: '<c:spPr>': Fill, Border, Line, LineStyle (dash, etc.), Shadow\n {\n strXml += '<c:spPr>';\n const tmpSerColor = opts.chartColors[colorIndex % opts.chartColors.length];\n if (tmpSerColor === 'transparent') {\n strXml += '<a:noFill/>';\n }\n else if (opts.chartColorsOpacity) {\n strXml += `<a:solidFill>${createColorElement(tmpSerColor, '<a:alpha val=\"' + Math.round(opts.chartColorsOpacity * 1000).toString() + '\"/>')}</a:solidFill>`;\n }\n else {\n strXml += '<a:solidFill>' + createColorElement(tmpSerColor) + '</a:solidFill>';\n }\n if (opts.lineSize === 0) {\n strXml += '<a:ln><a:noFill/></a:ln>';\n }\n else if (opts.dataBorder) {\n strXml += `<a:ln w=\"${valToPts(opts.dataBorder.pt)}\" cap=\"flat\"><a:solidFill>${createColorElement(opts.dataBorder.color)}</a:solidFill><a:prstDash val=\"solid\"/><a:round/></a:ln>`;\n }\n else {\n strXml += `<a:ln w=\"${valToPts(opts.lineSize)}\" cap=\"flat\"><a:solidFill>${createColorElement(tmpSerColor)}</a:solidFill>`;\n strXml += `<a:prstDash val=\"${opts.lineDash || 'solid'}\"/><a:round/></a:ln>`;\n }\n // Shadow\n strXml += createShadowElement(opts.shadow, DEF_SHAPE_SHADOW);\n strXml += '</c:spPr>';\n }\n // C: '<c:dLbls>' \"Data Labels\"\n // Let it be defaulted for now\n // D: '<c:xVal>'/'<c:yVal>' \"Values\": Scatter Chart has 2: `xVal` and `yVal`\n {\n // X-Axis is always the same\n strXml += '<c:xVal>';\n strXml += ' <c:numRef>';\n strXml += ` <c:f>Sheet1!$A$2:$A$${data[0].values.length + 1}</c:f>`;\n strXml += ' <c:numCache>';\n strXml += ' <c:formatCode>General</c:formatCode>';\n strXml += ` <c:ptCount val=\"${data[0].values.length}\"/>`;\n data[0].values.forEach((value, idx) => {\n strXml += `<c:pt idx=\"${idx}\"><c:v>${value || value === 0 ? value : ''}</c:v></c:pt>`;\n });\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n strXml += '</c:xVal>';\n // Y-Axis vals are this object's `values`\n strXml += '<c:yVal>';\n strXml += ' <c:numRef>';\n strXml += `<c:f>Sheet1!$${getExcelColName(idxColLtr + 1)}$2:$${getExcelColName(idxColLtr + 1)}$${data[0].values.length + 1}</c:f>`;\n idxColLtr++;\n strXml += ' <c:numCache>';\n strXml += ' <c:formatCode>General</c:formatCode>';\n // NOTE: Use pt count and iterate over data[0] (X-Axis) as user can have more values than data (eg: timeline where only first few months are populated)\n strXml += ` <c:ptCount val=\"${data[0].values.length}\"/>`;\n data[0].values.forEach((_value, idx) => {\n strXml += `<c:pt idx=\"${idx}\"><c:v>${obj.values[idx] || obj.values[idx] === 0 ? obj.values[idx] : ''}</c:v></c:pt>`;\n });\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n strXml += '</c:yVal>';\n }\n // E: '<c:bubbleSize>'\n strXml += ' <c:bubbleSize>';\n strXml += ' <c:numRef>';\n strXml += `<c:f>Sheet1!$${getExcelColName(idxColLtr + 1)}$2:$${getExcelColName(idxColLtr + 1)}$${obj.sizes.length + 1}</c:f>`;\n idxColLtr++;\n strXml += ' <c:numCache>';\n strXml += ' <c:formatCode>General</c:formatCode>';\n strXml += ` <c:ptCount val=\"${obj.sizes.length}\"/>`;\n obj.sizes.forEach((value, idx) => {\n strXml += `<c:pt idx=\"${idx}\"><c:v>${value || ''}</c:v></c:pt>`;\n });\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n strXml += ' </c:bubbleSize>';\n strXml += ' <c:bubble3D val=\"' + (chartType === CHART_TYPE.BUBBLE3D ? '1' : '0') + '\"/>';\n // F: Close \"SERIES\"\n strXml += '</c:ser>';\n });\n // 3: Data Labels\n {\n strXml += '<c:dLbls>';\n strXml += `<c:numFmt formatCode=\"${encodeXmlEntities(opts.dataLabelFormatCode) || 'General'}\" sourceLinked=\"0\"/>`;\n strXml += '<c:txPr><a:bodyPr/><a:lstStyle/><a:p><a:pPr>';\n strXml += `<a:defRPr b=\"${opts.dataLabelFontBold ? 1 : 0}\" i=\"${opts.dataLabelFontItalic ? 1 : 0}\" strike=\"noStrike\" sz=\"${Math.round(Math.round(opts.dataLabelFontSize || DEF_FONT_SIZE) * 100)}\" u=\"none\">`;\n strXml += `<a:solidFill>${createColorElement(opts.dataLabelColor || DEF_FONT_COLOR)}</a:solidFill>`;\n strXml += `<a:latin typeface=\"${opts.dataLabelFontFace || 'Arial'}\"/>`;\n strXml += '</a:defRPr></a:pPr></a:p></c:txPr>';\n if (opts.dataLabelPosition)\n strXml += `<c:dLblPos val=\"${opts.dataLabelPosition}\"/>`;\n strXml += '<c:showLegendKey val=\"0\"/>';\n strXml += `<c:showVal val=\"${opts.showValue ? '1' : '0'}\"/>`;\n strXml += `<c:showCatName val=\"0\"/><c:showSerName val=\"${opts.showSerName ? '1' : '0'}\"/><c:showPercent val=\"0\"/><c:showBubbleSize val=\"0\"/>`;\n strXml += '<c:extLst>';\n strXml += ' <c:ext uri=\"{CE6537A1-D6FC-4f65-9D91-7224C49458BB}\" xmlns:c15=\"http://schemas.microsoft.com/office/drawing/2012/chart\">';\n strXml += ' <c15:showLeaderLines val=\"' + (opts.showLeaderLines ? '1' : '0') + '\"/>';\n strXml += ' </c:ext>';\n strXml += '</c:extLst>';\n strXml += '</c:dLbls>';\n }\n // 4: Bubble options\n // strXml += ' <c:bubbleScale val=\"100\"/>';\n // strXml += ' <c:showNegBubbles val=\"0\"/>';\n // Commented out to let it default to PPT until we create options\n // 5: AxisId (NOTE: order matters! (category comes first))\n strXml += `<c:axId val=\"${catAxisId}\"/><c:axId val=\"${valAxisId}\"/>`;\n // 6: Close Chart tag\n strXml += '</c:bubbleChart>';\n // end switch\n break;\n case CHART_TYPE.DOUGHNUT:\n case CHART_TYPE.PIE:\n // Use the same let name so code blocks from barChart are interchangeable\n optsChartData = data[0];\n /* EX:\n data: [\n {\n name: 'Project Status',\n labels: ['Red', 'Amber', 'Green', 'Unknown'],\n values: [10, 20, 38, 2]\n }\n ]\n */\n // 1: Start Chart\n strXml += '<c:' + chartType + 'Chart>';\n strXml += ' <c:varyColors val=\"1\"/>';\n strXml += '<c:ser>';\n strXml += ' <c:idx val=\"0\"/>';\n strXml += ' <c:order val=\"0\"/>';\n strXml += ' <c:tx>';\n strXml += ' <c:strRef>';\n strXml += ' <c:f>Sheet1!$B$1</c:f>';\n strXml += ' <c:strCache>';\n strXml += ' <c:ptCount val=\"1\"/>';\n strXml += ' <c:pt idx=\"0\"><c:v>' + encodeXmlEntities(optsChartData.name) + '</c:v></c:pt>';\n strXml += ' </c:strCache>';\n strXml += ' </c:strRef>';\n strXml += ' </c:tx>';\n strXml += ' <c:spPr>';\n strXml += ' <a:solidFill><a:schemeClr val=\"accent1\"/></a:solidFill>';\n strXml += ' <a:ln w=\"9525\" cap=\"flat\"><a:solidFill><a:srgbClr val=\"F9F9F9\"/></a:solidFill><a:prstDash val=\"solid\"/><a:round/></a:ln>';\n if (opts.dataNoEffects) {\n strXml += '<a:effectLst/>';\n }\n else {\n strXml += createShadowElement(opts.shadow, DEF_SHAPE_SHADOW);\n }\n strXml += ' </c:spPr>';\n // strXml += '<c:explosion val=\"0\"/>'\n // 2: \"Data Point\" block for every data row\n optsChartData.labels[0].forEach((_label, idx) => {\n strXml += '<c:dPt>';\n strXml += ` <c:idx val=\"${idx}\"/>`;\n strXml += ' <c:bubble3D val=\"0\"/>';\n strXml += ' <c:spPr>';\n strXml += `<a:solidFill>${createColorElement(opts.chartColors[idx + 1 > opts.chartColors.length ? Math.floor(Math.random() * opts.chartColors.length) : idx])}</a:solidFill>`;\n if (opts.dataBorder) {\n strXml += `<a:ln w=\"${valToPts(opts.dataBorder.pt)}\" cap=\"flat\"><a:solidFill>${createColorElement(opts.dataBorder.color)}</a:solidFill><a:prstDash val=\"solid\"/><a:round/></a:ln>`;\n }\n strXml += createShadowElement(opts.shadow, DEF_SHAPE_SHADOW);\n strXml += ' </c:spPr>';\n strXml += '</c:dPt>';\n });\n // 3: \"Data Label\" block for every data Label\n strXml += '<c:dLbls>';\n optsChartData.labels[0].forEach((_label, idx) => {\n strXml += '<c:dLbl>';\n strXml += ` <c:idx val=\"${idx}\"/>`;\n strXml += ` <c:numFmt formatCode=\"${encodeXmlEntities(opts.dataLabelFormatCode) || 'General'}\" sourceLinked=\"0\"/>`;\n strXml += ' <c:spPr/><c:txPr>';\n strXml += ' <a:bodyPr/><a:lstStyle/>';\n strXml += ' <a:p><a:pPr>';\n strXml += ` <a:defRPr sz=\"${Math.round((opts.dataLabelFontSize || DEF_FONT_SIZE) * 100)}\" b=\"${opts.dataLabelFontBold ? 1 : 0}\" i=\"${opts.dataLabelFontItalic ? 1 : 0}\" u=\"none\" strike=\"noStrike\">`;\n strXml += ' <a:solidFill>' + createColorElement(opts.dataLabelColor || DEF_FONT_COLOR) + '</a:solidFill>';\n strXml += ` <a:latin typeface=\"${opts.dataLabelFontFace || 'Arial'}\"/>`;\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr></a:p>';\n strXml += ' </c:txPr>';\n if (chartType === CHART_TYPE.PIE && opts.dataLabelPosition)\n strXml += `<c:dLblPos val=\"${opts.dataLabelPosition}\"/>`;\n strXml += ' <c:showLegendKey val=\"0\"/>';\n strXml += ' <c:showVal val=\"' + (opts.showValue ? '1' : '0') + '\"/>';\n strXml += ' <c:showCatName val=\"' + (opts.showLabel ? '1' : '0') + '\"/>';\n strXml += ' <c:showSerName val=\"' + (opts.showSerName ? '1' : '0') + '\"/>';\n strXml += ' <c:showPercent val=\"' + (opts.showPercent ? '1' : '0') + '\"/>';\n strXml += ' <c:showBubbleSize val=\"0\"/>';\n strXml += ' </c:dLbl>';\n });\n strXml += ` <c:numFmt formatCode=\"${encodeXmlEntities(opts.dataLabelFormatCode) || 'General'}\" sourceLinked=\"0\"/>`;\n strXml += ' <c:txPr>';\n strXml += ' <a:bodyPr/>';\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr>';\n strXml += ` <a:defRPr sz=\"1800\" b=\"${opts.dataLabelFontBold ? '1' : '0'}\" i=\"${opts.dataLabelFontItalic ? '1' : '0'}\" u=\"none\" strike=\"noStrike\">`;\n strXml += ' <a:solidFill><a:srgbClr val=\"000000\"/></a:solidFill><a:latin typeface=\"Arial\"/>';\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr>';\n strXml += ' </a:p>';\n strXml += ' </c:txPr>';\n strXml += chartType === CHART_TYPE.PIE ? '<c:dLblPos val=\"ctr\"/>' : '';\n strXml += ' <c:showLegendKey val=\"0\"/>';\n strXml += ' <c:showVal val=\"0\"/>';\n strXml += ' <c:showCatName val=\"1\"/>';\n strXml += ' <c:showSerName val=\"0\"/>';\n strXml += ' <c:showPercent val=\"1\"/>';\n strXml += ' <c:showBubbleSize val=\"0\"/>';\n strXml += ` <c:showLeaderLines val=\"${opts.showLeaderLines ? '1' : '0'}\"/>`;\n strXml += '</c:dLbls>';\n // 2: \"Categories\"\n strXml += '<c:cat>';\n strXml += ' <c:strRef>';\n strXml += ` <c:f>Sheet1!$A$2:$A$${optsChartData.labels[0].length + 1}</c:f>`;\n strXml += ' <c:strCache>';\n strXml += ` <c:ptCount val=\"${optsChartData.labels[0].length}\"/>`;\n optsChartData.labels[0].forEach((label, idx) => {\n strXml += `<c:pt idx=\"${idx}\"><c:v>${encodeXmlEntities(label)}</c:v></c:pt>`;\n });\n strXml += ' </c:strCache>';\n strXml += ' </c:strRef>';\n strXml += '</c:cat>';\n // 3: Create vals\n strXml += ' <c:val>';\n strXml += ' <c:numRef>';\n strXml += ` <c:f>Sheet1!$B$2:$B$${optsChartData.labels[0].length + 1}</c:f>`;\n strXml += ' <c:numCache>';\n strXml += ` <c:ptCount val=\"${optsChartData.labels[0].length}\"/>`;\n optsChartData.values.forEach((value, idx) => {\n strXml += `<c:pt idx=\"${idx}\"><c:v>${value || value === 0 ? value : ''}</c:v></c:pt>`;\n });\n strXml += ' </c:numCache>';\n strXml += ' </c:numRef>';\n strXml += ' </c:val>';\n // 4: Close \"SERIES\"\n strXml += ' </c:ser>';\n strXml += ` <c:firstSliceAng val=\"${opts.firstSliceAng ? Math.round(opts.firstSliceAng) : 0}\"/>`;\n if (chartType === CHART_TYPE.DOUGHNUT)\n strXml += `<c:holeSize val=\"${typeof opts.holeSize === 'number' ? opts.holeSize : '50'}\"/>`;\n strXml += '</c:' + chartType + 'Chart>';\n // Done with Doughnut/Pie\n break;\n default:\n strXml += '';\n break;\n }\n return strXml;\n}\n/**\n * Create Category axis\n * @param {IChartOptsLib} opts - chart options\n * @param {string} axisId - value\n * @param {string} valAxisId - value\n * @return {string} XML\n */\nfunction makeCatAxis(opts, axisId, valAxisId) {\n let strXml = '';\n // Build cat axis tag\n // NOTE: Scatter and Bubble chart need two Val axises as they display numbers on x axis\n if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) {\n strXml += '<c:valAx>';\n }\n else {\n strXml += '<c:' + (opts.catLabelFormatCode ? 'dateAx' : 'catAx') + '>';\n }\n strXml += ' <c:axId val=\"' + axisId + '\"/>';\n strXml += ' <c:scaling>';\n strXml += '<c:orientation val=\"' + (opts.catAxisOrientation || (opts.barDir === 'col' ? 'minMax' : 'minMax')) + '\"/>';\n if (opts.catAxisMaxVal || opts.catAxisMaxVal === 0)\n strXml += `<c:max val=\"${opts.catAxisMaxVal}\"/>`;\n if (opts.catAxisMinVal || opts.catAxisMinVal === 0)\n strXml += `<c:min val=\"${opts.catAxisMinVal}\"/>`;\n strXml += '</c:scaling>';\n strXml += ' <c:delete val=\"' + (opts.catAxisHidden ? '1' : '0') + '\"/>';\n strXml += ' <c:axPos val=\"' + (opts.barDir === 'col' ? 'b' : 'l') + '\"/>';\n strXml += opts.catGridLine.style !== 'none' ? createGridLineElement(opts.catGridLine) : '';\n // '<c:title>' comes between '</c:majorGridlines>' and '<c:numFmt>'\n if (opts.showCatAxisTitle) {\n strXml += genXmlTitle({\n color: opts.catAxisTitleColor,\n fontFace: opts.catAxisTitleFontFace,\n fontSize: opts.catAxisTitleFontSize,\n titleRotate: opts.catAxisTitleRotate,\n title: opts.catAxisTitle || 'Axis Title',\n });\n }\n // NOTE: Adding Val Axis Formatting if scatter or bubble charts\n if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) {\n strXml += ' <c:numFmt formatCode=\"' + (opts.valAxisLabelFormatCode ? encodeXmlEntities(opts.valAxisLabelFormatCode) : 'General') + '\" sourceLinked=\"1\"/>';\n }\n else {\n strXml += ' <c:numFmt formatCode=\"' + (encodeXmlEntities(opts.catLabelFormatCode) || 'General') + '\" sourceLinked=\"1\"/>';\n }\n if (opts._type === CHART_TYPE.SCATTER) {\n strXml += ' <c:majorTickMark val=\"none\"/>';\n strXml += ' <c:minorTickMark val=\"none\"/>';\n strXml += ' <c:tickLblPos val=\"nextTo\"/>';\n }\n else {\n strXml += ' <c:majorTickMark val=\"' + (opts.catAxisMajorTickMark || 'out') + '\"/>';\n strXml += ' <c:minorTickMark val=\"' + (opts.catAxisMinorTickMark || 'none') + '\"/>';\n strXml += ' <c:tickLblPos val=\"' + (opts.catAxisLabelPos || (opts.barDir === 'col' ? 'low' : 'nextTo')) + '\"/>';\n }\n strXml += ' <c:spPr>';\n strXml += ` <a:ln w=\"${opts.catAxisLineSize ? valToPts(opts.catAxisLineSize) : ONEPT}\" cap=\"flat\">`;\n strXml += !opts.catAxisLineShow ? '<a:noFill/>' : '<a:solidFill>' + createColorElement(opts.catAxisLineColor || DEF_CHART_GRIDLINE.color) + '</a:solidFill>';\n strXml += ' <a:prstDash val=\"' + (opts.catAxisLineStyle || 'solid') + '\"/>';\n strXml += ' <a:round/>';\n strXml += ' </a:ln>';\n strXml += ' </c:spPr>';\n strXml += ' <c:txPr>';\n if (opts.catAxisLabelRotate) {\n strXml += `<a:bodyPr rot=\"${convertRotationDegrees(opts.catAxisLabelRotate)}\"/>`;\n }\n else {\n // NOTE: don't specify \"`rot=0\" - that way the object will be auto behavior\n strXml += '<a:bodyPr/>';\n }\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr>';\n strXml += ` <a:defRPr sz=\"${Math.round((opts.catAxisLabelFontSize || DEF_FONT_SIZE) * 100)}\" b=\"${opts.catAxisLabelFontBold ? 1 : 0}\" i=\"${opts.catAxisLabelFontItalic ? 1 : 0}\" u=\"none\" strike=\"noStrike\">`;\n strXml += ' <a:solidFill>' + createColorElement(opts.catAxisLabelColor || DEF_FONT_COLOR) + '</a:solidFill>';\n strXml += ' <a:latin typeface=\"' + (opts.catAxisLabelFontFace || 'Arial') + '\"/>';\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr>';\n strXml += ' <a:endParaRPr lang=\"' + (opts.lang || 'en-US') + '\"/>';\n strXml += ' </a:p>';\n strXml += ' </c:txPr>';\n strXml += ' <c:crossAx val=\"' + valAxisId + '\"/>';\n strXml += ` <c:${typeof opts.valAxisCrossesAt === 'number' ? 'crossesAt' : 'crosses'} val=\"${opts.valAxisCrossesAt || 'autoZero'}\"/>`;\n strXml += ' <c:auto val=\"1\"/>';\n strXml += ' <c:lblAlgn val=\"ctr\"/>';\n strXml += ` <c:noMultiLvlLbl val=\"${opts.catAxisMultiLevelLabels ? 0 : 1}\"/>`;\n if (opts.catAxisLabelFrequency)\n strXml += ' <c:tickLblSkip val=\"' + opts.catAxisLabelFrequency + '\"/>';\n // Issue#149: PPT will auto-adjust these as needed after calcing the date bounds, so we only include them when specified by user\n // Allow major and minor units to be set for double value axis charts\n if (opts.catLabelFormatCode || opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) {\n if (opts.catLabelFormatCode) {\n ['catAxisBaseTimeUnit', 'catAxisMajorTimeUnit', 'catAxisMinorTimeUnit'].forEach(opt => {\n // Validate input as poorly chosen/garbage options will cause chart corruption and it wont render at all!\n if (opts[opt] && (typeof opts[opt] !== 'string' || !['days', 'months', 'years'].includes(opts[opt].toLowerCase()))) {\n console.warn(`\"${opt}\" must be one of: 'days','months','years' !`);\n opts[opt] = null;\n }\n });\n if (opts.catAxisBaseTimeUnit)\n strXml += '<c:baseTimeUnit val=\"' + opts.catAxisBaseTimeUnit.toLowerCase() + '\"/>';\n if (opts.catAxisMajorTimeUnit)\n strXml += '<c:majorTimeUnit val=\"' + opts.catAxisMajorTimeUnit.toLowerCase() + '\"/>';\n if (opts.catAxisMinorTimeUnit)\n strXml += '<c:minorTimeUnit val=\"' + opts.catAxisMinorTimeUnit.toLowerCase() + '\"/>';\n }\n if (opts.catAxisMajorUnit)\n strXml += `<c:majorUnit val=\"${opts.catAxisMajorUnit}\"/>`;\n if (opts.catAxisMinorUnit)\n strXml += `<c:minorUnit val=\"${opts.catAxisMinorUnit}\"/>`;\n }\n // Close cat axis tag\n // NOTE: Added closing tag of val or cat axis based on chart type\n if (opts._type === CHART_TYPE.SCATTER || opts._type === CHART_TYPE.BUBBLE || opts._type === CHART_TYPE.BUBBLE3D) {\n strXml += '</c:valAx>';\n }\n else {\n strXml += '</c:' + (opts.catLabelFormatCode ? 'dateAx' : 'catAx') + '>';\n }\n return strXml;\n}\n/**\n * Create Value Axis (Used by `bar3D`)\n * @param {IChartOptsLib} opts - chart options\n * @param {string} valAxisId - value\n * @return {string} XML\n */\nfunction makeValAxis(opts, valAxisId) {\n let axisPos = valAxisId === AXIS_ID_VALUE_PRIMARY ? (opts.barDir === 'col' ? 'l' : 'b') : opts.barDir !== 'col' ? 'r' : 't';\n if (valAxisId === AXIS_ID_VALUE_SECONDARY)\n axisPos = 'r'; // default behavior for PPT is showing 2nd val axis on right (primary axis on left)\n const crossAxId = valAxisId === AXIS_ID_VALUE_PRIMARY ? AXIS_ID_CATEGORY_PRIMARY : AXIS_ID_CATEGORY_SECONDARY;\n let strXml = '';\n strXml += '<c:valAx>';\n strXml += ' <c:axId val=\"' + valAxisId + '\"/>';\n strXml += ' <c:scaling>';\n if (opts.valAxisLogScaleBase)\n strXml += `<c:logBase val=\"${opts.valAxisLogScaleBase}\"/>`;\n strXml += '<c:orientation val=\"' + (opts.valAxisOrientation || (opts.barDir === 'col' ? 'minMax' : 'minMax')) + '\"/>';\n if (opts.valAxisMaxVal || opts.valAxisMaxVal === 0)\n strXml += `<c:max val=\"${opts.valAxisMaxVal}\"/>`;\n if (opts.valAxisMinVal || opts.valAxisMinVal === 0)\n strXml += `<c:min val=\"${opts.valAxisMinVal}\"/>`;\n strXml += ' </c:scaling>';\n strXml += ` <c:delete val=\"${opts.valAxisHidden ? 1 : 0}\"/>`;\n strXml += ' <c:axPos val=\"' + axisPos + '\"/>';\n if (opts.valGridLine.style !== 'none')\n strXml += createGridLineElement(opts.valGridLine);\n // '<c:title>' comes between '</c:majorGridlines>' and '<c:numFmt>'\n if (opts.showValAxisTitle) {\n strXml += genXmlTitle({\n color: opts.valAxisTitleColor,\n fontFace: opts.valAxisTitleFontFace,\n fontSize: opts.valAxisTitleFontSize,\n titleRotate: opts.valAxisTitleRotate,\n title: opts.valAxisTitle || 'Axis Title',\n });\n }\n strXml += `<c:numFmt formatCode=\"${opts.valAxisLabelFormatCode ? encodeXmlEntities(opts.valAxisLabelFormatCode) : 'General'}\" sourceLinked=\"0\"/>`;\n if (opts._type === CHART_TYPE.SCATTER) {\n strXml += ' <c:majorTickMark val=\"none\"/>';\n strXml += ' <c:minorTickMark val=\"none\"/>';\n strXml += ' <c:tickLblPos val=\"nextTo\"/>';\n }\n else {\n strXml += ' <c:majorTickMark val=\"' + (opts.valAxisMajorTickMark || 'out') + '\"/>';\n strXml += ' <c:minorTickMark val=\"' + (opts.valAxisMinorTickMark || 'none') + '\"/>';\n strXml += ' <c:tickLblPos val=\"' + (opts.valAxisLabelPos || (opts.barDir === 'col' ? 'nextTo' : 'low')) + '\"/>';\n }\n strXml += ' <c:spPr>';\n strXml += ` <a:ln w=\"${opts.valAxisLineSize ? valToPts(opts.valAxisLineSize) : ONEPT}\" cap=\"flat\">`;\n strXml += !opts.valAxisLineShow ? '<a:noFill/>' : '<a:solidFill>' + createColorElement(opts.valAxisLineColor || DEF_CHART_GRIDLINE.color) + '</a:solidFill>';\n strXml += ' <a:prstDash val=\"' + (opts.valAxisLineStyle || 'solid') + '\"/>';\n strXml += ' <a:round/>';\n strXml += ' </a:ln>';\n strXml += ' </c:spPr>';\n strXml += ' <c:txPr>';\n strXml += ` <a:bodyPr${opts.valAxisLabelRotate ? (' rot=\"' + convertRotationDegrees(opts.valAxisLabelRotate).toString() + '\"') : ''}/>`; // don't specify rot 0 so we get the auto behavior\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr>';\n strXml += ` <a:defRPr sz=\"${Math.round((opts.valAxisLabelFontSize || DEF_FONT_SIZE) * 100)}\" b=\"${opts.valAxisLabelFontBold ? 1 : 0}\" i=\"${opts.valAxisLabelFontItalic ? 1 : 0}\" u=\"none\" strike=\"noStrike\">`;\n strXml += ' <a:solidFill>' + createColorElement(opts.valAxisLabelColor || DEF_FONT_COLOR) + '</a:solidFill>';\n strXml += ' <a:latin typeface=\"' + (opts.valAxisLabelFontFace || 'Arial') + '\"/>';\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr>';\n strXml += ' <a:endParaRPr lang=\"' + (opts.lang || 'en-US') + '\"/>';\n strXml += ' </a:p>';\n strXml += ' </c:txPr>';\n strXml += ' <c:crossAx val=\"' + crossAxId + '\"/>';\n if (typeof opts.catAxisCrossesAt === 'number') {\n strXml += ` <c:crossesAt val=\"${opts.catAxisCrossesAt}\"/>`;\n }\n else if (typeof opts.catAxisCrossesAt === 'string') {\n strXml += ' <c:crosses val=\"' + opts.catAxisCrossesAt + '\"/>';\n }\n else {\n const isRight = axisPos === 'r' || axisPos === 't';\n const crosses = isRight ? 'max' : 'autoZero';\n strXml += ' <c:crosses val=\"' + crosses + '\"/>';\n }\n strXml +=\n ' <c:crossBetween val=\"' +\n (opts._type === CHART_TYPE.SCATTER || (!!(Array.isArray(opts._type) && opts._type.filter(type => type.type === CHART_TYPE.AREA).length > 0)) ? 'midCat' : 'between') +\n '\"/>';\n if (opts.valAxisMajorUnit)\n strXml += ` <c:majorUnit val=\"${opts.valAxisMajorUnit}\"/>`;\n if (opts.valAxisDisplayUnit) {\n strXml += `<c:dispUnits><c:builtInUnit val=\"${opts.valAxisDisplayUnit}\"/>${opts.valAxisDisplayUnitLabel ? '<c:dispUnitsLbl/>' : ''}</c:dispUnits>`;\n }\n strXml += '</c:valAx>';\n return strXml;\n}\n/**\n * Create Series Axis (Used by `bar3D`)\n * @param {IChartOptsLib} opts - chart options\n * @param {string} axisId - axis ID\n * @param {string} valAxisId - value\n * @return {string} XML\n */\nfunction makeSerAxis(opts, axisId, valAxisId) {\n let strXml = '';\n // Build ser axis tag\n strXml += '<c:serAx>';\n strXml += ' <c:axId val=\"' + axisId + '\"/>';\n strXml += ' <c:scaling><c:orientation val=\"' + (opts.serAxisOrientation || (opts.barDir === 'col' ? 'minMax' : 'minMax')) + '\"/></c:scaling>';\n strXml += ' <c:delete val=\"' + (opts.serAxisHidden ? '1' : '0') + '\"/>';\n strXml += ' <c:axPos val=\"' + (opts.barDir === 'col' ? 'b' : 'l') + '\"/>';\n strXml += opts.serGridLine.style !== 'none' ? createGridLineElement(opts.serGridLine) : '';\n // '<c:title>' comes between '</c:majorGridlines>' and '<c:numFmt>'\n if (opts.showSerAxisTitle) {\n strXml += genXmlTitle({\n color: opts.serAxisTitleColor,\n fontFace: opts.serAxisTitleFontFace,\n fontSize: opts.serAxisTitleFontSize,\n titleRotate: opts.serAxisTitleRotate,\n title: opts.serAxisTitle || 'Axis Title',\n });\n }\n strXml += ` <c:numFmt formatCode=\"${encodeXmlEntities(opts.serLabelFormatCode) || 'General'}\" sourceLinked=\"0\"/>`;\n strXml += ' <c:majorTickMark val=\"out\"/>';\n strXml += ' <c:minorTickMark val=\"none\"/>';\n strXml += ` <c:tickLblPos val=\"${opts.serAxisLabelPos || opts.barDir === 'col' ? 'low' : 'nextTo'}\"/>`;\n strXml += ' <c:spPr>';\n strXml += ' <a:ln w=\"12700\" cap=\"flat\">';\n strXml += !opts.serAxisLineShow ? '<a:noFill/>' : `<a:solidFill>${createColorElement(opts.serAxisLineColor || DEF_CHART_GRIDLINE.color)}</a:solidFill>`;\n strXml += ' <a:prstDash val=\"solid\"/>';\n strXml += ' <a:round/>';\n strXml += ' </a:ln>';\n strXml += ' </c:spPr>';\n strXml += ' <c:txPr>';\n strXml += ' <a:bodyPr/>'; // don't specify rot 0 so we get the auto behavior\n strXml += ' <a:lstStyle/>';\n strXml += ' <a:p>';\n strXml += ' <a:pPr>';\n strXml += ` <a:defRPr sz=\"${Math.round((opts.serAxisLabelFontSize || DEF_FONT_SIZE) * 100)}\" b=\"${opts.serAxisLabelFontBold ? '1' : '0'}\" i=\"${opts.serAxisLabelFontItalic ? '1' : '0'}\" u=\"none\" strike=\"noStrike\">`;\n strXml += ` <a:solidFill>${createColorElement(opts.serAxisLabelColor || DEF_FONT_COLOR)}</a:solidFill>`;\n strXml += ` <a:latin typeface=\"${opts.serAxisLabelFontFace || 'Arial'}\"/>`;\n strXml += ' </a:defRPr>';\n strXml += ' </a:pPr>';\n strXml += ' <a:endParaRPr lang=\"' + (opts.lang || 'en-US') + '\"/>';\n strXml += ' </a:p>';\n strXml += ' </c:txPr>';\n strXml += ' <c:crossAx val=\"' + valAxisId + '\"/>';\n strXml += ' <c:crosses val=\"autoZero\"/>';\n if (opts.serAxisLabelFrequency)\n strXml += ' <c:tickLblSkip val=\"' + opts.serAxisLabelFrequency + '\"/>';\n // Issue#149: PPT will auto-adjust these as needed after calcing the date bounds, so we only include them when specified by user\n if (opts.serLabelFormatCode) {\n ['serAxisBaseTimeUnit', 'serAxisMajorTimeUnit', 'serAxisMinorTimeUnit'].forEach(opt => {\n // Validate input as poorly chosen/garbage options will cause chart corruption and it wont render at all!\n if (opts[opt] && (typeof opts[opt] !== 'string' || !['days', 'months', 'years'].includes(opt.toLowerCase()))) {\n console.warn(`\"${opt}\" must be one of: 'days','months','years' !`);\n opts[opt] = null;\n }\n });\n if (opts.serAxisBaseTimeUnit)\n strXml += ` <c:baseTimeUnit val=\"${opts.serAxisBaseTimeUnit.toLowerCase()}\"/>`;\n if (opts.serAxisMajorTimeUnit)\n strXml += ` <c:majorTimeUnit val=\"${opts.serAxisMajorTimeUnit.toLowerCase()}\"/>`;\n if (opts.serAxisMinorTimeUnit)\n strXml += ` <c:minorTimeUnit val=\"${opts.serAxisMinorTimeUnit.toLowerCase()}\"/>`;\n if (opts.serAxisMajorUnit)\n strXml += ` <c:majorUnit val=\"${opts.serAxisMajorUnit}\"/>`;\n if (opts.serAxisMinorUnit)\n strXml += ` <c:minorUnit val=\"${opts.serAxisMinorUnit}\"/>`;\n }\n // Close ser axis tag\n strXml += '</c:serAx>';\n return strXml;\n}\n/**\n * Create char title elements\n * @param {IChartPropsTitle} opts - options\n * @return {string} XML `<c:title>`\n */\nfunction genXmlTitle(opts, chartX, chartY) {\n const align = opts.titleAlign === 'left' || opts.titleAlign === 'right' ? `<a:pPr algn=\"${opts.titleAlign.substring(0, 1)}\">` : '<a:pPr>';\n const rotate = opts.titleRotate ? `<a:bodyPr rot=\"${convertRotationDegrees(opts.titleRotate)}\"/>` : '<a:bodyPr/>'; // don't specify rotation to get default (ex. vertical for cat axis)\n const sizeAttr = opts.fontSize ? `sz=\"${Math.round(opts.fontSize * 100)}\"` : ''; // only set the font size if specified. Powerpoint will handle the default size\n const titleBold = opts.titleBold ? 1 : 0;\n let layout = '<c:layout/>';\n if (opts.titlePos && typeof opts.titlePos.x === 'number' && typeof opts.titlePos.y === 'number') {\n // NOTE: manualLayout x/y vals are *relative to entire slide*\n const totalX = opts.titlePos.x + chartX;\n const totalY = opts.titlePos.y + chartY;\n let valX = totalX === 0 ? 0 : (totalX * (totalX / 5)) / 10;\n if (valX >= 1)\n valX = valX / 10;\n if (valX >= 0.1)\n valX = valX / 10;\n let valY = totalY === 0 ? 0 : (totalY * (totalY / 5)) / 10;\n if (valY >= 1)\n valY = valY / 10;\n if (valY >= 0.1)\n valY = valY / 10;\n layout = `<c:layout><c:manualLayout><c:xMode val=\"edge\"/><c:yMode val=\"edge\"/><c:x val=\"${valX}\"/><c:y val=\"${valY}\"/></c:manualLayout></c:layout>`;\n }\n return `<c:title>\n <c:tx>\n <c:rich>\n ${rotate}\n <a:lstStyle/>\n <a:p>\n ${align}\n <a:defRPr ${sizeAttr} b=\"${titleBold}\" i=\"0\" u=\"none\" strike=\"noStrike\">\n <a:solidFill>${createColorElement(opts.color || DEF_FONT_COLOR)}</a:solidFill>\n <a:latin typeface=\"${opts.fontFace || 'Arial'}\"/>\n </a:defRPr>\n </a:pPr>\n <a:r>\n <a:rPr ${sizeAttr} b=\"${titleBold}\" i=\"0\" u=\"none\" strike=\"noStrike\">\n <a:solidFill>${createColorElement(opts.color || DEF_FONT_COLOR)}</a:solidFill>\n <a:latin typeface=\"${opts.fontFace || 'Arial'}\"/>\n </a:rPr>\n <a:t>${encodeXmlEntities(opts.title) || ''}</a:t>\n </a:r>\n </a:p>\n </c:rich>\n </c:tx>\n ${layout}\n <c:overlay val=\"0\"/>\n </c:title>`;\n}\n/**\n * Calc and return excel column name for a given column length\n * @param colIndex column index\n * @return column name\n * @example 1 returns 'A'\n * @example 27 returns 'AA'\n */\nfunction getExcelColName(colIndex) {\n let colStr = '';\n const colIdx = colIndex - 1; // Subtract 1 so `LETTERS[columnIndex]` returns \"A\" etc\n if (colIdx <= 25) {\n // A-Z\n colStr = LETTERS[colIdx];\n }\n else {\n // AA-ZZ (ZZ = index 702)\n colStr = `${LETTERS[Math.floor(colIdx / LETTERS.length - 1)]}${LETTERS[colIdx % LETTERS.length]}`;\n }\n return colStr;\n}\n/**\n * Creates `a:innerShdw` or `a:outerShdw` depending on pass options `opts`.\n * @param {Object} opts optional shadow properties\n * @param {Object} defaults defaults for unspecified properties in `opts`\n * @see http://officeopenxml.com/drwSp-effects.php\n * @example { type: 'outer', blur: 3, offset: (23000 / 12700), angle: 90, color: '000000', opacity: 0.35, rotateWithShape: true };\n * @return {string} XML\n */\nfunction createShadowElement(options, defaults) {\n if (!options) {\n return '<a:effectLst/>';\n }\n else if (typeof options !== 'object') {\n console.warn('`shadow` options must be an object. Ex: `{shadow: {type:\\'none\\'}}`');\n return '<a:effectLst/>';\n }\n let strXml = '<a:effectLst>';\n const opts = Object.assign(Object.assign({}, defaults), options);\n const type = opts.type || 'outer';\n const blur = valToPts(opts.blur);\n const offset = valToPts(opts.offset);\n const angle = Math.round(opts.angle * 60000);\n const color = opts.color;\n const opacity = Math.round(opts.opacity * 100000);\n const rotShape = opts.rotateWithShape ? 1 : 0;\n strXml += `<a:${type}Shdw sx=\"100000\" sy=\"100000\" kx=\"0\" ky=\"0\" algn=\"bl\" blurRad=\"${blur}\" rotWithShape=\"${rotShape}\" dist=\"${offset}\" dir=\"${angle}\">`;\n strXml += `<a:srgbClr val=\"${color}\">`;\n strXml += `<a:alpha val=\"${opacity}\"/></a:srgbClr>`;\n strXml += `</a:${type}Shdw>`;\n strXml += '</a:effectLst>';\n return strXml;\n}\n/**\n * Create Grid Line Element\n * @param {OptsChartGridLine} glOpts {size, color, style}\n * @return {string} XML\n */\nfunction createGridLineElement(glOpts) {\n let strXml = '<c:majorGridlines>';\n strXml += ' <c:spPr>';\n strXml += ` <a:ln w=\"${valToPts(glOpts.size || DEF_CHART_GRIDLINE.size)}\" cap=\"${createLineCap(glOpts.cap || DEF_CHART_GRIDLINE.cap)}\">`;\n strXml += ' <a:solidFill><a:srgbClr val=\"' + (glOpts.color || DEF_CHART_GRIDLINE.color) + '\"/></a:solidFill>'; // should accept scheme colors as implemented in [Pull #135]\n strXml += ' <a:prstDash val=\"' + (glOpts.style || DEF_CHART_GRIDLINE.style) + '\"/><a:round/>';\n strXml += ' </a:ln>';\n strXml += ' </c:spPr>';\n strXml += '</c:majorGridlines>';\n return strXml;\n}\nfunction createLineCap(lineCap) {\n if (!lineCap || lineCap === 'flat') {\n return 'flat';\n }\n else if (lineCap === 'square') {\n return 'sq';\n }\n else if (lineCap === 'round') {\n return 'rnd';\n }\n else {\n const neverLineCap = lineCap;\n throw new Error(`Invalid chart line cap: ${neverLineCap}`);\n }\n}\n\n/**\n * PptxGenJS: Media Methods\n */\n/**\n * Encode Image/Audio/Video into base64\n * @param {PresSlide | SlideLayout} layout - slide layout\n * @return {Promise} promise\n */\nfunction encodeSlideMediaRels(layout) {\n var _a, _b;\n // STEP 1: Detect real Node runtime once\n const isNode = typeof process !== 'undefined' && !!((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node) && ((_b = process.release) === null || _b === void 0 ? void 0 : _b.name) === 'node';\n // These will be filled only when we’re in Node\n let fs;\n let https;\n // STEP 2: Lazy-load Node built-ins if needed\n const loadNodeDeps = isNode\n ? () => __awaiter(this, void 0, void 0, function* () {\n ({ default: fs } = yield import('node:fs'));\n ({ default: https } = yield import('node:https'));\n })\n : () => __awaiter(this, void 0, void 0, function* () { });\n // Immediately start it when we know we’re in Node\n if (isNode)\n loadNodeDeps();\n // STEP 3: Prepare promises list\n const imageProms = [];\n // A: Capture all audio/image/video candidates for encoding (filtering online/pre-encoded)\n const candidateRels = layout._relsMedia.filter(rel => rel.type !== 'online' && !rel.data && (!rel.path || (rel.path && !rel.path.includes('preencoded'))));\n // B: PERF: Mark dupes (same `path`) to avoid loading the same media over-and-over!\n const unqPaths = [];\n candidateRels.forEach(rel => {\n if (!unqPaths.includes(rel.path)) {\n rel.isDuplicate = false;\n unqPaths.push(rel.path);\n }\n else {\n rel.isDuplicate = true;\n }\n });\n // STEP 4: Read/Encode each unique media item\n candidateRels\n .filter(rel => !rel.isDuplicate)\n .forEach(rel => {\n imageProms.push((() => __awaiter(this, void 0, void 0, function* () {\n if (!https)\n yield loadNodeDeps();\n // ──────────── NODE LOCAL FILE ────────────\n if (isNode && fs && rel.path.indexOf('http') !== 0) {\n try {\n const bitmap = fs.readFileSync(rel.path);\n rel.data = Buffer.from(bitmap).toString('base64');\n candidateRels\n .filter(dupe => dupe.isDuplicate && dupe.path === rel.path)\n .forEach(dupe => (dupe.data = rel.data));\n return 'done';\n }\n catch (ex) {\n rel.data = IMG_BROKEN;\n candidateRels\n .filter(dupe => dupe.isDuplicate && dupe.path === rel.path)\n .forEach(dupe => (dupe.data = rel.data));\n throw new Error(`ERROR: Unable to read media: \"${rel.path}\"\\n${String(ex)}`);\n }\n }\n // ──────────── NODE HTTP(S) ────────────\n if (isNode && https && rel.path.startsWith('http')) {\n return yield new Promise((resolve, reject) => {\n https.get(rel.path, res => {\n let raw = '';\n res.setEncoding('binary'); // IMPORTANT: Only binary encoding works\n res.on('data', chunk => (raw += chunk));\n res.on('end', () => {\n rel.data = Buffer.from(raw, 'binary').toString('base64');\n candidateRels\n .filter(dupe => dupe.isDuplicate && dupe.path === rel.path)\n .forEach(dupe => (dupe.data = rel.data));\n resolve('done');\n });\n res.on('error', () => {\n rel.data = IMG_BROKEN;\n candidateRels\n .filter(dupe => dupe.isDuplicate && dupe.path === rel.path)\n .forEach(dupe => (dupe.data = rel.data));\n reject(new Error(`ERROR! Unable to load image (https.get): ${rel.path}`));\n });\n });\n });\n }\n // ──────────── BROWSER ────────────\n return yield new Promise((resolve, reject) => {\n // A: build request\n const xhr = new XMLHttpRequest();\n xhr.onload = () => {\n const reader = new FileReader();\n reader.onloadend = () => {\n rel.data = reader.result;\n candidateRels\n .filter(dupe => dupe.isDuplicate && dupe.path === rel.path)\n .forEach(dupe => (dupe.data = rel.data));\n if (!rel.isSvgPng) {\n resolve('done');\n }\n else {\n createSvgPngPreview(rel)\n .then(() => resolve('done'))\n .catch(reject);\n }\n };\n reader.readAsDataURL(xhr.response);\n };\n xhr.onerror = () => {\n rel.data = IMG_BROKEN;\n candidateRels\n .filter(dupe => dupe.isDuplicate && dupe.path === rel.path)\n .forEach(dupe => (dupe.data = rel.data));\n reject(new Error(`ERROR! Unable to load image (xhr.onerror): ${rel.path}`));\n };\n // B: execute request\n xhr.open('GET', rel.path);\n xhr.responseType = 'blob';\n xhr.send();\n });\n }))());\n });\n // STEP 5: SVG-PNG previews\n // ......: \"SVG:\" base64 data still requires a png to be generated\n // ......: (`isSvgPng` flag this as the preview image, not the SVG itself)\n layout._relsMedia\n .filter(rel => rel.isSvgPng && rel.data)\n .forEach(rel => {\n (() => __awaiter(this, void 0, void 0, function* () {\n if (isNode && !fs)\n yield loadNodeDeps();\n if (isNode && fs) {\n // console.log('Sorry, SVG is not supported in Node (more info: https://github.com/gitbrent/PptxGenJS/issues/401)')\n rel.data = IMG_BROKEN;\n imageProms.push(Promise.resolve('done'));\n }\n else {\n imageProms.push(createSvgPngPreview(rel));\n }\n }))();\n });\n return imageProms;\n}\n/**\n * Create SVG preview image\n * @param {ISlideRelMedia} rel - slide rel\n * @return {Promise} promise\n */\nfunction createSvgPngPreview(rel) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield new Promise((resolve, reject) => {\n // A: Create\n const image = new Image();\n // B: Set onload event\n image.onload = () => {\n // First: Check for any errors: This is the best method (try/catch wont work, etc.)\n if (image.width + image.height === 0) {\n image.onerror('h/w=0');\n }\n let canvas = document.createElement('CANVAS');\n const ctx = canvas.getContext('2d');\n canvas.width = image.width;\n canvas.height = image.height;\n ctx.drawImage(image, 0, 0);\n // Users running on local machine will get the following error:\n // \"SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.\"\n // when the canvas.toDataURL call executes below.\n try {\n rel.data = canvas.toDataURL(rel.type);\n resolve('done');\n }\n catch (ex) {\n image.onerror(ex.toString());\n }\n canvas = null;\n };\n image.onerror = () => {\n rel.data = IMG_BROKEN;\n reject(new Error(`ERROR! Unable to load image (image.onerror): ${rel.path}`));\n };\n // C: Load image\n image.src = typeof rel.data === 'string' ? rel.data : IMG_BROKEN;\n });\n });\n}\n/**\n * FIXME: TODO: currently unused\n * TODO: Should return a Promise\n */\n/*\nfunction getSizeFromImage (inImgUrl: string): { width: number, height: number } {\n const sizeOf = typeof require !== 'undefined' ? require('sizeof') : null // NodeJS\n\n if (sizeOf) {\n try {\n const dimensions = sizeOf(inImgUrl)\n return { width: dimensions.width, height: dimensions.height }\n } catch (ex) {\n console.error('ERROR: sizeOf: Unable to load image: ' + inImgUrl)\n return { width: 0, height: 0 }\n }\n } else if (Image && typeof Image === 'function') {\n // A: Create\n const image = new Image()\n\n // B: Set onload event\n image.onload = () => {\n // FIRST: Check for any errors: This is the best method (try/catch wont work, etc.)\n if (image.width + image.height === 0) {\n return { width: 0, height: 0 }\n }\n const obj = { width: image.width, height: image.height }\n return obj\n }\n image.onerror = () => {\n console.error(`ERROR: image.onload: Unable to load image: ${inImgUrl}`)\n }\n\n // C: Load image\n image.src = inImgUrl\n }\n}\n*/\n\n/**\n * PptxGenJS: XML Generation\n */\nconst ImageSizingXml = {\n cover: function (imgSize, boxDim) {\n const imgRatio = imgSize.h / imgSize.w;\n const boxRatio = boxDim.h / boxDim.w;\n const isBoxBased = boxRatio > imgRatio;\n const width = isBoxBased ? boxDim.h / imgRatio : boxDim.w;\n const height = isBoxBased ? boxDim.h : boxDim.w * imgRatio;\n const hzPerc = Math.round(1e5 * 0.5 * (1 - boxDim.w / width));\n const vzPerc = Math.round(1e5 * 0.5 * (1 - boxDim.h / height));\n return `<a:srcRect l=\"${hzPerc}\" r=\"${hzPerc}\" t=\"${vzPerc}\" b=\"${vzPerc}\"/><a:stretch/>`;\n },\n contain: function (imgSize, boxDim) {\n const imgRatio = imgSize.h / imgSize.w;\n const boxRatio = boxDim.h / boxDim.w;\n const widthBased = boxRatio > imgRatio;\n const width = widthBased ? boxDim.w : boxDim.h / imgRatio;\n const height = widthBased ? boxDim.w * imgRatio : boxDim.h;\n const hzPerc = Math.round(1e5 * 0.5 * (1 - boxDim.w / width));\n const vzPerc = Math.round(1e5 * 0.5 * (1 - boxDim.h / height));\n return `<a:srcRect l=\"${hzPerc}\" r=\"${hzPerc}\" t=\"${vzPerc}\" b=\"${vzPerc}\"/><a:stretch/>`;\n },\n crop: function (imgSize, boxDim) {\n const l = boxDim.x;\n const r = imgSize.w - (boxDim.x + boxDim.w);\n const t = boxDim.y;\n const b = imgSize.h - (boxDim.y + boxDim.h);\n const lPerc = Math.round(1e5 * (l / imgSize.w));\n const rPerc = Math.round(1e5 * (r / imgSize.w));\n const tPerc = Math.round(1e5 * (t / imgSize.h));\n const bPerc = Math.round(1e5 * (b / imgSize.h));\n return `<a:srcRect l=\"${lPerc}\" r=\"${rPerc}\" t=\"${tPerc}\" b=\"${bPerc}\"/><a:stretch/>`;\n },\n};\n/**\n * Transforms a slide or slideLayout to resulting XML string - Creates `ppt/slide*.xml`\n * @param {PresSlide|SlideLayout} slideObject - slide object created within createSlideObject\n * @return {string} XML string with <p:cSld> as the root\n */\nfunction slideObjectToXml(slide) {\n var _a;\n let strSlideXml = slide._name ? '<p:cSld name=\"' + slide._name + '\">' : '<p:cSld>';\n let intTableNum = 1;\n // STEP 1: Add background color/image (ensure only a single `<p:bg>` tag is created, ex: when master-baskground has both `color` and `path`)\n if (slide._bkgdImgRid) {\n strSlideXml += `<p:bg><p:bgPr><a:blipFill dpi=\"0\" rotWithShape=\"1\"><a:blip r:embed=\"rId${slide._bkgdImgRid}\"><a:lum/></a:blip><a:srcRect/><a:stretch><a:fillRect/></a:stretch></a:blipFill><a:effectLst/></p:bgPr></p:bg>`;\n }\n else if ((_a = slide.background) === null || _a === void 0 ? void 0 : _a.color) {\n strSlideXml += `<p:bg><p:bgPr>${genXmlColorSelection(slide.background)}</p:bgPr></p:bg>`;\n }\n else if (!slide.bkgd && slide._name && slide._name === DEF_PRES_LAYOUT_NAME) {\n // NOTE: Default [white] background is needed on slideMaster1.xml to avoid gray background in Keynote (and Finder previews)\n strSlideXml += '<p:bg><p:bgRef idx=\"1001\"><a:schemeClr val=\"bg1\"/></p:bgRef></p:bg>';\n }\n // STEP 2: Continue slide by starting spTree node\n strSlideXml += '<p:spTree>';\n strSlideXml += '<p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr>';\n strSlideXml += '<p:grpSpPr><a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"0\" cy=\"0\"/>';\n strSlideXml += '<a:chOff x=\"0\" y=\"0\"/><a:chExt cx=\"0\" cy=\"0\"/></a:xfrm></p:grpSpPr>';\n // STEP 3: Loop over all Slide.data objects and add them to this slide\n slide._slideObjects.forEach((slideItemObj, idx) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n let x = 0;\n let y = 0;\n let cx = getSmartParseNumber('75%', 'X', slide._presLayout);\n let cy = 0;\n let placeholderObj;\n let locationAttr = '';\n let arrTabRows = null;\n let objTabOpts = null;\n let intColCnt = 0;\n let intColW = 0;\n let cellOpts = null;\n let strXml = null;\n const sizing = (_a = slideItemObj.options) === null || _a === void 0 ? void 0 : _a.sizing;\n const rounding = (_b = slideItemObj.options) === null || _b === void 0 ? void 0 : _b.rounding;\n if (slide._slideLayout !== undefined &&\n slide._slideLayout._slideObjects !== undefined &&\n slideItemObj.options &&\n slideItemObj.options.placeholder) {\n placeholderObj = slide._slideLayout._slideObjects.filter((object) => object.options.placeholder === slideItemObj.options.placeholder)[0];\n }\n // A: Set option vars\n slideItemObj.options = slideItemObj.options || {};\n if (typeof slideItemObj.options.x !== 'undefined')\n x = getSmartParseNumber(slideItemObj.options.x, 'X', slide._presLayout);\n if (typeof slideItemObj.options.y !== 'undefined')\n y = getSmartParseNumber(slideItemObj.options.y, 'Y', slide._presLayout);\n if (typeof slideItemObj.options.w !== 'undefined')\n cx = getSmartParseNumber(slideItemObj.options.w, 'X', slide._presLayout);\n if (typeof slideItemObj.options.h !== 'undefined')\n cy = getSmartParseNumber(slideItemObj.options.h, 'Y', slide._presLayout);\n // Set w/h now that smart parse is done\n let imgWidth = cx;\n let imgHeight = cy;\n // If using a placeholder then inherit it's position\n if (placeholderObj) {\n if (placeholderObj.options.x || placeholderObj.options.x === 0)\n x = getSmartParseNumber(placeholderObj.options.x, 'X', slide._presLayout);\n if (placeholderObj.options.y || placeholderObj.options.y === 0)\n y = getSmartParseNumber(placeholderObj.options.y, 'Y', slide._presLayout);\n if (placeholderObj.options.w || placeholderObj.options.w === 0)\n cx = getSmartParseNumber(placeholderObj.options.w, 'X', slide._presLayout);\n if (placeholderObj.options.h || placeholderObj.options.h === 0)\n cy = getSmartParseNumber(placeholderObj.options.h, 'Y', slide._presLayout);\n }\n //\n if (slideItemObj.options.flipH)\n locationAttr += ' flipH=\"1\"';\n if (slideItemObj.options.flipV)\n locationAttr += ' flipV=\"1\"';\n if (slideItemObj.options.rotate)\n locationAttr += ` rot=\"${convertRotationDegrees(slideItemObj.options.rotate)}\"`;\n // B: Add OBJECT to the current Slide\n switch (slideItemObj._type) {\n case SLIDE_OBJECT_TYPES.table:\n arrTabRows = slideItemObj.arrTabRows;\n objTabOpts = slideItemObj.options;\n intColCnt = 0;\n intColW = 0;\n // Calc number of columns\n // NOTE: Cells may have a colspan, so merely taking the length of the [0] (or any other) row is not\n // ....: sufficient to determine column count. Therefore, check each cell for a colspan and total cols as reqd\n arrTabRows[0].forEach(cell => {\n cellOpts = cell.options || null;\n intColCnt += (cellOpts === null || cellOpts === void 0 ? void 0 : cellOpts.colspan) ? Number(cellOpts.colspan) : 1;\n });\n // STEP 1: Start Table XML\n // NOTE: Non-numeric cNvPr id values will trigger \"presentation needs repair\" type warning in MS-PPT-2013\n strXml = `<p:graphicFrame><p:nvGraphicFramePr><p:cNvPr id=\"${intTableNum * slide._slideNum + 1}\" name=\"${slideItemObj.options.objectName}\"/>`;\n strXml +=\n '<p:cNvGraphicFramePr><a:graphicFrameLocks noGrp=\"1\"/></p:cNvGraphicFramePr>' +\n ' <p:nvPr><p:extLst><p:ext uri=\"{D42A27DB-BD31-4B8C-83A1-F6EECF244321}\"><p14:modId xmlns:p14=\"http://schemas.microsoft.com/office/powerpoint/2010/main\" val=\"1579011935\"/></p:ext></p:extLst></p:nvPr>' +\n '</p:nvGraphicFramePr>';\n strXml += `<p:xfrm><a:off x=\"${x || (x === 0 ? 0 : EMU)}\" y=\"${y || (y === 0 ? 0 : EMU)}\"/><a:ext cx=\"${cx || (cx === 0 ? 0 : EMU)}\" cy=\"${cy || EMU}\"/></p:xfrm>`;\n strXml += '<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/table\"><a:tbl><a:tblPr/>';\n // + ' <a:tblPr bandRow=\"1\"/>';\n // TODO: Support banded rows, first/last row, etc.\n // NOTE: Banding, etc. only shows when using a table style! (or set alt row color if banding)\n // <a:tblPr firstCol=\"0\" firstRow=\"0\" lastCol=\"0\" lastRow=\"0\" bandCol=\"0\" bandRow=\"1\">\n // STEP 2: Set column widths\n // Evenly distribute cols/rows across size provided when applicable (calc them if only overall dimensions were provided)\n // A: Col widths provided?\n // B: Table Width provided without colW? Then distribute cols\n if (Array.isArray(objTabOpts.colW)) {\n strXml += '<a:tblGrid>';\n for (let col = 0; col < intColCnt; col++) {\n let w = inch2Emu(objTabOpts.colW[col]);\n if (w == null || isNaN(w)) {\n w = (typeof slideItemObj.options.w === 'number' ? slideItemObj.options.w : 1) / intColCnt;\n }\n strXml += `<a:gridCol w=\"${Math.round(w)}\"/>`;\n }\n strXml += '</a:tblGrid>';\n }\n else {\n intColW = objTabOpts.colW ? objTabOpts.colW : EMU;\n if (slideItemObj.options.w && !objTabOpts.colW)\n intColW = Math.round((typeof slideItemObj.options.w === 'number' ? slideItemObj.options.w : 1) / intColCnt);\n strXml += '<a:tblGrid>';\n for (let colw = 0; colw < intColCnt; colw++) {\n strXml += `<a:gridCol w=\"${intColW}\"/>`;\n }\n strXml += '</a:tblGrid>';\n }\n // STEP 3: Build our row arrays into an actual grid to match the XML we will be building next (ISSUE #36)\n // Note row arrays can arrive \"lopsided\" as in row1:[1,2,3] row2:[3] when first two cols rowspan!,\n // so a simple loop below in XML building wont suffice to build table correctly.\n // We have to build an actual grid now\n /*\n EX: (A0:rowspan=3, B1:rowspan=2, C1:colspan=2)\n\n /------|------|------|------\\\n | A0 | B0 | C0 | D0 |\n | | B1 | C1 | |\n | | | C2 | D2 |\n \\------|------|------|------/\n */\n // A: add _hmerge cell for colspan. should reserve rowspan\n arrTabRows.forEach(cells => {\n var _a, _b;\n for (let cIdx = 0; cIdx < cells.length;) {\n const cell = cells[cIdx];\n const colspan = (_a = cell.options) === null || _a === void 0 ? void 0 : _a.colspan;\n const rowspan = (_b = cell.options) === null || _b === void 0 ? void 0 : _b.rowspan;\n if (colspan && colspan > 1) {\n const vMergeCells = new Array(colspan - 1).fill(undefined).map(() => {\n return { _type: SLIDE_OBJECT_TYPES.tablecell, options: { rowspan }, _hmerge: true };\n });\n cells.splice(cIdx + 1, 0, ...vMergeCells);\n cIdx += colspan;\n }\n else {\n cIdx += 1;\n }\n }\n });\n // B: add _vmerge cell for rowspan. should reserve colspan/_hmerge\n arrTabRows.forEach((cells, rIdx) => {\n const nextRow = arrTabRows[rIdx + 1];\n if (!nextRow)\n return;\n cells.forEach((cell, cIdx) => {\n var _a, _b;\n const rowspan = cell._rowContinue || ((_a = cell.options) === null || _a === void 0 ? void 0 : _a.rowspan);\n const colspan = (_b = cell.options) === null || _b === void 0 ? void 0 : _b.colspan;\n const _hmerge = cell._hmerge;\n if (rowspan && rowspan > 1) {\n const hMergeCell = { _type: SLIDE_OBJECT_TYPES.tablecell, options: { colspan }, _rowContinue: rowspan - 1, _vmerge: true, _hmerge };\n nextRow.splice(cIdx, 0, hMergeCell);\n }\n });\n });\n // STEP 4: Build table rows/cells\n arrTabRows.forEach((cells, rIdx) => {\n // A: Table Height provided without rowH? Then distribute rows\n let intRowH = 0; // IMPORTANT: Default must be zero for auto-sizing to work\n if (Array.isArray(objTabOpts.rowH) && objTabOpts.rowH[rIdx])\n intRowH = inch2Emu(Number(objTabOpts.rowH[rIdx]));\n else if (objTabOpts.rowH && !isNaN(Number(objTabOpts.rowH)))\n intRowH = inch2Emu(Number(objTabOpts.rowH));\n else if (slideItemObj.options.cy || slideItemObj.options.h) {\n intRowH = Math.round((slideItemObj.options.h ? inch2Emu(slideItemObj.options.h) : typeof slideItemObj.options.cy === 'number' ? slideItemObj.options.cy : 1) /\n arrTabRows.length);\n }\n // B: Start row\n strXml += `<a:tr h=\"${intRowH}\">`;\n // C: Loop over each CELL\n cells.forEach(cellObj => {\n var _a, _b, _c, _d, _e;\n const cell = cellObj;\n const cellSpanAttrs = {\n rowSpan: ((_a = cell.options) === null || _a === void 0 ? void 0 : _a.rowspan) > 1 ? cell.options.rowspan : undefined,\n gridSpan: ((_b = cell.options) === null || _b === void 0 ? void 0 : _b.colspan) > 1 ? cell.options.colspan : undefined,\n vMerge: cell._vmerge ? 1 : undefined,\n hMerge: cell._hmerge ? 1 : undefined,\n };\n let cellSpanAttrStr = Object.keys(cellSpanAttrs)\n .map(k => [k, cellSpanAttrs[k]])\n .filter(([, v]) => !!v)\n .map(([k, v]) => `${String(k)}=\"${String(v)}\"`)\n .join(' ');\n if (cellSpanAttrStr)\n cellSpanAttrStr = ' ' + cellSpanAttrStr;\n // 1: COLSPAN/ROWSPAN: Add dummy cells for any active colspan/rowspan\n if (cell._hmerge || cell._vmerge) {\n strXml += `<a:tc${cellSpanAttrStr}><a:tcPr/></a:tc>`;\n return;\n }\n // 2: OPTIONS: Build/set cell options\n const cellOpts = cell.options || {};\n cell.options = cellOpts;\n ['align', 'bold', 'border', 'color', 'fill', 'fontFace', 'fontSize', 'margin', 'textDirection', 'underline', 'valign'].forEach(name => {\n if (objTabOpts[name] && !cellOpts[name] && cellOpts[name] !== 0)\n cellOpts[name] = objTabOpts[name];\n });\n const cellValign = cellOpts.valign\n ? ` anchor=\"${cellOpts.valign.replace(/^c$/i, 'ctr').replace(/^m$/i, 'ctr').replace('center', 'ctr').replace('middle', 'ctr').replace('top', 't').replace('btm', 'b').replace('bottom', 'b')}\"`\n : '';\n const cellTextDir = (cellOpts.textDirection && cellOpts.textDirection !== 'horz') ? ` vert=\"${cellOpts.textDirection}\"` : '';\n let fillColor = ((_d = (_c = cell._optImp) === null || _c === void 0 ? void 0 : _c.fill) === null || _d === void 0 ? void 0 : _d.color)\n ? cell._optImp.fill.color\n : ((_e = cell._optImp) === null || _e === void 0 ? void 0 : _e.fill) && typeof cell._optImp.fill === 'string'\n ? cell._optImp.fill\n : '';\n fillColor = fillColor || cellOpts.fill ? cellOpts.fill : '';\n const cellFill = fillColor ? genXmlColorSelection(fillColor) : '';\n let cellMargin = cellOpts.margin === 0 || cellOpts.margin ? cellOpts.margin : DEF_CELL_MARGIN_IN;\n if (!Array.isArray(cellMargin) && typeof cellMargin === 'number')\n cellMargin = [cellMargin, cellMargin, cellMargin, cellMargin];\n /** FUTURE: DEPRECATED:\n * - Backwards-Compat: Oops! Discovered we were still using points for cell margin before v3.8.0 (UGH!)\n * - We cant introduce a breaking change before v4.0, so...\n */\n let cellMarginXml = '';\n if (cellMargin[0] >= 1) {\n cellMarginXml = ` marL=\"${valToPts(cellMargin[3])}\" marR=\"${valToPts(cellMargin[1])}\" marT=\"${valToPts(cellMargin[0])}\" marB=\"${valToPts(cellMargin[2])}\"`;\n }\n else {\n cellMarginXml = ` marL=\"${inch2Emu(cellMargin[3])}\" marR=\"${inch2Emu(cellMargin[1])}\" marT=\"${inch2Emu(cellMargin[0])}\" marB=\"${inch2Emu(cellMargin[2])}\"`;\n }\n // FUTURE: Cell NOWRAP property (textwrap: add to a:tcPr (horzOverflow=\"overflow\" or whatever options exist)\n // 4: Set CELL content and properties ==================================\n strXml += `<a:tc${cellSpanAttrStr}>${genXmlTextBody(cell)}<a:tcPr${cellMarginXml}${cellValign}${cellTextDir}>`;\n // strXml += `<a:tc${cellColspan}${cellRowspan}>${genXmlTextBody(cell)}<a:tcPr${cellMarginXml}${cellValign}${cellTextDir}>`\n // FIXME: 20200525: ^^^\n // <a:tcPr marL=\"38100\" marR=\"38100\" marT=\"38100\" marB=\"38100\" vert=\"vert270\">\n // 5: Borders: Add any borders\n if (cellOpts.border && Array.isArray(cellOpts.border)) {\n // NOTE: *** IMPORTANT! *** LRTB order matters! (Reorder a line below to watch the borders go wonky in MS-PPT-2013!!)\n [\n { idx: 3, name: 'lnL' },\n { idx: 1, name: 'lnR' },\n { idx: 0, name: 'lnT' },\n { idx: 2, name: 'lnB' },\n ].forEach(obj => {\n if (cellOpts.border[obj.idx].type !== 'none') {\n strXml += `<a:${obj.name} w=\"${valToPts(cellOpts.border[obj.idx].pt)}\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\">`;\n strXml += `<a:solidFill>${createColorElement(cellOpts.border[obj.idx].color)}</a:solidFill>`;\n strXml += `<a:prstDash val=\"${cellOpts.border[obj.idx].type === 'dash' ? 'sysDash' : 'solid'}\"/><a:round/><a:headEnd type=\"none\" w=\"med\" len=\"med\"/><a:tailEnd type=\"none\" w=\"med\" len=\"med\"/>`;\n strXml += `</a:${obj.name}>`;\n }\n else {\n strXml += `<a:${obj.name} w=\"0\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:noFill/></a:${obj.name}>`;\n }\n });\n }\n // 6: Close cell Properties & Cell\n strXml += cellFill;\n strXml += ' </a:tcPr>';\n strXml += ' </a:tc>';\n });\n // D: Complete row\n strXml += '</a:tr>';\n });\n // STEP 5: Complete table\n strXml += ' </a:tbl>';\n strXml += ' </a:graphicData>';\n strXml += ' </a:graphic>';\n strXml += '</p:graphicFrame>';\n // STEP 6: Set table XML\n strSlideXml += strXml;\n // LAST: Increment counter\n intTableNum++;\n break;\n case SLIDE_OBJECT_TYPES.text:\n case SLIDE_OBJECT_TYPES.placeholder:\n // Lines can have zero cy, but text should not\n if (!slideItemObj.options.line && cy === 0)\n cy = EMU * 0.3;\n // Margin/Padding/Inset for textboxes\n if (!slideItemObj.options._bodyProp)\n slideItemObj.options._bodyProp = {};\n if (slideItemObj.options.margin && Array.isArray(slideItemObj.options.margin)) {\n slideItemObj.options._bodyProp.lIns = valToPts(slideItemObj.options.margin[0] || 0);\n slideItemObj.options._bodyProp.rIns = valToPts(slideItemObj.options.margin[1] || 0);\n slideItemObj.options._bodyProp.bIns = valToPts(slideItemObj.options.margin[2] || 0);\n slideItemObj.options._bodyProp.tIns = valToPts(slideItemObj.options.margin[3] || 0);\n }\n else if (typeof slideItemObj.options.margin === 'number') {\n slideItemObj.options._bodyProp.lIns = valToPts(slideItemObj.options.margin);\n slideItemObj.options._bodyProp.rIns = valToPts(slideItemObj.options.margin);\n slideItemObj.options._bodyProp.bIns = valToPts(slideItemObj.options.margin);\n slideItemObj.options._bodyProp.tIns = valToPts(slideItemObj.options.margin);\n }\n // A: Start SHAPE =======================================================\n strSlideXml += '<p:sp>';\n // B: The addition of the \"txBox\" attribute is the sole determiner of if an object is a shape or textbox\n strSlideXml += `<p:nvSpPr><p:cNvPr id=\"${idx + 2}\" name=\"${slideItemObj.options.objectName}\">`;\n // <Hyperlink>\n if ((_c = slideItemObj.options.hyperlink) === null || _c === void 0 ? void 0 : _c.url) {\n strSlideXml += `<a:hlinkClick r:id=\"rId${slideItemObj.options.hyperlink._rId}\" tooltip=\"${slideItemObj.options.hyperlink.tooltip ? encodeXmlEntities(slideItemObj.options.hyperlink.tooltip) : ''}\"/>`;\n }\n if ((_d = slideItemObj.options.hyperlink) === null || _d === void 0 ? void 0 : _d.slide) {\n strSlideXml += `<a:hlinkClick r:id=\"rId${slideItemObj.options.hyperlink._rId}\" tooltip=\"${slideItemObj.options.hyperlink.tooltip ? encodeXmlEntities(slideItemObj.options.hyperlink.tooltip) : ''}\" action=\"ppaction://hlinksldjump\"/>`;\n }\n // </Hyperlink>\n strSlideXml += '</p:cNvPr>';\n strSlideXml += '<p:cNvSpPr' + (((_e = slideItemObj.options) === null || _e === void 0 ? void 0 : _e.isTextBox) ? ' txBox=\"1\"/>' : '/>');\n strSlideXml += `<p:nvPr>${slideItemObj._type === 'placeholder' ? genXmlPlaceholder(slideItemObj) : genXmlPlaceholder(placeholderObj)}</p:nvPr>`;\n strSlideXml += '</p:nvSpPr><p:spPr>';\n strSlideXml += `<a:xfrm${locationAttr}>`;\n strSlideXml += `<a:off x=\"${x}\" y=\"${y}\"/>`;\n strSlideXml += `<a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm>`;\n if (slideItemObj.shape === 'custGeom') {\n strSlideXml += '<a:custGeom><a:avLst />';\n strSlideXml += '<a:gdLst>';\n strSlideXml += '</a:gdLst>';\n strSlideXml += '<a:ahLst />';\n strSlideXml += '<a:cxnLst>';\n strSlideXml += '</a:cxnLst>';\n strSlideXml += '<a:rect l=\"l\" t=\"t\" r=\"r\" b=\"b\" />';\n strSlideXml += '<a:pathLst>';\n strSlideXml += `<a:path w=\"${cx}\" h=\"${cy}\">`;\n (_f = slideItemObj.options.points) === null || _f === void 0 ? void 0 : _f.forEach((point, i) => {\n if ('curve' in point) {\n switch (point.curve.type) {\n case 'arc':\n strSlideXml += `<a:arcTo hR=\"${getSmartParseNumber(point.curve.hR, 'Y', slide._presLayout)}\" wR=\"${getSmartParseNumber(point.curve.wR, 'X', slide._presLayout)}\" stAng=\"${convertRotationDegrees(point.curve.stAng)}\" swAng=\"${convertRotationDegrees(point.curve.swAng)}\" />`;\n break;\n case 'cubic':\n strSlideXml += `<a:cubicBezTo>\n\t\t\t\t\t\t\t\t\t<a:pt x=\"${getSmartParseNumber(point.curve.x1, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(point.curve.y1, 'Y', slide._presLayout)}\" />\n\t\t\t\t\t\t\t\t\t<a:pt x=\"${getSmartParseNumber(point.curve.x2, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(point.curve.y2, 'Y', slide._presLayout)}\" />\n\t\t\t\t\t\t\t\t\t<a:pt x=\"${getSmartParseNumber(point.x, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(point.y, 'Y', slide._presLayout)}\" />\n\t\t\t\t\t\t\t\t\t</a:cubicBezTo>`;\n break;\n case 'quadratic':\n strSlideXml += `<a:quadBezTo>\n\t\t\t\t\t\t\t\t\t<a:pt x=\"${getSmartParseNumber(point.curve.x1, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(point.curve.y1, 'Y', slide._presLayout)}\" />\n\t\t\t\t\t\t\t\t\t<a:pt x=\"${getSmartParseNumber(point.x, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(point.y, 'Y', slide._presLayout)}\" />\n\t\t\t\t\t\t\t\t\t</a:quadBezTo>`;\n break;\n }\n }\n else if ('close' in point) {\n strSlideXml += '<a:close />';\n }\n else if (point.moveTo || i === 0) {\n strSlideXml += `<a:moveTo><a:pt x=\"${getSmartParseNumber(point.x, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(point.y, 'Y', slide._presLayout)}\" /></a:moveTo>`;\n }\n else {\n strSlideXml += `<a:lnTo><a:pt x=\"${getSmartParseNumber(point.x, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(point.y, 'Y', slide._presLayout)}\" /></a:lnTo>`;\n }\n });\n strSlideXml += '</a:path>';\n strSlideXml += '</a:pathLst>';\n strSlideXml += '</a:custGeom>';\n }\n else {\n strSlideXml += '<a:prstGeom prst=\"' + slideItemObj.shape + '\"><a:avLst>';\n if (slideItemObj.options.rectRadius) {\n strSlideXml += `<a:gd name=\"adj\" fmla=\"val ${Math.round((slideItemObj.options.rectRadius * EMU * 100000) / Math.min(cx, cy))}\"/>`;\n }\n else if (slideItemObj.options.angleRange) {\n for (let i = 0; i < 2; i++) {\n const angle = slideItemObj.options.angleRange[i];\n strSlideXml += `<a:gd name=\"adj${i + 1}\" fmla=\"val ${convertRotationDegrees(angle)}\" />`;\n }\n if (slideItemObj.options.arcThicknessRatio) {\n strSlideXml += `<a:gd name=\"adj3\" fmla=\"val ${Math.round(slideItemObj.options.arcThicknessRatio * 50000)}\" />`;\n }\n }\n strSlideXml += '</a:avLst></a:prstGeom>';\n }\n // Option: FILL\n strSlideXml += slideItemObj.options.fill ? genXmlColorSelection(slideItemObj.options.fill) : '<a:noFill/>';\n // shape Type: LINE: line color\n if (slideItemObj.options.line) {\n strSlideXml += slideItemObj.options.line.width ? `<a:ln w=\"${valToPts(slideItemObj.options.line.width)}\">` : '<a:ln>';\n if (slideItemObj.options.line.color)\n strSlideXml += genXmlColorSelection(slideItemObj.options.line);\n if (slideItemObj.options.line.dashType)\n strSlideXml += `<a:prstDash val=\"${slideItemObj.options.line.dashType}\"/>`;\n if (slideItemObj.options.line.beginArrowType)\n strSlideXml += `<a:headEnd type=\"${slideItemObj.options.line.beginArrowType}\"/>`;\n if (slideItemObj.options.line.endArrowType)\n strSlideXml += `<a:tailEnd type=\"${slideItemObj.options.line.endArrowType}\"/>`;\n // FUTURE: `endArrowSize` < a: headEnd type = \"arrow\" w = \"lg\" len = \"lg\" /> 'sm' | 'med' | 'lg'(values are 1 - 9, making a 3x3 grid of w / len possibilities)\n strSlideXml += '</a:ln>';\n }\n // EFFECTS > SHADOW: REF: @see http://officeopenxml.com/drwSp-effects.php\n if (slideItemObj.options.shadow && slideItemObj.options.shadow.type !== 'none') {\n slideItemObj.options.shadow.type = slideItemObj.options.shadow.type || 'outer';\n slideItemObj.options.shadow.blur = valToPts(slideItemObj.options.shadow.blur || 8);\n slideItemObj.options.shadow.offset = valToPts(slideItemObj.options.shadow.offset || 4);\n slideItemObj.options.shadow.angle = Math.round((slideItemObj.options.shadow.angle || 270) * 60000);\n slideItemObj.options.shadow.opacity = Math.round((slideItemObj.options.shadow.opacity || 0.75) * 100000);\n slideItemObj.options.shadow.color = slideItemObj.options.shadow.color || DEF_TEXT_SHADOW.color;\n strSlideXml += '<a:effectLst>';\n strSlideXml += ` <a:${slideItemObj.options.shadow.type}Shdw ${slideItemObj.options.shadow.type === 'outer' ? 'sx=\"100000\" sy=\"100000\" kx=\"0\" ky=\"0\" algn=\"bl\" rotWithShape=\"0\"' : ''} blurRad=\"${slideItemObj.options.shadow.blur}\" dist=\"${slideItemObj.options.shadow.offset}\" dir=\"${slideItemObj.options.shadow.angle}\">`;\n strSlideXml += ` <a:srgbClr val=\"${slideItemObj.options.shadow.color}\">`;\n strSlideXml += ` <a:alpha val=\"${slideItemObj.options.shadow.opacity}\"/></a:srgbClr>`;\n strSlideXml += ' </a:outerShdw>';\n strSlideXml += '</a:effectLst>';\n }\n /* TODO: FUTURE: Text wrapping (copied from MS-PPTX export)\n // Commented out b/c i'm not even sure this works - current code produces text that wraps in shapes and textboxes, so...\n if ( slideItemObj.options.textWrap ) {\n strSlideXml += '<a:extLst>'\n + '<a:ext uri=\"{C572A759-6A51-4108-AA02-DFA0A04FC94B}\">'\n + '<ma14:wrappingTextBoxFlag xmlns:ma14=\"http://schemas.microsoft.com/office/mac/drawingml/2011/main\" val=\"1\"/>'\n + '</a:ext>'\n + '</a:extLst>';\n }\n */\n // B: Close shape Properties\n strSlideXml += '</p:spPr>';\n // C: Add formatted text (text body \"bodyPr\")\n strSlideXml += genXmlTextBody(slideItemObj);\n // LAST: Close SHAPE =======================================================\n strSlideXml += '</p:sp>';\n break;\n case SLIDE_OBJECT_TYPES.image:\n strSlideXml += '<p:pic>';\n strSlideXml += ' <p:nvPicPr>';\n strSlideXml += `<p:cNvPr id=\"${idx + 2}\" name=\"${slideItemObj.options.objectName}\" descr=\"${encodeXmlEntities(slideItemObj.options.altText || slideItemObj.image)}\">`;\n if ((_g = slideItemObj.hyperlink) === null || _g === void 0 ? void 0 : _g.url) {\n strSlideXml += `<a:hlinkClick r:id=\"rId${slideItemObj.hyperlink._rId}\" tooltip=\"${slideItemObj.hyperlink.tooltip ? encodeXmlEntities(slideItemObj.hyperlink.tooltip) : ''}\"/>`;\n }\n if ((_h = slideItemObj.hyperlink) === null || _h === void 0 ? void 0 : _h.slide) {\n strSlideXml += `<a:hlinkClick r:id=\"rId${slideItemObj.hyperlink._rId}\" tooltip=\"${slideItemObj.hyperlink.tooltip ? encodeXmlEntities(slideItemObj.hyperlink.tooltip) : ''}\" action=\"ppaction://hlinksldjump\"/>`;\n }\n strSlideXml += ' </p:cNvPr>';\n strSlideXml += ' <p:cNvPicPr><a:picLocks noChangeAspect=\"1\"/></p:cNvPicPr>';\n strSlideXml += ' <p:nvPr>' + genXmlPlaceholder(placeholderObj) + '</p:nvPr>';\n strSlideXml += ' </p:nvPicPr>';\n strSlideXml += '<p:blipFill>';\n // NOTE: This works for both cases: either `path` or `data` contains the SVG\n if ((slide._relsMedia || []).filter(rel => rel.rId === slideItemObj.imageRid)[0] &&\n (slide._relsMedia || []).filter(rel => rel.rId === slideItemObj.imageRid)[0].extn === 'svg') {\n strSlideXml += `<a:blip r:embed=\"rId${slideItemObj.imageRid - 1}\">`;\n strSlideXml += slideItemObj.options.transparency ? ` <a:alphaModFix amt=\"${Math.round((100 - slideItemObj.options.transparency) * 1000)}\"/>` : '';\n strSlideXml += ' <a:extLst>';\n strSlideXml += ' <a:ext uri=\"{96DAC541-7B7A-43D3-8B79-37D633B846F1}\">';\n strSlideXml += ` <asvg:svgBlip xmlns:asvg=\"http://schemas.microsoft.com/office/drawing/2016/SVG/main\" r:embed=\"rId${slideItemObj.imageRid}\"/>`;\n strSlideXml += ' </a:ext>';\n strSlideXml += ' </a:extLst>';\n strSlideXml += '</a:blip>';\n }\n else {\n strSlideXml += `<a:blip r:embed=\"rId${slideItemObj.imageRid}\">`;\n strSlideXml += slideItemObj.options.transparency ? `<a:alphaModFix amt=\"${Math.round((100 - slideItemObj.options.transparency) * 1000)}\"/>` : '';\n strSlideXml += '</a:blip>';\n }\n if (sizing === null || sizing === void 0 ? void 0 : sizing.type) {\n const boxW = sizing.w ? getSmartParseNumber(sizing.w, 'X', slide._presLayout) : cx;\n const boxH = sizing.h ? getSmartParseNumber(sizing.h, 'Y', slide._presLayout) : cy;\n const boxX = getSmartParseNumber(sizing.x || 0, 'X', slide._presLayout);\n const boxY = getSmartParseNumber(sizing.y || 0, 'Y', slide._presLayout);\n strSlideXml += ImageSizingXml[sizing.type]({ w: imgWidth, h: imgHeight }, { w: boxW, h: boxH, x: boxX, y: boxY });\n imgWidth = boxW;\n imgHeight = boxH;\n }\n else {\n strSlideXml += ' <a:stretch><a:fillRect/></a:stretch>';\n }\n strSlideXml += '</p:blipFill>';\n strSlideXml += '<p:spPr>';\n strSlideXml += ' <a:xfrm' + locationAttr + '>';\n strSlideXml += ` <a:off x=\"${x}\" y=\"${y}\"/>`;\n strSlideXml += ` <a:ext cx=\"${imgWidth}\" cy=\"${imgHeight}\"/>`;\n strSlideXml += ' </a:xfrm>';\n strSlideXml += ` <a:prstGeom prst=\"${rounding ? 'ellipse' : 'rect'}\"><a:avLst/></a:prstGeom>`;\n // EFFECTS > SHADOW: REF: @see http://officeopenxml.com/drwSp-effects.php\n if (slideItemObj.options.shadow && slideItemObj.options.shadow.type !== 'none') {\n slideItemObj.options.shadow.type = slideItemObj.options.shadow.type || 'outer';\n slideItemObj.options.shadow.blur = valToPts(slideItemObj.options.shadow.blur || 8);\n slideItemObj.options.shadow.offset = valToPts(slideItemObj.options.shadow.offset || 4);\n slideItemObj.options.shadow.angle = Math.round((slideItemObj.options.shadow.angle || 270) * 60000);\n slideItemObj.options.shadow.opacity = Math.round((slideItemObj.options.shadow.opacity || 0.75) * 100000);\n slideItemObj.options.shadow.color = slideItemObj.options.shadow.color || DEF_TEXT_SHADOW.color;\n strSlideXml += '<a:effectLst>';\n strSlideXml += `<a:${slideItemObj.options.shadow.type}Shdw ${slideItemObj.options.shadow.type === 'outer' ? 'sx=\"100000\" sy=\"100000\" kx=\"0\" ky=\"0\" algn=\"bl\" rotWithShape=\"0\"' : ''} blurRad=\"${slideItemObj.options.shadow.blur}\" dist=\"${slideItemObj.options.shadow.offset}\" dir=\"${slideItemObj.options.shadow.angle}\">`;\n strSlideXml += `<a:srgbClr val=\"${slideItemObj.options.shadow.color}\">`;\n strSlideXml += `<a:alpha val=\"${slideItemObj.options.shadow.opacity}\"/></a:srgbClr>`;\n strSlideXml += `</a:${slideItemObj.options.shadow.type}Shdw>`;\n strSlideXml += '</a:effectLst>';\n }\n strSlideXml += '</p:spPr>';\n strSlideXml += '</p:pic>';\n break;\n case SLIDE_OBJECT_TYPES.media:\n if (slideItemObj.mtype === 'online') {\n strSlideXml += '<p:pic>';\n strSlideXml += ' <p:nvPicPr>';\n // IMPORTANT: <p:cNvPr id=\"\" value is critical - if its not the same number as preview image `rId`, PowerPoint throws error!\n strSlideXml += `<p:cNvPr id=\"${slideItemObj.mediaRid + 2}\" name=\"${slideItemObj.options.objectName}\"/>`;\n strSlideXml += ' <p:cNvPicPr/>';\n strSlideXml += ' <p:nvPr>';\n strSlideXml += ` <a:videoFile r:link=\"rId${slideItemObj.mediaRid}\"/>`;\n strSlideXml += ' </p:nvPr>';\n strSlideXml += ' </p:nvPicPr>';\n // NOTE: `blip` is diferent than videos; also there's no preview \"p:extLst\" above but exists in videos\n strSlideXml += ` <p:blipFill><a:blip r:embed=\"rId${slideItemObj.mediaRid + 1}\"/><a:stretch><a:fillRect/></a:stretch></p:blipFill>`; // NOTE: Preview image is required!\n strSlideXml += ' <p:spPr>';\n strSlideXml += ` <a:xfrm${locationAttr}><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm>`;\n strSlideXml += ' <a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom>';\n strSlideXml += ' </p:spPr>';\n strSlideXml += '</p:pic>';\n }\n else {\n strSlideXml += '<p:pic>';\n strSlideXml += ' <p:nvPicPr>';\n // IMPORTANT: <p:cNvPr id=\"\" value is critical - if not the same number as preiew image rId, PowerPoint throws error!\n strSlideXml += `<p:cNvPr id=\"${slideItemObj.mediaRid + 2}\" name=\"${slideItemObj.options.objectName}\"><a:hlinkClick r:id=\"\" action=\"ppaction://media\"/></p:cNvPr>`;\n strSlideXml += ' <p:cNvPicPr><a:picLocks noChangeAspect=\"1\"/></p:cNvPicPr>';\n strSlideXml += ' <p:nvPr>';\n strSlideXml += ` <a:videoFile r:link=\"rId${slideItemObj.mediaRid}\"/>`;\n strSlideXml += ' <p:extLst>';\n strSlideXml += ' <p:ext uri=\"{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}\">';\n strSlideXml += ` <p14:media xmlns:p14=\"http://schemas.microsoft.com/office/powerpoint/2010/main\" r:embed=\"rId${slideItemObj.mediaRid + 1}\"/>`;\n strSlideXml += ' </p:ext>';\n strSlideXml += ' </p:extLst>';\n strSlideXml += ' </p:nvPr>';\n strSlideXml += ' </p:nvPicPr>';\n strSlideXml += ` <p:blipFill><a:blip r:embed=\"rId${slideItemObj.mediaRid + 2}\"/><a:stretch><a:fillRect/></a:stretch></p:blipFill>`; // NOTE: Preview image is required!\n strSlideXml += ' <p:spPr>';\n strSlideXml += ` <a:xfrm${locationAttr}><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></a:xfrm>`;\n strSlideXml += ' <a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom>';\n strSlideXml += ' </p:spPr>';\n strSlideXml += '</p:pic>';\n }\n break;\n case SLIDE_OBJECT_TYPES.chart:\n strSlideXml += '<p:graphicFrame>';\n strSlideXml += ' <p:nvGraphicFramePr>';\n strSlideXml += ` <p:cNvPr id=\"${idx + 2}\" name=\"${slideItemObj.options.objectName}\" descr=\"${encodeXmlEntities(slideItemObj.options.altText || '')}\"/>`;\n strSlideXml += ' <p:cNvGraphicFramePr/>';\n strSlideXml += ` <p:nvPr>${genXmlPlaceholder(placeholderObj)}</p:nvPr>`;\n strSlideXml += ' </p:nvGraphicFramePr>';\n strSlideXml += ` <p:xfrm><a:off x=\"${x}\" y=\"${y}\"/><a:ext cx=\"${cx}\" cy=\"${cy}\"/></p:xfrm>`;\n strSlideXml += ' <a:graphic xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\">';\n strSlideXml += ' <a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/chart\">';\n strSlideXml += ` <c:chart r:id=\"rId${slideItemObj.chartRid}\" xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\"/>`;\n strSlideXml += ' </a:graphicData>';\n strSlideXml += ' </a:graphic>';\n strSlideXml += '</p:graphicFrame>';\n break;\n default:\n strSlideXml += '';\n break;\n }\n });\n // STEP 4: Add slide numbers (if any) last\n if (slide._slideNumberProps) {\n // Set some defaults (done here b/c SlideNumber canbe added to masters or slides and has numerous entry points)\n if (!slide._slideNumberProps.align)\n slide._slideNumberProps.align = 'left';\n strSlideXml += '<p:sp>';\n strSlideXml += ' <p:nvSpPr>';\n strSlideXml += ' <p:cNvPr id=\"25\" name=\"Slide Number Placeholder 0\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr>';\n strSlideXml += ' <p:nvPr><p:ph type=\"sldNum\" sz=\"quarter\" idx=\"4294967295\"/></p:nvPr>';\n strSlideXml += ' </p:nvSpPr>';\n strSlideXml += ' <p:spPr>';\n strSlideXml += '<a:xfrm>' +\n `<a:off x=\"${getSmartParseNumber(slide._slideNumberProps.x, 'X', slide._presLayout)}\" y=\"${getSmartParseNumber(slide._slideNumberProps.y, 'Y', slide._presLayout)}\"/>` +\n `<a:ext cx=\"${slide._slideNumberProps.w ? getSmartParseNumber(slide._slideNumberProps.w, 'X', slide._presLayout) : '800000'}\" cy=\"${slide._slideNumberProps.h ? getSmartParseNumber(slide._slideNumberProps.h, 'Y', slide._presLayout) : '300000'}\"/>` +\n '</a:xfrm>' +\n ' <a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom>' +\n ' <a:extLst><a:ext uri=\"{C572A759-6A51-4108-AA02-DFA0A04FC94B}\"><ma14:wrappingTextBoxFlag val=\"0\" xmlns:ma14=\"http://schemas.microsoft.com/office/mac/drawingml/2011/main\"/></a:ext></a:extLst>' +\n '</p:spPr>';\n strSlideXml += '<p:txBody>';\n strSlideXml += '<a:bodyPr';\n if (slide._slideNumberProps.margin && Array.isArray(slide._slideNumberProps.margin)) {\n strSlideXml += ` lIns=\"${valToPts(slide._slideNumberProps.margin[3] || 0)}\"`;\n strSlideXml += ` tIns=\"${valToPts(slide._slideNumberProps.margin[0] || 0)}\"`;\n strSlideXml += ` rIns=\"${valToPts(slide._slideNumberProps.margin[1] || 0)}\"`;\n strSlideXml += ` bIns=\"${valToPts(slide._slideNumberProps.margin[2] || 0)}\"`;\n }\n else if (typeof slide._slideNumberProps.margin === 'number') {\n strSlideXml += ` lIns=\"${valToPts(slide._slideNumberProps.margin || 0)}\"`;\n strSlideXml += ` tIns=\"${valToPts(slide._slideNumberProps.margin || 0)}\"`;\n strSlideXml += ` rIns=\"${valToPts(slide._slideNumberProps.margin || 0)}\"`;\n strSlideXml += ` bIns=\"${valToPts(slide._slideNumberProps.margin || 0)}\"`;\n }\n if (slide._slideNumberProps.valign) {\n strSlideXml += ` anchor=\"${slide._slideNumberProps.valign.replace('top', 't').replace('middle', 'ctr').replace('bottom', 'b')}\"`;\n }\n strSlideXml += '/>';\n strSlideXml += ' <a:lstStyle><a:lvl1pPr>';\n if (slide._slideNumberProps.fontFace || slide._slideNumberProps.fontSize || slide._slideNumberProps.color) {\n strSlideXml += `<a:defRPr sz=\"${Math.round((slide._slideNumberProps.fontSize || 12) * 100)}\">`;\n if (slide._slideNumberProps.color)\n strSlideXml += genXmlColorSelection(slide._slideNumberProps.color);\n if (slide._slideNumberProps.fontFace) {\n strSlideXml += `<a:latin typeface=\"${slide._slideNumberProps.fontFace}\"/><a:ea typeface=\"${slide._slideNumberProps.fontFace}\"/><a:cs typeface=\"${slide._slideNumberProps.fontFace}\"/>`;\n }\n strSlideXml += '</a:defRPr>';\n }\n strSlideXml += '</a:lvl1pPr></a:lstStyle>';\n strSlideXml += '<a:p>';\n if (slide._slideNumberProps.align.startsWith('l'))\n strSlideXml += '<a:pPr algn=\"l\"/>';\n else if (slide._slideNumberProps.align.startsWith('c'))\n strSlideXml += '<a:pPr algn=\"ctr\"/>';\n else if (slide._slideNumberProps.align.startsWith('r'))\n strSlideXml += '<a:pPr algn=\"r\"/>';\n else\n strSlideXml += '<a:pPr algn=\"l\"/>';\n strSlideXml += `<a:fld id=\"${SLDNUMFLDID}\" type=\"slidenum\"><a:rPr b=\"${slide._slideNumberProps.bold ? 1 : 0}\" lang=\"en-US\"/>`;\n strSlideXml += `<a:t>${slide._slideNum}</a:t></a:fld><a:endParaRPr lang=\"en-US\"/></a:p>`;\n strSlideXml += '</p:txBody></p:sp>';\n }\n // STEP 5: Close spTree and finalize slide XML\n strSlideXml += '</p:spTree>';\n strSlideXml += '</p:cSld>';\n // LAST: Return\n return strSlideXml;\n}\n/**\n * Transforms slide relations to XML string.\n * Extra relations that are not dynamic can be passed using the 2nd arg (e.g. theme relation in master file).\n * These relations use rId series that starts with 1-increased maximum of rIds used for dynamic relations.\n * @param {PresSlide | SlideLayout} slide - slide object whose relations are being transformed\n * @param {{ target: string; type: string }[]} defaultRels - array of default relations\n * @return {string} XML\n */\nfunction slideObjectRelationsToXml(slide, defaultRels) {\n let lastRid = 0; // stores maximum rId used for dynamic relations\n let strXml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' + CRLF + '<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">';\n // STEP 1: Add all rels for this Slide\n slide._rels.forEach((rel) => {\n lastRid = Math.max(lastRid, rel.rId);\n if (rel.type.toLowerCase().includes('hyperlink')) {\n if (rel.data === 'slide') {\n strXml += `<Relationship Id=\"rId${rel.rId}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide\" Target=\"slide${rel.Target}.xml\"/>`;\n }\n else {\n strXml += `<Relationship Id=\"rId${rel.rId}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\" Target=\"${rel.Target}\" TargetMode=\"External\"/>`;\n }\n }\n else if (rel.type.toLowerCase().includes('notesSlide')) {\n strXml += `<Relationship Id=\"rId${rel.rId}\" Target=\"${rel.Target}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide\"/>`;\n }\n });\n (slide._relsChart || []).forEach((rel) => {\n lastRid = Math.max(lastRid, rel.rId);\n strXml += `<Relationship Id=\"rId${rel.rId}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\" Target=\"${rel.Target}\"/>`;\n });\n (slide._relsMedia || []).forEach((rel) => {\n const relRid = rel.rId.toString();\n lastRid = Math.max(lastRid, rel.rId);\n if (rel.type.toLowerCase().includes('image')) {\n strXml += '<Relationship Id=\"rId' + relRid + '\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\" Target=\"' + rel.Target + '\"/>';\n }\n else if (rel.type.toLowerCase().includes('audio')) {\n // As media has *TWO* rel entries per item, check for first one, if found add second rel with alt style\n if (strXml.includes(' Target=\"' + rel.Target + '\"')) {\n strXml += '<Relationship Id=\"rId' + relRid + '\" Type=\"http://schemas.microsoft.com/office/2007/relationships/media\" Target=\"' + rel.Target + '\"/>';\n }\n else {\n strXml += '<Relationship Id=\"rId' + relRid + '\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/audio\" Target=\"' + rel.Target + '\"/>';\n }\n }\n else if (rel.type.toLowerCase().includes('video')) {\n // As media has *TWO* rel entries per item, check for first one, if found add second rel with alt style\n if (strXml.includes(' Target=\"' + rel.Target + '\"')) {\n strXml += '<Relationship Id=\"rId' + relRid + '\" Type=\"http://schemas.microsoft.com/office/2007/relationships/media\" Target=\"' + rel.Target + '\"/>';\n }\n else {\n strXml += '<Relationship Id=\"rId' + relRid + '\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/video\" Target=\"' + rel.Target + '\"/>';\n }\n }\n else if (rel.type.toLowerCase().includes('online')) {\n // As media has *TWO* rel entries per item, check for first one, if found add second rel with alt style\n if (strXml.includes(' Target=\"' + rel.Target + '\"')) {\n strXml += '<Relationship Id=\"rId' + relRid + '\" Type=\"http://schemas.microsoft.com/office/2007/relationships/image\" Target=\"' + rel.Target + '\"/>';\n }\n else {\n strXml += '<Relationship Id=\"rId' + relRid + '\" Target=\"' + rel.Target + '\" TargetMode=\"External\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/video\"/>';\n }\n }\n });\n // STEP 2: Add default rels\n defaultRels.forEach((rel, idx) => {\n strXml += `<Relationship Id=\"rId${lastRid + idx + 1}\" Type=\"${rel.type}\" Target=\"${rel.target}\"/>`;\n });\n strXml += '</Relationships>';\n return strXml;\n}\n/**\n * Generate XML Paragraph Properties\n * @param {ISlideObject|TextProps} textObj - text object\n * @param {boolean} isDefault - array of default relations\n * @return {string} XML\n */\nfunction genXmlParagraphProperties(textObj, isDefault) {\n var _a, _b;\n let strXmlBullet = '';\n let strXmlLnSpc = '';\n let strXmlParaSpc = '';\n let strXmlTabStops = '';\n const tag = isDefault ? 'a:lvl1pPr' : 'a:pPr';\n let bulletMarL = valToPts(DEF_BULLET_MARGIN);\n let paragraphPropXml = `<${tag}${textObj.options.rtlMode ? ' rtl=\"1\" ' : ''}`;\n // A: Build paragraphProperties\n {\n // OPTION: align\n if (textObj.options.align) {\n switch (textObj.options.align) {\n case 'left':\n paragraphPropXml += ' algn=\"l\"';\n break;\n case 'right':\n paragraphPropXml += ' algn=\"r\"';\n break;\n case 'center':\n paragraphPropXml += ' algn=\"ctr\"';\n break;\n case 'justify':\n paragraphPropXml += ' algn=\"just\"';\n break;\n default:\n paragraphPropXml += '';\n break;\n }\n }\n if (textObj.options.lineSpacing) {\n strXmlLnSpc = `<a:lnSpc><a:spcPts val=\"${Math.round(textObj.options.lineSpacing * 100)}\"/></a:lnSpc>`;\n }\n else if (textObj.options.lineSpacingMultiple) {\n strXmlLnSpc = `<a:lnSpc><a:spcPct val=\"${Math.round(textObj.options.lineSpacingMultiple * 100000)}\"/></a:lnSpc>`;\n }\n // OPTION: indent\n if (textObj.options.indentLevel && !isNaN(Number(textObj.options.indentLevel)) && textObj.options.indentLevel > 0) {\n paragraphPropXml += ` lvl=\"${textObj.options.indentLevel}\"`;\n }\n // OPTION: Paragraph Spacing: Before/After\n if (textObj.options.paraSpaceBefore && !isNaN(Number(textObj.options.paraSpaceBefore)) && textObj.options.paraSpaceBefore > 0) {\n strXmlParaSpc += `<a:spcBef><a:spcPts val=\"${Math.round(textObj.options.paraSpaceBefore * 100)}\"/></a:spcBef>`;\n }\n if (textObj.options.paraSpaceAfter && !isNaN(Number(textObj.options.paraSpaceAfter)) && textObj.options.paraSpaceAfter > 0) {\n strXmlParaSpc += `<a:spcAft><a:spcPts val=\"${Math.round(textObj.options.paraSpaceAfter * 100)}\"/></a:spcAft>`;\n }\n // OPTION: bullet\n // NOTE: OOXML uses the unicode character set for Bullets\n // EX: Unicode Character 'BULLET' (U+2022) ==> '<a:buChar char=\"&#x2022;\"/>'\n if (typeof textObj.options.bullet === 'object') {\n if ((_b = (_a = textObj === null || textObj === void 0 ? void 0 : textObj.options) === null || _a === void 0 ? void 0 : _a.bullet) === null || _b === void 0 ? void 0 : _b.indent)\n bulletMarL = valToPts(textObj.options.bullet.indent);\n if (textObj.options.bullet.type) {\n if (textObj.options.bullet.type.toString().toLowerCase() === 'number') {\n paragraphPropXml += ` marL=\"${textObj.options.indentLevel && textObj.options.indentLevel > 0 ? bulletMarL + bulletMarL * textObj.options.indentLevel : bulletMarL}\" indent=\"-${bulletMarL}\"`;\n strXmlBullet = `<a:buSzPct val=\"100000\"/><a:buFont typeface=\"+mj-lt\"/><a:buAutoNum type=\"${textObj.options.bullet.style || 'arabicPeriod'}\" startAt=\"${textObj.options.bullet.numberStartAt || textObj.options.bullet.startAt || '1'}\"/>`;\n }\n }\n else if (textObj.options.bullet.characterCode) {\n let bulletCode = `&#x${textObj.options.bullet.characterCode};`;\n // Check value for hex-ness (s/b 4 char hex)\n if (!/^[0-9A-Fa-f]{4}$/.test(textObj.options.bullet.characterCode)) {\n console.warn('Warning: `bullet.characterCode should be a 4-digit unicode charatcer (ex: 22AB)`!');\n bulletCode = BULLET_TYPES.DEFAULT;\n }\n paragraphPropXml += ` marL=\"${textObj.options.indentLevel && textObj.options.indentLevel > 0 ? bulletMarL + bulletMarL * textObj.options.indentLevel : bulletMarL}\" indent=\"-${bulletMarL}\"`;\n strXmlBullet = '<a:buSzPct val=\"100000\"/><a:buChar char=\"' + bulletCode + '\"/>';\n }\n else if (textObj.options.bullet.code) {\n // @deprecated `bullet.code` v3.3.0\n let bulletCode = `&#x${textObj.options.bullet.code};`;\n // Check value for hex-ness (s/b 4 char hex)\n if (!/^[0-9A-Fa-f]{4}$/.test(textObj.options.bullet.code)) {\n console.warn('Warning: `bullet.code should be a 4-digit hex code (ex: 22AB)`!');\n bulletCode = BULLET_TYPES.DEFAULT;\n }\n paragraphPropXml += ` marL=\"${textObj.options.indentLevel && textObj.options.indentLevel > 0 ? bulletMarL + bulletMarL * textObj.options.indentLevel : bulletMarL}\" indent=\"-${bulletMarL}\"`;\n strXmlBullet = '<a:buSzPct val=\"100000\"/><a:buChar char=\"' + bulletCode + '\"/>';\n }\n else {\n paragraphPropXml += ` marL=\"${textObj.options.indentLevel && textObj.options.indentLevel > 0 ? bulletMarL + bulletMarL * textObj.options.indentLevel : bulletMarL}\" indent=\"-${bulletMarL}\"`;\n strXmlBullet = `<a:buSzPct val=\"100000\"/><a:buChar char=\"${BULLET_TYPES.DEFAULT}\"/>`;\n }\n }\n else if (textObj.options.bullet) {\n paragraphPropXml += ` marL=\"${textObj.options.indentLevel && textObj.options.indentLevel > 0 ? bulletMarL + bulletMarL * textObj.options.indentLevel : bulletMarL}\" indent=\"-${bulletMarL}\"`;\n strXmlBullet = `<a:buSzPct val=\"100000\"/><a:buChar char=\"${BULLET_TYPES.DEFAULT}\"/>`;\n }\n else if (!textObj.options.bullet) {\n // We only add this when the user explicitely asks for no bullet, otherwise, it can override the master defaults!\n paragraphPropXml += ' indent=\"0\" marL=\"0\"'; // FIX: ISSUE#589 - specify zero indent and marL or default will be hanging paragraph\n strXmlBullet = '<a:buNone/>';\n }\n // OPTION: tabStops\n if (textObj.options.tabStops && Array.isArray(textObj.options.tabStops)) {\n const tabStopsXml = textObj.options.tabStops.map(stop => `<a:tab pos=\"${inch2Emu(stop.position || 1)}\" algn=\"${stop.alignment || 'l'}\"/>`).join('');\n strXmlTabStops = `<a:tabLst>${tabStopsXml}</a:tabLst>`;\n }\n // B: Close Paragraph-Properties\n // IMPORTANT: strXmlLnSpc, strXmlParaSpc, and strXmlBullet require strict ordering - anything out of order is ignored. (PPT-Online, PPT for Mac)\n paragraphPropXml += '>' + strXmlLnSpc + strXmlParaSpc + strXmlBullet + strXmlTabStops;\n if (isDefault)\n paragraphPropXml += genXmlTextRunProperties(textObj.options, true);\n paragraphPropXml += '</' + tag + '>';\n }\n return paragraphPropXml;\n}\n/**\n * Generate XML Text Run Properties (`a:rPr`)\n * @param {ObjectOptions|TextPropsOptions} opts - text options\n * @param {boolean} isDefault - whether these are the default text run properties\n * @return {string} XML\n */\nfunction genXmlTextRunProperties(opts, isDefault) {\n var _a;\n let runProps = '';\n const runPropsTag = isDefault ? 'a:defRPr' : 'a:rPr';\n // BEGIN runProperties (ex: `<a:rPr lang=\"en-US\" sz=\"1600\" b=\"1\" dirty=\"0\">`)\n runProps += '<' + runPropsTag + ' lang=\"' + (opts.lang ? opts.lang : 'en-US') + '\"' + (opts.lang ? ' altLang=\"en-US\"' : '');\n runProps += opts.fontSize ? ` sz=\"${Math.round(opts.fontSize * 100)}\"` : ''; // NOTE: Use round so sizes like '7.5' wont cause corrupt presentations\n runProps += (opts === null || opts === void 0 ? void 0 : opts.bold) ? ` b=\"${opts.bold ? '1' : '0'}\"` : '';\n runProps += (opts === null || opts === void 0 ? void 0 : opts.italic) ? ` i=\"${opts.italic ? '1' : '0'}\"` : '';\n runProps += (opts === null || opts === void 0 ? void 0 : opts.strike) ? ` strike=\"${typeof opts.strike === 'string' ? opts.strike : 'sngStrike'}\"` : '';\n if (typeof opts.underline === 'object' && ((_a = opts.underline) === null || _a === void 0 ? void 0 : _a.style)) {\n runProps += ` u=\"${opts.underline.style}\"`;\n }\n else if (typeof opts.underline === 'string') {\n // DEPRECATED: opts.underline is an object as of v3.5.0\n runProps += ` u=\"${String(opts.underline)}\"`;\n }\n else if (opts.hyperlink) {\n runProps += ' u=\"sng\"';\n }\n if (opts.baseline) {\n runProps += ` baseline=\"${Math.round(opts.baseline * 50)}\"`;\n }\n else if (opts.subscript) {\n runProps += ' baseline=\"-40000\"';\n }\n else if (opts.superscript) {\n runProps += ' baseline=\"30000\"';\n }\n runProps += opts.charSpacing ? ` spc=\"${Math.round(opts.charSpacing * 100)}\" kern=\"0\"` : ''; // IMPORTANT: Also disable kerning; otherwise text won't actually expand\n runProps += ' dirty=\"0\">';\n // Color / Font / Highlight / Outline are children of <a:rPr>, so add them now before closing the runProperties tag\n if (opts.color || opts.fontFace || opts.outline || (typeof opts.underline === 'object' && opts.underline.color)) {\n if (opts.outline && typeof opts.outline === 'object') {\n runProps += `<a:ln w=\"${valToPts(opts.outline.size || 0.75)}\">${genXmlColorSelection(opts.outline.color || 'FFFFFF')}</a:ln>`;\n }\n if (opts.color)\n runProps += genXmlColorSelection({ color: opts.color, transparency: opts.transparency });\n if (opts.highlight)\n runProps += `<a:highlight>${createColorElement(opts.highlight)}</a:highlight>`;\n if (typeof opts.underline === 'object' && opts.underline.color)\n runProps += `<a:uFill>${genXmlColorSelection(opts.underline.color)}</a:uFill>`;\n if (opts.glow)\n runProps += `<a:effectLst>${createGlowElement(opts.glow, DEF_TEXT_GLOW)}</a:effectLst>`;\n if (opts.fontFace) {\n // NOTE: 'cs' = Complex Script, 'ea' = East Asian (use \"-120\" instead of \"0\" - per Issue #174); ea must come first (Issue #174)\n runProps += `<a:latin typeface=\"${opts.fontFace}\" pitchFamily=\"34\" charset=\"0\"/><a:ea typeface=\"${opts.fontFace}\" pitchFamily=\"34\" charset=\"-122\"/><a:cs typeface=\"${opts.fontFace}\" pitchFamily=\"34\" charset=\"-120\"/>`;\n }\n }\n // Hyperlink support\n if (opts.hyperlink) {\n if (typeof opts.hyperlink !== 'object')\n throw new Error('ERROR: text `hyperlink` option should be an object. Ex: `hyperlink:{url:\\'https://github.com\\'}` ');\n else if (!opts.hyperlink.url && !opts.hyperlink.slide)\n throw new Error('ERROR: \\'hyperlink requires either `url` or `slide`\\'');\n else if (opts.hyperlink.url) {\n // runProps += '<a:uFill>'+ genXmlColorSelection('0000FF') +'</a:uFill>'; // Breaks PPT2010! (Issue#74)\n runProps += `<a:hlinkClick r:id=\"rId${opts.hyperlink._rId}\" invalidUrl=\"\" action=\"\" tgtFrame=\"\" tooltip=\"${opts.hyperlink.tooltip ? encodeXmlEntities(opts.hyperlink.tooltip) : ''}\" history=\"1\" highlightClick=\"0\" endSnd=\"0\"${opts.color ? '>' : '/>'}`;\n }\n else if (opts.hyperlink.slide) {\n runProps += `<a:hlinkClick r:id=\"rId${opts.hyperlink._rId}\" action=\"ppaction://hlinksldjump\" tooltip=\"${opts.hyperlink.tooltip ? encodeXmlEntities(opts.hyperlink.tooltip) : ''}\"${opts.color ? '>' : '/>'}`;\n }\n if (opts.color) {\n runProps += ' <a:extLst>';\n runProps += ' <a:ext uri=\"{A12FA001-AC4F-418D-AE19-62706E023703}\">';\n runProps += ' <ahyp:hlinkClr xmlns:ahyp=\"http://schemas.microsoft.com/office/drawing/2018/hyperlinkcolor\" val=\"tx\"/>';\n runProps += ' </a:ext>';\n runProps += ' </a:extLst>';\n runProps += '</a:hlinkClick>';\n }\n }\n // END runProperties\n runProps += `</${runPropsTag}>`;\n return runProps;\n}\n/**\n * Build textBody text runs [`<a:r></a:r>`] for paragraphs [`<a:p>`]\n * @param {TextProps} textObj - Text object\n * @return {string} XML string\n */\nfunction genXmlTextRun(textObj) {\n // NOTE: Dont create full rPr runProps for empty [lineBreak] runs\n // Why? The size of the lineBreak wont match (eg: below it will be 18px instead of the correct 36px)\n // Do this:\n /*\n <a:p>\n <a:pPr algn=\"r\"/>\n <a:endParaRPr lang=\"en-US\" sz=\"3600\" dirty=\"0\"/>\n </a:p>\n */\n // NOT this:\n /*\n <a:p>\n <a:pPr algn=\"r\"/>\n <a:r>\n <a:rPr lang=\"en-US\" sz=\"3600\" dirty=\"0\">\n <a:solidFill>\n <a:schemeClr val=\"accent5\"/>\n </a:solidFill>\n <a:latin typeface=\"Times\" pitchFamily=\"34\" charset=\"0\"/>\n <a:ea typeface=\"Times\" pitchFamily=\"34\" charset=\"-122\"/>\n <a:cs typeface=\"Times\" pitchFamily=\"34\" charset=\"-120\"/>\n </a:rPr>\n <a:t></a:t>\n </a:r>\n <a:endParaRPr lang=\"en-US\" dirty=\"0\"/>\n </a:p>\n */\n // Return paragraph with text run\n return textObj.text ? `<a:r>${genXmlTextRunProperties(textObj.options, false)}<a:t>${encodeXmlEntities(textObj.text)}</a:t></a:r>` : '';\n}\n/**\n * Builds `<a:bodyPr></a:bodyPr>` tag for \"genXmlTextBody()\"\n * @param {ISlideObject | TableCell} slideObject - various options\n * @return {string} XML string\n */\nfunction genXmlBodyProperties(slideObject) {\n let bodyProperties = '<a:bodyPr';\n if (slideObject && slideObject._type === SLIDE_OBJECT_TYPES.text && slideObject.options._bodyProp) {\n // PPT-2019 EX: <a:bodyPr wrap=\"square\" lIns=\"1270\" tIns=\"1270\" rIns=\"1270\" bIns=\"1270\" rtlCol=\"0\" anchor=\"ctr\"/>\n // A: Enable or disable textwrapping none or square\n bodyProperties += slideObject.options._bodyProp.wrap ? ' wrap=\"square\"' : ' wrap=\"none\"';\n // B: Textbox margins [padding]\n if (slideObject.options._bodyProp.lIns || slideObject.options._bodyProp.lIns === 0)\n bodyProperties += ` lIns=\"${slideObject.options._bodyProp.lIns}\"`;\n if (slideObject.options._bodyProp.tIns || slideObject.options._bodyProp.tIns === 0)\n bodyProperties += ` tIns=\"${slideObject.options._bodyProp.tIns}\"`;\n if (slideObject.options._bodyProp.rIns || slideObject.options._bodyProp.rIns === 0)\n bodyProperties += ` rIns=\"${slideObject.options._bodyProp.rIns}\"`;\n if (slideObject.options._bodyProp.bIns || slideObject.options._bodyProp.bIns === 0)\n bodyProperties += ` bIns=\"${slideObject.options._bodyProp.bIns}\"`;\n // C: Add rtl after margins\n bodyProperties += ' rtlCol=\"0\"';\n // D: Add anchorPoints\n if (slideObject.options._bodyProp.anchor)\n bodyProperties += ' anchor=\"' + slideObject.options._bodyProp.anchor + '\"'; // VALS: [t,ctr,b]\n if (slideObject.options._bodyProp.vert)\n bodyProperties += ' vert=\"' + slideObject.options._bodyProp.vert + '\"'; // VALS: [eaVert,horz,mongolianVert,vert,vert270,wordArtVert,wordArtVertRtl]\n // E: Close <a:bodyPr element\n bodyProperties += '>';\n /**\n * F: Text Fit/AutoFit/Shrink option\n * @see: http://officeopenxml.com/drwSp-text-bodyPr-fit.php\n * @see: http://www.datypic.com/sc/ooxml/g-a_EG_TextAutofit.html\n */\n if (slideObject.options.fit) {\n // NOTE: Use of '<a:noAutofit/>' instead of '' causes issues in PPT-2013!\n if (slideObject.options.fit === 'none')\n bodyProperties += '';\n // NOTE: Shrink does not work automatically - PowerPoint calculates the `fontScale` value dynamically upon resize\n // else if (slideObject.options.fit === 'shrink') bodyProperties += '<a:normAutofit fontScale=\"85000\" lnSpcReduction=\"20000\"/>' // MS-PPT > Format shape > Text Options: \"Shrink text on overflow\"\n else if (slideObject.options.fit === 'shrink')\n bodyProperties += '<a:normAutofit/>';\n else if (slideObject.options.fit === 'resize')\n bodyProperties += '<a:spAutoFit/>';\n }\n //\n // DEPRECATED: below (@deprecated v3.3.0)\n if (slideObject.options.shrinkText)\n bodyProperties += '<a:normAutofit/>'; // MS-PPT > Format shape > Text Options: \"Shrink text on overflow\"\n /* DEPRECATED: below (@deprecated v3.3.0)\n * MS-PPT > Format shape > Text Options: \"Resize shape to fit text\" [spAutoFit]\n * NOTE: Use of '<a:noAutofit/>' in lieu of '' below causes issues in PPT-2013\n */\n bodyProperties += slideObject.options._bodyProp.autoFit ? '<a:spAutoFit/>' : '';\n // LAST: Close _bodyProp\n bodyProperties += '</a:bodyPr>';\n }\n else {\n // DEFAULT:\n bodyProperties += ' wrap=\"square\" rtlCol=\"0\">';\n bodyProperties += '</a:bodyPr>';\n }\n // LAST: Return Close _bodyProp\n return slideObject._type === SLIDE_OBJECT_TYPES.tablecell ? '<a:bodyPr/>' : bodyProperties;\n}\n/**\n * Generate the XML for text and its options (bold, bullet, etc) including text runs (word-level formatting)\n * @param {ISlideObject|TableCell} slideObj - slideObj or tableCell\n * @note PPT text lines [lines followed by line-breaks] are created using <p>-aragraph's\n * @note Bullets are a paragragh-level formatting device\n * @template\n * <p:txBody>\n * <a:bodyPr wrap=\"square\" rtlCol=\"0\">\n * <a:spAutoFit/>\n * </a:bodyPr>\n * <a:lstStyle/>\n * <a:p>\n * <a:pPr algn=\"ctr\"/>\n * <a:r>\n * <a:rPr lang=\"en-US\" dirty=\"0\" err=\"1\"/>\n * <a:t>textbox text</a:t>\n * </a:r>\n * <a:endParaRPr lang=\"en-US\" dirty=\"0\"/>\n * </a:p>\n * </p:txBody>\n * @returns XML containing the param object's text and formatting\n */\nfunction genXmlTextBody(slideObj) {\n const opts = slideObj.options || {};\n let tmpTextObjects = [];\n const arrTextObjects = [];\n // FIRST: Shapes without text, etc. may be sent here during build, but have no text to render so return an empty string\n if (opts && slideObj._type !== SLIDE_OBJECT_TYPES.tablecell && (typeof slideObj.text === 'undefined' || slideObj.text === null))\n return '';\n // STEP 1: Start textBody\n let strSlideXml = slideObj._type === SLIDE_OBJECT_TYPES.tablecell ? '<a:txBody>' : '<p:txBody>';\n // STEP 2: Add bodyProperties\n {\n // A: 'bodyPr'\n strSlideXml += genXmlBodyProperties(slideObj);\n // B: 'lstStyle'\n // NOTE: shape type 'LINE' has different text align needs (a lstStyle.lvl1pPr between bodyPr and p)\n // FIXME: LINE horiz-align doesnt work (text is always to the left inside line) (FYI: the PPT code diff is substantial!)\n if (opts.h === 0 && opts.line && opts.align)\n strSlideXml += '<a:lstStyle><a:lvl1pPr algn=\"l\"/></a:lstStyle>';\n else if (slideObj._type === 'placeholder')\n strSlideXml += `<a:lstStyle>${genXmlParagraphProperties(slideObj, true)}</a:lstStyle>`;\n else\n strSlideXml += '<a:lstStyle/>';\n }\n /* STEP 3: Modify slideObj.text to array\n CASES:\n addText( 'string' ) // string\n addText( 'line1\\n line2' ) // string with lineBreak\n addText( {text:'word1'} ) // TextProps object\n addText( ['barry','allen'] ) // array of strings\n addText( [{text:'word1'}, {text:'word2'}] ) // TextProps object array\n addText( [{text:'line1\\n line2'}, {text:'end word'}] ) // TextProps object array with lineBreak\n */\n if (typeof slideObj.text === 'string' || typeof slideObj.text === 'number') {\n // Handle cases 1,2\n tmpTextObjects.push({ text: slideObj.text.toString(), options: opts || {} });\n }\n else if (slideObj.text && !Array.isArray(slideObj.text) && typeof slideObj.text === 'object' && Object.keys(slideObj.text).includes('text')) {\n // } else if (!Array.isArray(slideObj.text) && slideObj.text!.hasOwnProperty('text')) { // 20210706: replaced with below as ts compiler rejected it\n // Handle case 3\n tmpTextObjects.push({ text: slideObj.text || '', options: slideObj.options || {} });\n }\n else if (Array.isArray(slideObj.text)) {\n // Handle cases 4,5,6\n // NOTE: use cast as text is TextProps[]|TableCell[] and their `options` dont overlap (they share the same TextBaseProps though)\n tmpTextObjects = slideObj.text.map(item => ({ text: item.text, options: item.options }));\n }\n // STEP 4: Iterate over text objects, set text/options, break into pieces if '\\n'/breakLine found\n tmpTextObjects.forEach((itext, idx) => {\n if (!itext.text)\n itext.text = '';\n // A: Set options\n itext.options = itext.options || opts || {};\n if (idx === 0 && itext.options && !itext.options.bullet && opts.bullet)\n itext.options.bullet = opts.bullet;\n // B: Cast to text-object and fix line-breaks (if needed)\n if (typeof itext.text === 'string' || typeof itext.text === 'number') {\n // 1: Convert \"\\n\" or any variation into CRLF\n itext.text = itext.text.toString().replace(/\\r*\\n/g, CRLF);\n }\n // C: If text string has line-breaks, then create a separate text-object for each (much easier than dealing with split inside a loop below)\n // NOTE: Filter for trailing lineBreak prevents the creation of an empty textObj as the last item\n if (itext.text.includes(CRLF) && itext.text.match(/\\n$/g) === null) {\n itext.text.split(CRLF).forEach(line => {\n itext.options.breakLine = true;\n arrTextObjects.push({ text: line, options: itext.options });\n });\n }\n else {\n arrTextObjects.push(itext);\n }\n });\n // STEP 5: Group textObj into lines by checking for lineBreak, bullets, alignment change, etc.\n const arrLines = [];\n let arrTexts = [];\n arrTextObjects.forEach((textObj, idx) => {\n // A: Align or Bullet trigger new line\n if (arrTexts.length > 0 && (textObj.options.align || opts.align)) {\n // Only start a new paragraph when align *changes*\n if (textObj.options.align !== arrTextObjects[idx - 1].options.align) {\n arrLines.push(arrTexts);\n arrTexts = [];\n }\n }\n else if (arrTexts.length > 0 && textObj.options.bullet && arrTexts.length > 0) {\n arrLines.push(arrTexts);\n arrTexts = [];\n textObj.options.breakLine = false; // For cases with both `bullet` and `brekaLine` - prevent double lineBreak\n }\n // B: Add this text to current line\n arrTexts.push(textObj);\n // C: BreakLine begins new line **after** adding current text\n if (arrTexts.length > 0 && textObj.options.breakLine) {\n // Avoid starting a para right as loop is exhausted\n if (idx + 1 < arrTextObjects.length) {\n arrLines.push(arrTexts);\n arrTexts = [];\n }\n }\n // D: Flush buffer\n if (idx + 1 === arrTextObjects.length)\n arrLines.push(arrTexts);\n });\n // STEP 6: Loop over each line and create paragraph props, text run, etc.\n arrLines.forEach(line => {\n var _a;\n let reqsClosingFontSize = false;\n // A: Start paragraph, add paraProps\n strSlideXml += '<a:p>';\n // NOTE: `rtlMode` is like other opts, its propagated up to each text:options, so just check the 1st one\n let paragraphPropXml = `<a:pPr ${((_a = line[0].options) === null || _a === void 0 ? void 0 : _a.rtlMode) ? ' rtl=\"1\" ' : ''}`;\n // B: Start paragraph, loop over lines and add text runs\n line.forEach((textObj, idx) => {\n // A: Set line index\n textObj.options._lineIdx = idx;\n // A.1: Add soft break if not the first run of the line.\n if (idx > 0 && textObj.options.softBreakBefore) {\n strSlideXml += '<a:br/>';\n }\n // B: Inherit pPr-type options from parent shape's `options`\n textObj.options.align = textObj.options.align || opts.align;\n textObj.options.lineSpacing = textObj.options.lineSpacing || opts.lineSpacing;\n textObj.options.lineSpacingMultiple = textObj.options.lineSpacingMultiple || opts.lineSpacingMultiple;\n textObj.options.indentLevel = textObj.options.indentLevel || opts.indentLevel;\n textObj.options.paraSpaceBefore = textObj.options.paraSpaceBefore || opts.paraSpaceBefore;\n textObj.options.paraSpaceAfter = textObj.options.paraSpaceAfter || opts.paraSpaceAfter;\n paragraphPropXml = genXmlParagraphProperties(textObj, false);\n strSlideXml += paragraphPropXml.replace('<a:pPr></a:pPr>', ''); // IMPORTANT: Empty \"pPr\" blocks will generate needs-repair/corrupt msg\n // C: Inherit any main options (color, fontSize, etc.)\n // NOTE: We only pass the text.options to genXmlTextRun (not the Slide.options),\n // so the run building function cant just fallback to Slide.color, therefore, we need to do that here before passing options below.\n // FILTER RULE: Hyperlinks should not inherit `color` from main options (let PPT default to local color, eg: blue on MacOS)\n Object.entries(opts).filter(([key]) => !(textObj.options.hyperlink && key === 'color')).forEach(([key, val]) => {\n // if (textObj.options.hyperlink && key === 'color') null\n // NOTE: This loop will pick up unecessary keys (`x`, etc.), but it doesnt hurt anything\n if (key !== 'bullet' && !textObj.options[key])\n textObj.options[key] = val;\n });\n // D: Add formatted textrun\n strSlideXml += genXmlTextRun(textObj);\n // E: Flag close fontSize for empty [lineBreak] elements\n if ((!textObj.text && opts.fontSize) || textObj.options.fontSize) {\n reqsClosingFontSize = true;\n opts.fontSize = opts.fontSize || textObj.options.fontSize;\n }\n });\n /* C: Append 'endParaRPr' (when needed) and close current open paragraph\n * NOTE: (ISSUE#20, ISSUE#193): Add 'endParaRPr' with font/size props or PPT default (Arial/18pt en-us) is used making row \"too tall\"/not honoring options\n */\n if (slideObj._type === SLIDE_OBJECT_TYPES.tablecell && (opts.fontSize || opts.fontFace)) {\n if (opts.fontFace) {\n strSlideXml += `<a:endParaRPr lang=\"${opts.lang || 'en-US'}\"` + (opts.fontSize ? ` sz=\"${Math.round(opts.fontSize * 100)}\"` : '') + ' dirty=\"0\">';\n strSlideXml += `<a:latin typeface=\"${opts.fontFace}\" charset=\"0\"/>`;\n strSlideXml += `<a:ea typeface=\"${opts.fontFace}\" charset=\"0\"/>`;\n strSlideXml += `<a:cs typeface=\"${opts.fontFace}\" charset=\"0\"/>`;\n strSlideXml += '</a:endParaRPr>';\n }\n else {\n strSlideXml += `<a:endParaRPr lang=\"${opts.lang || 'en-US'}\"` + (opts.fontSize ? ` sz=\"${Math.round(opts.fontSize * 100)}\"` : '') + ' dirty=\"0\"/>';\n }\n }\n else if (reqsClosingFontSize) {\n // Empty [lineBreak] lines should not contain runProp, however, they need to specify fontSize in `endParaRPr`\n strSlideXml += `<a:endParaRPr lang=\"${opts.lang || 'en-US'}\"` + (opts.fontSize ? ` sz=\"${Math.round(opts.fontSize * 100)}\"` : '') + ' dirty=\"0\"/>';\n }\n else {\n strSlideXml += `<a:endParaRPr lang=\"${opts.lang || 'en-US'}\" dirty=\"0\"/>`; // Added 20180101 to address PPT-2007 issues\n }\n // D: End paragraph\n strSlideXml += '</a:p>';\n });\n // IMPORTANT: An empty txBody will cause \"needs repair\" error! Add <p> content if missing.\n // [FIXED in v3.13.0]: This fixes issue with table auto-paging where some cells w/b empty on subsequent pages.\n /*\n <a:txBody>\n <a:bodyPr/>\n <a:lstStyle/>\n </a:txBody>\n */\n if (strSlideXml.indexOf('<a:p>') === -1) {\n strSlideXml += '<a:p><a:endParaRPr/></a:p>';\n }\n // STEP 7: Close the textBody\n strSlideXml += slideObj._type === SLIDE_OBJECT_TYPES.tablecell ? '</a:txBody>' : '</p:txBody>';\n // LAST: Return XML\n return strSlideXml;\n}\n/**\n * Generate an XML Placeholder\n * @param {ISlideObject} placeholderObj\n * @returns XML\n */\nfunction genXmlPlaceholder(placeholderObj) {\n var _a, _b;\n if (!placeholderObj)\n return '';\n const placeholderIdx = ((_a = placeholderObj.options) === null || _a === void 0 ? void 0 : _a._placeholderIdx) ? placeholderObj.options._placeholderIdx : '';\n const placeholderTyp = ((_b = placeholderObj.options) === null || _b === void 0 ? void 0 : _b._placeholderType) ? placeholderObj.options._placeholderType : '';\n const placeholderType = placeholderTyp && PLACEHOLDER_TYPES[placeholderTyp] ? (PLACEHOLDER_TYPES[placeholderTyp]).toString() : '';\n return `<p:ph\n\t\t${placeholderIdx ? ' idx=\"' + placeholderIdx.toString() + '\"' : ''}\n\t\t${placeholderType && PLACEHOLDER_TYPES[placeholderType] ? ` type=\"${placeholderType}\"` : ''}\n\t\t${placeholderObj.text && placeholderObj.text.length > 0 ? ' hasCustomPrompt=\"1\"' : ''}\n\t\t/>`;\n}\n// XML-GEN: First 6 functions create the base /ppt files\n/**\n * Generate XML ContentType\n * @param {PresSlide[]} slides - slides\n * @param {SlideLayout[]} slideLayouts - slide layouts\n * @param {PresSlide} masterSlide - master slide\n * @returns XML\n */\nfunction makeXmlContTypes(slides, slideLayouts, masterSlide) {\n let strXml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' + CRLF;\n strXml += '<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">';\n strXml += '<Default Extension=\"xml\" ContentType=\"application/xml\"/>';\n strXml += '<Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>';\n strXml += '<Default Extension=\"jpeg\" ContentType=\"image/jpeg\"/>';\n strXml += '<Default Extension=\"jpg\" ContentType=\"image/jpg\"/>';\n strXml += '<Default Extension=\"svg\" ContentType=\"image/svg+xml\"/>';\n // STEP 1: Add standard/any media types used in Presentation\n strXml += '<Default Extension=\"png\" ContentType=\"image/png\"/>';\n strXml += '<Default Extension=\"gif\" ContentType=\"image/gif\"/>';\n strXml += '<Default Extension=\"m4v\" ContentType=\"video/mp4\"/>'; // NOTE: Hard-Code this extension as it wont be created in loop below (as extn !== type)\n strXml += '<Default Extension=\"mp4\" ContentType=\"video/mp4\"/>'; // NOTE: Hard-Code this extension as it wont be created in loop below (as extn !== type)\n slides.forEach(slide => {\n (slide._relsMedia || []).forEach(rel => {\n if (rel.type !== 'image' && rel.type !== 'online' && rel.type !== 'chart' && rel.extn !== 'm4v' && !strXml.includes(rel.type)) {\n strXml += '<Default Extension=\"' + rel.extn + '\" ContentType=\"' + rel.type + '\"/>';\n }\n });\n });\n strXml += '<Default Extension=\"vml\" ContentType=\"application/vnd.openxmlformats-officedocument.vmlDrawing\"/>';\n strXml += '<Default Extension=\"xlsx\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"/>';\n // STEP 2: Add presentation and slide master(s)/slide(s)\n strXml += '<Override PartName=\"/ppt/presentation.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\"/>';\n strXml += '<Override PartName=\"/ppt/notesMasters/notesMaster1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml\"/>';\n slides.forEach((slide, idx) => {\n strXml += `<Override PartName=\"/ppt/slideMasters/slideMaster${idx + 1}.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml\"/>`;\n strXml += `<Override PartName=\"/ppt/slides/slide${idx + 1}.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\"/>`;\n // Add charts if any\n slide._relsChart.forEach(rel => {\n strXml += `<Override PartName=\"${rel.Target}\" ContentType=\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\"/>`;\n });\n });\n // STEP 3: Core PPT\n strXml += '<Override PartName=\"/ppt/presProps.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.presProps+xml\"/>';\n strXml += '<Override PartName=\"/ppt/viewProps.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml\"/>';\n strXml += '<Override PartName=\"/ppt/theme/theme1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.theme+xml\"/>';\n strXml += '<Override PartName=\"/ppt/tableStyles.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml\"/>';\n // STEP 4: Add Slide Layouts\n slideLayouts.forEach((layout, idx) => {\n strXml += `<Override PartName=\"/ppt/slideLayouts/slideLayout${idx + 1}.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml\"/>`;\n (layout._relsChart || []).forEach(rel => {\n strXml += ' <Override PartName=\"' + rel.Target + '\" ContentType=\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\"/>';\n });\n });\n // STEP 5: Add notes slide(s)\n slides.forEach((_slide, idx) => {\n strXml += `<Override PartName=\"/ppt/notesSlides/notesSlide${idx + 1}.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml\"/>`;\n });\n // STEP 6: Add rels\n masterSlide._relsChart.forEach(rel => {\n strXml += ' <Override PartName=\"' + rel.Target + '\" ContentType=\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\"/>';\n });\n masterSlide._relsMedia.forEach(rel => {\n if (rel.type !== 'image' && rel.type !== 'online' && rel.type !== 'chart' && rel.extn !== 'm4v' && !strXml.includes(rel.type)) {\n strXml += ' <Default Extension=\"' + rel.extn + '\" ContentType=\"' + rel.type + '\"/>';\n }\n });\n // LAST: Finish XML (Resume core)\n strXml += ' <Override PartName=\"/docProps/core.xml\" ContentType=\"application/vnd.openxmlformats-package.core-properties+xml\"/>';\n strXml += ' <Override PartName=\"/docProps/app.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.extended-properties+xml\"/>';\n strXml += '</Types>';\n return strXml;\n}\n/**\n * Creates `_rels/.rels`\n * @returns XML\n */\nfunction makeXmlRootRels() {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\n\t\t<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties\" Target=\"docProps/app.xml\"/>\n\t\t<Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\" Target=\"docProps/core.xml\"/>\n\t\t<Relationship Id=\"rId3\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"ppt/presentation.xml\"/>\n\t\t</Relationships>`;\n}\n/**\n * Creates `docProps/app.xml`\n * @param {PresSlide[]} slides - Presenation Slides\n * @param {string} company - \"Company\" metadata\n * @returns XML\n */\nfunction makeXmlApp(slides, company) {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<Properties xmlns=\"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\" xmlns:vt=\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\">\n\t<TotalTime>0</TotalTime>\n\t<Words>0</Words>\n\t<Application>Microsoft Office PowerPoint</Application>\n\t<PresentationFormat>On-screen Show (16:9)</PresentationFormat>\n\t<Paragraphs>0</Paragraphs>\n\t<Slides>${slides.length}</Slides>\n\t<Notes>${slides.length}</Notes>\n\t<HiddenSlides>0</HiddenSlides>\n\t<MMClips>0</MMClips>\n\t<ScaleCrop>false</ScaleCrop>\n\t<HeadingPairs>\n\t\t<vt:vector size=\"6\" baseType=\"variant\">\n\t\t\t<vt:variant><vt:lpstr>Fonts Used</vt:lpstr></vt:variant>\n\t\t\t<vt:variant><vt:i4>2</vt:i4></vt:variant>\n\t\t\t<vt:variant><vt:lpstr>Theme</vt:lpstr></vt:variant>\n\t\t\t<vt:variant><vt:i4>1</vt:i4></vt:variant>\n\t\t\t<vt:variant><vt:lpstr>Slide Titles</vt:lpstr></vt:variant>\n\t\t\t<vt:variant><vt:i4>${slides.length}</vt:i4></vt:variant>\n\t\t</vt:vector>\n\t</HeadingPairs>\n\t<TitlesOfParts>\n\t\t<vt:vector size=\"${slides.length + 1 + 2}\" baseType=\"lpstr\">\n\t\t\t<vt:lpstr>Arial</vt:lpstr>\n\t\t\t<vt:lpstr>Calibri</vt:lpstr>\n\t\t\t<vt:lpstr>Office Theme</vt:lpstr>\n\t\t\t${slides.map((_slideObj, idx) => `<vt:lpstr>Slide ${idx + 1}</vt:lpstr>`).join('')}\n\t\t</vt:vector>\n\t</TitlesOfParts>\n\t<Company>${company}</Company>\n\t<LinksUpToDate>false</LinksUpToDate>\n\t<SharedDoc>false</SharedDoc>\n\t<HyperlinksChanged>false</HyperlinksChanged>\n\t<AppVersion>16.0000</AppVersion>\n\t</Properties>`;\n}\n/**\n * Creates `docProps/core.xml`\n * @param {string} title - metadata data\n * @param {string} subject - metadata data\n * @param {string} author - metadata value\n * @param {string} revision - metadata value\n * @returns XML\n */\nfunction makeXmlCore(title, subject, author, revision) {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n\t<cp:coreProperties xmlns:cp=\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:dcmitype=\"http://purl.org/dc/dcmitype/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n\t\t<dc:title>${encodeXmlEntities(title)}</dc:title>\n\t\t<dc:subject>${encodeXmlEntities(subject)}</dc:subject>\n\t\t<dc:creator>${encodeXmlEntities(author)}</dc:creator>\n\t\t<cp:lastModifiedBy>${encodeXmlEntities(author)}</cp:lastModifiedBy>\n\t\t<cp:revision>${revision}</cp:revision>\n\t\t<dcterms:created xsi:type=\"dcterms:W3CDTF\">${new Date().toISOString().replace(/\\.\\d\\d\\dZ/, 'Z')}</dcterms:created>\n\t\t<dcterms:modified xsi:type=\"dcterms:W3CDTF\">${new Date().toISOString().replace(/\\.\\d\\d\\dZ/, 'Z')}</dcterms:modified>\n\t</cp:coreProperties>`;\n}\n/**\n * Creates `ppt/_rels/presentation.xml.rels`\n * @param {PresSlide[]} slides - Presenation Slides\n * @returns XML\n */\nfunction makeXmlPresentationRels(slides) {\n let intRelNum = 1;\n let strXml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' + CRLF;\n strXml += '<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">';\n strXml += '<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster\" Target=\"slideMasters/slideMaster1.xml\"/>';\n for (let idx = 1; idx <= slides.length; idx++) {\n strXml += `<Relationship Id=\"rId${++intRelNum}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide\" Target=\"slides/slide${idx}.xml\"/>`;\n }\n intRelNum++;\n strXml +=\n `<Relationship Id=\"rId${intRelNum + 0}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster\" Target=\"notesMasters/notesMaster1.xml\"/>` +\n `<Relationship Id=\"rId${intRelNum + 1}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps\" Target=\"presProps.xml\"/>` +\n `<Relationship Id=\"rId${intRelNum + 2}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/viewProps\" Target=\"viewProps.xml\"/>` +\n `<Relationship Id=\"rId${intRelNum + 3}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\" Target=\"theme/theme1.xml\"/>` +\n `<Relationship Id=\"rId${intRelNum + 4}\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/tableStyles\" Target=\"tableStyles.xml\"/>` +\n '</Relationships>';\n return strXml;\n}\n// XML-GEN: Functions that run 1-N times (once for each Slide)\n/**\n * Generates XML for the slide file (`ppt/slides/slide1.xml`)\n * @param {PresSlide} slide - the slide object to transform into XML\n * @return {string} XML\n */\nfunction makeXmlSlide(slide) {\n return (`<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}` +\n '<p:sld xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" ' +\n 'xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"' +\n `${(slide === null || slide === void 0 ? void 0 : slide.hidden) ? ' show=\"0\"' : ''}>` +\n `${slideObjectToXml(slide)}` +\n '<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:sld>');\n}\n/**\n * Get text content of Notes from Slide\n * @param {PresSlide} slide - the slide object to transform into XML\n * @return {string} notes text\n */\nfunction getNotesFromSlide(slide) {\n let notesText = '';\n slide._slideObjects.forEach(data => {\n if (data._type === SLIDE_OBJECT_TYPES.notes)\n notesText += (data === null || data === void 0 ? void 0 : data.text) && data.text[0] ? data.text[0].text : '';\n });\n return notesText.replace(/\\r*\\n/g, CRLF);\n}\n/**\n * Generate XML for Notes Master (notesMaster1.xml)\n * @returns {string} XML\n */\nfunction makeXmlNotesMaster() {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<p:notesMaster xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"><p:cSld><p:bg><p:bgRef idx=\"1001\"><a:schemeClr val=\"bg1\"/></p:bgRef></p:bg><p:spTree><p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"0\" cy=\"0\"/><a:chOff x=\"0\" y=\"0\"/><a:chExt cx=\"0\" cy=\"0\"/></a:xfrm></p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id=\"2\" name=\"Header Placeholder 1\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"hdr\" sz=\"quarter\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"2971800\" cy=\"458788\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert=\"horz\" lIns=\"91440\" tIns=\"45720\" rIns=\"91440\" bIns=\"45720\" rtlCol=\"0\"/><a:lstStyle><a:lvl1pPr algn=\"l\"><a:defRPr sz=\"1200\"/></a:lvl1pPr></a:lstStyle><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\"3\" name=\"Date Placeholder 2\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"dt\" idx=\"1\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"3884613\" y=\"0\"/><a:ext cx=\"2971800\" cy=\"458788\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert=\"horz\" lIns=\"91440\" tIns=\"45720\" rIns=\"91440\" bIns=\"45720\" rtlCol=\"0\"/><a:lstStyle><a:lvl1pPr algn=\"r\"><a:defRPr sz=\"1200\"/></a:lvl1pPr></a:lstStyle><a:p><a:fld id=\"{5282F153-3F37-0F45-9E97-73ACFA13230C}\" type=\"datetimeFigureOut\"><a:rPr lang=\"en-US\"/><a:t>7/23/19</a:t></a:fld><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\"4\" name=\"Slide Image Placeholder 3\"/><p:cNvSpPr><a:spLocks noGrp=\"1\" noRot=\"1\" noChangeAspect=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"sldImg\" idx=\"2\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"685800\" y=\"1143000\"/><a:ext cx=\"5486400\" cy=\"3086100\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom><a:noFill/><a:ln w=\"12700\"><a:solidFill><a:prstClr val=\"black\"/></a:solidFill></a:ln></p:spPr><p:txBody><a:bodyPr vert=\"horz\" lIns=\"91440\" tIns=\"45720\" rIns=\"91440\" bIns=\"45720\" rtlCol=\"0\" anchor=\"ctr\"/><a:lstStyle/><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\"5\" name=\"Notes Placeholder 4\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"body\" sz=\"quarter\" idx=\"3\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"685800\" y=\"4400550\"/><a:ext cx=\"5486400\" cy=\"3600450\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert=\"horz\" lIns=\"91440\" tIns=\"45720\" rIns=\"91440\" bIns=\"45720\" rtlCol=\"0\"/><a:lstStyle/><a:p><a:pPr lvl=\"0\"/><a:r><a:rPr lang=\"en-US\"/><a:t>Click to edit Master text styles</a:t></a:r></a:p><a:p><a:pPr lvl=\"1\"/><a:r><a:rPr lang=\"en-US\"/><a:t>Second level</a:t></a:r></a:p><a:p><a:pPr lvl=\"2\"/><a:r><a:rPr lang=\"en-US\"/><a:t>Third level</a:t></a:r></a:p><a:p><a:pPr lvl=\"3\"/><a:r><a:rPr lang=\"en-US\"/><a:t>Fourth level</a:t></a:r></a:p><a:p><a:pPr lvl=\"4\"/><a:r><a:rPr lang=\"en-US\"/><a:t>Fifth level</a:t></a:r></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\"6\" name=\"Footer Placeholder 5\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"ftr\" sz=\"quarter\" idx=\"4\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"0\" y=\"8685213\"/><a:ext cx=\"2971800\" cy=\"458787\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert=\"horz\" lIns=\"91440\" tIns=\"45720\" rIns=\"91440\" bIns=\"45720\" rtlCol=\"0\" anchor=\"b\"/><a:lstStyle><a:lvl1pPr algn=\"l\"><a:defRPr sz=\"1200\"/></a:lvl1pPr></a:lstStyle><a:p><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\"7\" name=\"Slide Number Placeholder 6\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"sldNum\" sz=\"quarter\" idx=\"5\"/></p:nvPr></p:nvSpPr><p:spPr><a:xfrm><a:off x=\"3884613\" y=\"8685213\"/><a:ext cx=\"2971800\" cy=\"458787\"/></a:xfrm><a:prstGeom prst=\"rect\"><a:avLst/></a:prstGeom></p:spPr><p:txBody><a:bodyPr vert=\"horz\" lIns=\"91440\" tIns=\"45720\" rIns=\"91440\" bIns=\"45720\" rtlCol=\"0\" anchor=\"b\"/><a:lstStyle><a:lvl1pPr algn=\"r\"><a:defRPr sz=\"1200\"/></a:lvl1pPr></a:lstStyle><a:p><a:fld id=\"{CE5E9CC1-C706-0F49-92D6-E571CC5EEA8F}\" type=\"slidenum\"><a:rPr lang=\"en-US\"/><a:t>‹#›</a:t></a:fld><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp></p:spTree><p:extLst><p:ext uri=\"{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}\"><p14:creationId xmlns:p14=\"http://schemas.microsoft.com/office/powerpoint/2010/main\" val=\"1024086991\"/></p:ext></p:extLst></p:cSld><p:clrMap bg1=\"lt1\" tx1=\"dk1\" bg2=\"lt2\" tx2=\"dk2\" accent1=\"accent1\" accent2=\"accent2\" accent3=\"accent3\" accent4=\"accent4\" accent5=\"accent5\" accent6=\"accent6\" hlink=\"hlink\" folHlink=\"folHlink\"/><p:notesStyle><a:lvl1pPr marL=\"0\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl1pPr><a:lvl2pPr marL=\"457200\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl2pPr><a:lvl3pPr marL=\"914400\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl3pPr><a:lvl4pPr marL=\"1371600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl4pPr><a:lvl5pPr marL=\"1828800\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl5pPr><a:lvl6pPr marL=\"2286000\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl6pPr><a:lvl7pPr marL=\"2743200\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl7pPr><a:lvl8pPr marL=\"3200400\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl8pPr><a:lvl9pPr marL=\"3657600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl9pPr></p:notesStyle></p:notesMaster>`;\n}\n/**\n * Creates Notes Slide (`ppt/notesSlides/notesSlide1.xml`)\n * @param {PresSlide} slide - the slide object to transform into XML\n * @return {string} XML\n */\nfunction makeXmlNotesSlide(slide) {\n return (`<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<p:notes xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"><p:cSld><p:spTree><p:nvGrpSpPr><p:cNvPr id=\"1\" name=\"\"/><p:cNvGrpSpPr/><p:nvPr/></p:nvGrpSpPr><p:grpSpPr><a:xfrm><a:off x=\"0\" y=\"0\"/><a:ext cx=\"0\" cy=\"0\"/><a:chOff x=\"0\" y=\"0\"/><a:chExt cx=\"0\" cy=\"0\"/></a:xfrm></p:grpSpPr><p:sp><p:nvSpPr><p:cNvPr id=\"2\" name=\"Slide Image Placeholder 1\"/><p:cNvSpPr><a:spLocks noGrp=\"1\" noRot=\"1\" noChangeAspect=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"sldImg\"/></p:nvPr></p:nvSpPr><p:spPr/></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\"3\" name=\"Notes Placeholder 2\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"body\" idx=\"1\"/></p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:r><a:rPr lang=\"en-US\" dirty=\"0\"/><a:t>${encodeXmlEntities(getNotesFromSlide(slide))}</a:t></a:r><a:endParaRPr lang=\"en-US\" dirty=\"0\"/></a:p></p:txBody></p:sp><p:sp><p:nvSpPr><p:cNvPr id=\"4\" name=\"Slide Number Placeholder 3\"/><p:cNvSpPr><a:spLocks noGrp=\"1\"/></p:cNvSpPr><p:nvPr><p:ph type=\"sldNum\" sz=\"quarter\" idx=\"10\"/></p:nvPr></p:nvSpPr><p:spPr/><p:txBody><a:bodyPr/><a:lstStyle/><a:p><a:fld id=\"${SLDNUMFLDID}\" type=\"slidenum\"><a:rPr lang=\"en-US\"/><a:t>${slide._slideNum}</a:t></a:fld><a:endParaRPr lang=\"en-US\"/></a:p></p:txBody></p:sp></p:spTree><p:extLst><p:ext uri=\"{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}\"><p14:creationId xmlns:p14=\"http://schemas.microsoft.com/office/powerpoint/2010/main\" val=\"1024086991\"/></p:ext></p:extLst></p:cSld><p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:notes>`);\n}\n/**\n * Generates the XML layout resource from a layout object\n * @param {SlideLayout} layout - slide layout (master)\n * @return {string} XML\n */\nfunction makeXmlLayout(layout) {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n\t\t<p:sldLayout xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\" preserve=\"1\">\n\t\t${slideObjectToXml(layout)}\n\t\t<p:clrMapOvr><a:masterClrMapping/></p:clrMapOvr></p:sldLayout>`;\n}\n/**\n * Creates Slide Master 1 (`ppt/slideMasters/slideMaster1.xml`)\n * @param {PresSlide} slide - slide object that represents master slide layout\n * @param {SlideLayout[]} layouts - slide layouts\n * @return {string} XML\n */\nfunction makeXmlMaster(slide, layouts) {\n // NOTE: Pass layouts as static rels because they are not referenced any time\n const layoutDefs = layouts.map((_layoutDef, idx) => `<p:sldLayoutId id=\"${LAYOUT_IDX_SERIES_BASE + idx}\" r:id=\"rId${slide._rels.length + idx + 1}\"/>`);\n let strXml = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' + CRLF;\n strXml +=\n '<p:sldMaster xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\">';\n strXml += slideObjectToXml(slide);\n strXml +=\n '<p:clrMap bg1=\"lt1\" tx1=\"dk1\" bg2=\"lt2\" tx2=\"dk2\" accent1=\"accent1\" accent2=\"accent2\" accent3=\"accent3\" accent4=\"accent4\" accent5=\"accent5\" accent6=\"accent6\" hlink=\"hlink\" folHlink=\"folHlink\"/>';\n strXml += '<p:sldLayoutIdLst>' + layoutDefs.join('') + '</p:sldLayoutIdLst>';\n strXml += '<p:hf sldNum=\"0\" hdr=\"0\" ftr=\"0\" dt=\"0\"/>';\n strXml +=\n '<p:txStyles>' +\n ' <p:titleStyle>' +\n ' <a:lvl1pPr algn=\"ctr\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"0\"/></a:spcBef><a:buNone/><a:defRPr sz=\"4400\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mj-lt\"/><a:ea typeface=\"+mj-ea\"/><a:cs typeface=\"+mj-cs\"/></a:defRPr></a:lvl1pPr>' +\n ' </p:titleStyle>' +\n ' <p:bodyStyle>' +\n ' <a:lvl1pPr marL=\"342900\" indent=\"-342900\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"•\"/><a:defRPr sz=\"3200\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl1pPr>' +\n ' <a:lvl2pPr marL=\"742950\" indent=\"-285750\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"–\"/><a:defRPr sz=\"2800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl2pPr>' +\n ' <a:lvl3pPr marL=\"1143000\" indent=\"-228600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"•\"/><a:defRPr sz=\"2400\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl3pPr>' +\n ' <a:lvl4pPr marL=\"1600200\" indent=\"-228600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"–\"/><a:defRPr sz=\"2000\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl4pPr>' +\n ' <a:lvl5pPr marL=\"2057400\" indent=\"-228600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"»\"/><a:defRPr sz=\"2000\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl5pPr>' +\n ' <a:lvl6pPr marL=\"2514600\" indent=\"-228600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"•\"/><a:defRPr sz=\"2000\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl6pPr>' +\n ' <a:lvl7pPr marL=\"2971800\" indent=\"-228600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"•\"/><a:defRPr sz=\"2000\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl7pPr>' +\n ' <a:lvl8pPr marL=\"3429000\" indent=\"-228600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"•\"/><a:defRPr sz=\"2000\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl8pPr>' +\n ' <a:lvl9pPr marL=\"3886200\" indent=\"-228600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:spcBef><a:spcPct val=\"20000\"/></a:spcBef><a:buFont typeface=\"Arial\" pitchFamily=\"34\" charset=\"0\"/><a:buChar char=\"•\"/><a:defRPr sz=\"2000\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl9pPr>' +\n ' </p:bodyStyle>' +\n ' <p:otherStyle>' +\n ' <a:defPPr><a:defRPr lang=\"en-US\"/></a:defPPr>' +\n ' <a:lvl1pPr marL=\"0\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl1pPr>' +\n ' <a:lvl2pPr marL=\"457200\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl2pPr>' +\n ' <a:lvl3pPr marL=\"914400\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl3pPr>' +\n ' <a:lvl4pPr marL=\"1371600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl4pPr>' +\n ' <a:lvl5pPr marL=\"1828800\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl5pPr>' +\n ' <a:lvl6pPr marL=\"2286000\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl6pPr>' +\n ' <a:lvl7pPr marL=\"2743200\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl7pPr>' +\n ' <a:lvl8pPr marL=\"3200400\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl8pPr>' +\n ' <a:lvl9pPr marL=\"3657600\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\"><a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/></a:defRPr></a:lvl9pPr>' +\n ' </p:otherStyle>' +\n '</p:txStyles>';\n strXml += '</p:sldMaster>';\n return strXml;\n}\n/**\n * Generates XML string for a slide layout relation file\n * @param {number} layoutNumber - 1-indexed number of a layout that relations are generated for\n * @param {SlideLayout[]} slideLayouts - Slide Layouts\n * @return {string} XML\n */\nfunction makeXmlSlideLayoutRel(layoutNumber, slideLayouts) {\n return slideObjectRelationsToXml(slideLayouts[layoutNumber - 1], [\n {\n target: '../slideMasters/slideMaster1.xml',\n type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster',\n },\n ]);\n}\n/**\n * Creates `ppt/_rels/slide*.xml.rels`\n * @param {PresSlide[]} slides\n * @param {SlideLayout[]} slideLayouts - Slide Layout(s)\n * @param {number} `slideNumber` 1-indexed number of a layout that relations are generated for\n * @return {string} XML\n */\nfunction makeXmlSlideRel(slides, slideLayouts, slideNumber) {\n return slideObjectRelationsToXml(slides[slideNumber - 1], [\n {\n target: `../slideLayouts/slideLayout${getLayoutIdxForSlide(slides, slideLayouts, slideNumber)}.xml`,\n type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout',\n },\n {\n target: `../notesSlides/notesSlide${slideNumber}.xml`,\n type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide',\n },\n ]);\n}\n/**\n * Generates XML string for a slide relation file.\n * @param {number} slideNumber - 1-indexed number of a layout that relations are generated for\n * @return {string} XML\n */\nfunction makeXmlNotesSlideRel(slideNumber) {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n\t\t<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\n\t\t\t<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster\" Target=\"../notesMasters/notesMaster1.xml\"/>\n\t\t\t<Relationship Id=\"rId2\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide\" Target=\"../slides/slide${slideNumber}.xml\"/>\n\t\t</Relationships>`;\n}\n/**\n * Creates `ppt/slideMasters/_rels/slideMaster1.xml.rels`\n * @param {PresSlide} masterSlide - Slide object\n * @param {SlideLayout[]} slideLayouts - Slide Layouts\n * @return {string} XML\n */\nfunction makeXmlMasterRel(masterSlide, slideLayouts) {\n const defaultRels = slideLayouts.map((_layoutDef, idx) => ({\n target: `../slideLayouts/slideLayout${idx + 1}.xml`,\n type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout',\n }));\n defaultRels.push({ target: '../theme/theme1.xml', type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme' });\n return slideObjectRelationsToXml(masterSlide, defaultRels);\n}\n/**\n * Creates `ppt/notesMasters/_rels/notesMaster1.xml.rels`\n * @return {string} XML\n */\nfunction makeXmlNotesMasterRel() {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\n\t\t<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\" Target=\"../theme/theme1.xml\"/>\n\t\t</Relationships>`;\n}\n/**\n * For the passed slide number, resolves name of a layout that is used for.\n * @param {PresSlide[]} slides - srray of slides\n * @param {SlideLayout[]} slideLayouts - array of slideLayouts\n * @param {number} slideNumber\n * @return {number} slide number\n */\nfunction getLayoutIdxForSlide(slides, slideLayouts, slideNumber) {\n for (let i = 0; i < slideLayouts.length; i++) {\n if (slideLayouts[i]._name === slides[slideNumber - 1]._slideLayout._name) {\n return i + 1;\n }\n }\n // IMPORTANT: Return 1 (for `slideLayout1.xml`) when no def is found\n // So all objects are in Layout1 and every slide that references it uses this layout.\n return 1;\n}\n// XML-GEN: Last 5 functions create root /ppt files\n/**\n * Creates `ppt/theme/theme1.xml`\n * @return {string} XML\n */\nfunction makeXmlTheme(pres) {\n var _a, _b, _c, _d;\n const majorFont = ((_a = pres.theme) === null || _a === void 0 ? void 0 : _a.headFontFace) ? `<a:latin typeface=\"${(_b = pres.theme) === null || _b === void 0 ? void 0 : _b.headFontFace}\"/>` : '<a:latin typeface=\"Calibri Light\" panose=\"020F0302020204030204\"/>';\n const minorFont = ((_c = pres.theme) === null || _c === void 0 ? void 0 : _c.bodyFontFace) ? `<a:latin typeface=\"${(_d = pres.theme) === null || _d === void 0 ? void 0 : _d.bodyFontFace}\"/>` : '<a:latin typeface=\"Calibri\" panose=\"020F0502020204030204\"/>';\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"Office Theme\"><a:themeElements><a:clrScheme name=\"Office\"><a:dk1><a:sysClr val=\"windowText\" lastClr=\"000000\"/></a:dk1><a:lt1><a:sysClr val=\"window\" lastClr=\"FFFFFF\"/></a:lt1><a:dk2><a:srgbClr val=\"44546A\"/></a:dk2><a:lt2><a:srgbClr val=\"E7E6E6\"/></a:lt2><a:accent1><a:srgbClr val=\"4472C4\"/></a:accent1><a:accent2><a:srgbClr val=\"ED7D31\"/></a:accent2><a:accent3><a:srgbClr val=\"A5A5A5\"/></a:accent3><a:accent4><a:srgbClr val=\"FFC000\"/></a:accent4><a:accent5><a:srgbClr val=\"5B9BD5\"/></a:accent5><a:accent6><a:srgbClr val=\"70AD47\"/></a:accent6><a:hlink><a:srgbClr val=\"0563C1\"/></a:hlink><a:folHlink><a:srgbClr val=\"954F72\"/></a:folHlink></a:clrScheme><a:fontScheme name=\"Office\"><a:majorFont>${majorFont}<a:ea typeface=\"\"/><a:cs typeface=\"\"/><a:font script=\"Jpan\" typeface=\"游ゴシック Light\"/><a:font script=\"Hang\" typeface=\"맑은 고딕\"/><a:font script=\"Hans\" typeface=\"等线 Light\"/><a:font script=\"Hant\" typeface=\"新細明體\"/><a:font script=\"Arab\" typeface=\"Times New Roman\"/><a:font script=\"Hebr\" typeface=\"Times New Roman\"/><a:font script=\"Thai\" typeface=\"Angsana New\"/><a:font script=\"Ethi\" typeface=\"Nyala\"/><a:font script=\"Beng\" typeface=\"Vrinda\"/><a:font script=\"Gujr\" typeface=\"Shruti\"/><a:font script=\"Khmr\" typeface=\"MoolBoran\"/><a:font script=\"Knda\" typeface=\"Tunga\"/><a:font script=\"Guru\" typeface=\"Raavi\"/><a:font script=\"Cans\" typeface=\"Euphemia\"/><a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/><a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/><a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/><a:font script=\"Thaa\" typeface=\"MV Boli\"/><a:font script=\"Deva\" typeface=\"Mangal\"/><a:font script=\"Telu\" typeface=\"Gautami\"/><a:font script=\"Taml\" typeface=\"Latha\"/><a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Orya\" typeface=\"Kalinga\"/><a:font script=\"Mlym\" typeface=\"Kartika\"/><a:font script=\"Laoo\" typeface=\"DokChampa\"/><a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/><a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/><a:font script=\"Viet\" typeface=\"Times New Roman\"/><a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/><a:font script=\"Geor\" typeface=\"Sylfaen\"/><a:font script=\"Armn\" typeface=\"Arial\"/><a:font script=\"Bugi\" typeface=\"Leelawadee UI\"/><a:font script=\"Bopo\" typeface=\"Microsoft JhengHei\"/><a:font script=\"Java\" typeface=\"Javanese Text\"/><a:font script=\"Lisu\" typeface=\"Segoe UI\"/><a:font script=\"Mymr\" typeface=\"Myanmar Text\"/><a:font script=\"Nkoo\" typeface=\"Ebrima\"/><a:font script=\"Olck\" typeface=\"Nirmala UI\"/><a:font script=\"Osma\" typeface=\"Ebrima\"/><a:font script=\"Phag\" typeface=\"Phagspa\"/><a:font script=\"Syrn\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Syrj\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Syre\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Sora\" typeface=\"Nirmala UI\"/><a:font script=\"Tale\" typeface=\"Microsoft Tai Le\"/><a:font script=\"Talu\" typeface=\"Microsoft New Tai Lue\"/><a:font script=\"Tfng\" typeface=\"Ebrima\"/></a:majorFont><a:minorFont>${minorFont}<a:ea typeface=\"\"/><a:cs typeface=\"\"/><a:font script=\"Jpan\" typeface=\"游ゴシック\"/><a:font script=\"Hang\" typeface=\"맑은 고딕\"/><a:font script=\"Hans\" typeface=\"等线\"/><a:font script=\"Hant\" typeface=\"新細明體\"/><a:font script=\"Arab\" typeface=\"Arial\"/><a:font script=\"Hebr\" typeface=\"Arial\"/><a:font script=\"Thai\" typeface=\"Cordia New\"/><a:font script=\"Ethi\" typeface=\"Nyala\"/><a:font script=\"Beng\" typeface=\"Vrinda\"/><a:font script=\"Gujr\" typeface=\"Shruti\"/><a:font script=\"Khmr\" typeface=\"DaunPenh\"/><a:font script=\"Knda\" typeface=\"Tunga\"/><a:font script=\"Guru\" typeface=\"Raavi\"/><a:font script=\"Cans\" typeface=\"Euphemia\"/><a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/><a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/><a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/><a:font script=\"Thaa\" typeface=\"MV Boli\"/><a:font script=\"Deva\" typeface=\"Mangal\"/><a:font script=\"Telu\" typeface=\"Gautami\"/><a:font script=\"Taml\" typeface=\"Latha\"/><a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Orya\" typeface=\"Kalinga\"/><a:font script=\"Mlym\" typeface=\"Kartika\"/><a:font script=\"Laoo\" typeface=\"DokChampa\"/><a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/><a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/><a:font script=\"Viet\" typeface=\"Arial\"/><a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/><a:font script=\"Geor\" typeface=\"Sylfaen\"/><a:font script=\"Armn\" typeface=\"Arial\"/><a:font script=\"Bugi\" typeface=\"Leelawadee UI\"/><a:font script=\"Bopo\" typeface=\"Microsoft JhengHei\"/><a:font script=\"Java\" typeface=\"Javanese Text\"/><a:font script=\"Lisu\" typeface=\"Segoe UI\"/><a:font script=\"Mymr\" typeface=\"Myanmar Text\"/><a:font script=\"Nkoo\" typeface=\"Ebrima\"/><a:font script=\"Olck\" typeface=\"Nirmala UI\"/><a:font script=\"Osma\" typeface=\"Ebrima\"/><a:font script=\"Phag\" typeface=\"Phagspa\"/><a:font script=\"Syrn\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Syrj\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Syre\" typeface=\"Estrangelo Edessa\"/><a:font script=\"Sora\" typeface=\"Nirmala UI\"/><a:font script=\"Tale\" typeface=\"Microsoft Tai Le\"/><a:font script=\"Talu\" typeface=\"Microsoft New Tai Lue\"/><a:font script=\"Tfng\" typeface=\"Ebrima\"/></a:minorFont></a:fontScheme><a:fmtScheme name=\"Office\"><a:fillStyleLst><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"110000\"/><a:satMod val=\"105000\"/><a:tint val=\"67000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"105000\"/><a:satMod val=\"103000\"/><a:tint val=\"73000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"105000\"/><a:satMod val=\"109000\"/><a:tint val=\"81000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:satMod val=\"103000\"/><a:lumMod val=\"102000\"/><a:tint val=\"94000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:satMod val=\"110000\"/><a:lumMod val=\"100000\"/><a:shade val=\"100000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:lumMod val=\"99000\"/><a:satMod val=\"120000\"/><a:shade val=\"78000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w=\"6350\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln><a:ln w=\"12700\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln><a:ln w=\"19050\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/><a:miter lim=\"800000\"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst/></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad=\"57150\" dist=\"19050\" dir=\"5400000\" algn=\"ctr\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"63000\"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:solidFill><a:schemeClr val=\"phClr\"><a:tint val=\"95000\"/><a:satMod val=\"170000\"/></a:schemeClr></a:solidFill><a:gradFill rotWithShape=\"1\"><a:gsLst><a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"93000\"/><a:satMod val=\"150000\"/><a:shade val=\"98000\"/><a:lumMod val=\"102000\"/></a:schemeClr></a:gs><a:gs pos=\"50000\"><a:schemeClr val=\"phClr\"><a:tint val=\"98000\"/><a:satMod val=\"130000\"/><a:shade val=\"90000\"/><a:lumMod val=\"103000\"/></a:schemeClr></a:gs><a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"63000\"/><a:satMod val=\"120000\"/></a:schemeClr></a:gs></a:gsLst><a:lin ang=\"5400000\" scaled=\"0\"/></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/><a:extLst><a:ext uri=\"{05A4C25C-085E-4340-85A3-A5531E510DB2}\"><thm15:themeFamily xmlns:thm15=\"http://schemas.microsoft.com/office/thememl/2012/main\" name=\"Office Theme\" id=\"{62F939B6-93AF-4DB8-9C6B-D6C7DFDC589F}\" vid=\"{4A3C46E8-61CC-4603-A589-7422A47A8E4A}\"/></a:ext></a:extLst></a:theme>`;\n}\n/**\n * Create presentation file (`ppt/presentation.xml`)\n * @see https://docs.microsoft.com/en-us/office/open-xml/structure-of-a-presentationml-document\n * @see http://www.datypic.com/sc/ooxml/t-p_CT_Presentation.html\n * @param {IPresentationProps} pres - presentation\n * @return {string} XML\n */\nfunction makeXmlPresentation(pres) {\n let strXml = `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}` +\n '<p:presentation xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" ' +\n `xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\" ${pres.rtlMode ? 'rtl=\"1\"' : ''} saveSubsetFonts=\"1\" autoCompressPictures=\"0\">`;\n // STEP 1: Add slide master (SPEC: tag 1 under <presentation>)\n strXml += '<p:sldMasterIdLst><p:sldMasterId id=\"2147483648\" r:id=\"rId1\"/></p:sldMasterIdLst>';\n // STEP 2: Add all Slides (SPEC: tag 3 under <presentation>)\n strXml += '<p:sldIdLst>';\n pres.slides.forEach(slide => (strXml += `<p:sldId id=\"${slide._slideId}\" r:id=\"rId${slide._rId}\"/>`));\n strXml += '</p:sldIdLst>';\n // STEP 3: Add Notes Master (SPEC: tag 2 under <presentation>)\n // (NOTE: length+2 is from `presentation.xml.rels` func (since we have to match this rId, we just use same logic))\n // IMPORTANT: In this order (matches PPT2019) PPT will give corruption message on open!\n // IMPORTANT: Placing this before `<p:sldIdLst>` causes warning in modern powerpoint!\n // IMPORTANT: Presentations open without warning Without this line, however, the pres isnt preview in Finder anymore or viewable in iOS!\n strXml += `<p:notesMasterIdLst><p:notesMasterId r:id=\"rId${pres.slides.length + 2}\"/></p:notesMasterIdLst>`;\n // STEP 4: Add sizes\n strXml += `<p:sldSz cx=\"${pres.presLayout.width}\" cy=\"${pres.presLayout.height}\"/>`;\n strXml += `<p:notesSz cx=\"${pres.presLayout.height}\" cy=\"${pres.presLayout.width}\"/>`;\n // STEP 5: Add text styles\n strXml += '<p:defaultTextStyle>';\n for (let idy = 1; idy < 10; idy++) {\n strXml +=\n `<a:lvl${idy}pPr marL=\"${(idy - 1) * 457200}\" algn=\"l\" defTabSz=\"914400\" rtl=\"0\" eaLnBrk=\"1\" latinLnBrk=\"0\" hangingPunct=\"1\">` +\n '<a:defRPr sz=\"1800\" kern=\"1200\"><a:solidFill><a:schemeClr val=\"tx1\"/></a:solidFill><a:latin typeface=\"+mn-lt\"/><a:ea typeface=\"+mn-ea\"/><a:cs typeface=\"+mn-cs\"/>' +\n `</a:defRPr></a:lvl${idy}pPr>`;\n }\n strXml += '</p:defaultTextStyle>';\n // STEP 6: Add Sections (if any)\n if (pres.sections && pres.sections.length > 0) {\n strXml += '<p:extLst><p:ext uri=\"{521415D9-36F7-43E2-AB2F-B90AF26B5E84}\">';\n strXml += '<p14:sectionLst xmlns:p14=\"http://schemas.microsoft.com/office/powerpoint/2010/main\">';\n pres.sections.forEach(sect => {\n strXml += `<p14:section name=\"${encodeXmlEntities(sect.title)}\" id=\"{${getUuid('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')}}\"><p14:sldIdLst>`;\n sect._slides.forEach(slide => (strXml += `<p14:sldId id=\"${slide._slideId}\"/>`));\n strXml += '</p14:sldIdLst></p14:section>';\n });\n strXml += '</p14:sectionLst></p:ext>';\n strXml += '<p:ext uri=\"{EFAFB233-063F-42B5-8137-9DF3F51BA10A}\"><p15:sldGuideLst xmlns:p15=\"http://schemas.microsoft.com/office/powerpoint/2012/main\"/></p:ext>';\n strXml += '</p:extLst>';\n }\n // Done\n strXml += '</p:presentation>';\n return strXml;\n}\n/**\n * Create `ppt/presProps.xml`\n * @return {string} XML\n */\nfunction makeXmlPresProps() {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<p:presentationPr xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"/>`;\n}\n/**\n * Create `ppt/tableStyles.xml`\n * @see: http://openxmldeveloper.org/discussions/formats/f/13/p/2398/8107.aspx\n * @return {string} XML\n */\nfunction makeXmlTableStyles() {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<a:tblStyleLst xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" def=\"{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}\"/>`;\n}\n/**\n * Creates `ppt/viewProps.xml`\n * @return {string} XML\n */\nfunction makeXmlViewProps() {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>${CRLF}<p:viewPr xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:p=\"http://schemas.openxmlformats.org/presentationml/2006/main\"><p:normalViewPr horzBarState=\"maximized\"><p:restoredLeft sz=\"15611\"/><p:restoredTop sz=\"94610\"/></p:normalViewPr><p:slideViewPr><p:cSldViewPr snapToGrid=\"0\" snapToObjects=\"1\"><p:cViewPr varScale=\"1\"><p:scale><a:sx n=\"136\" d=\"100\"/><a:sy n=\"136\" d=\"100\"/></p:scale><p:origin x=\"216\" y=\"312\"/></p:cViewPr><p:guideLst/></p:cSldViewPr></p:slideViewPr><p:notesTextViewPr><p:cViewPr><p:scale><a:sx n=\"1\" d=\"1\"/><a:sy n=\"1\" d=\"1\"/></p:scale><p:origin x=\"0\" y=\"0\"/></p:cViewPr></p:notesTextViewPr><p:gridSpacing cx=\"76200\" cy=\"76200\"/></p:viewPr>`;\n}\n\n/**\n * :: pptxgen.ts ::\n *\n * JavaScript framework that creates PowerPoint (pptx) presentations\n * https://github.com/gitbrent/PptxGenJS\n *\n * This framework is released under the MIT Public License (MIT)\n *\n * PptxGenJS (C) 2015-present Brent Ely -- https://github.com/gitbrent\n *\n * Some code derived from the OfficeGen project:\n * github.com/Ziv-Barber/officegen/ (Copyright 2013 Ziv Barber)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nconst VERSION = '4.0.1';\nclass PptxGenJS {\n set layout(value) {\n const newLayout = this.LAYOUTS[value];\n if (newLayout) {\n this._layout = value;\n this._presLayout = newLayout;\n }\n else {\n throw new Error('UNKNOWN-LAYOUT');\n }\n }\n get layout() {\n return this._layout;\n }\n get version() {\n return this._version;\n }\n set author(value) {\n this._author = value;\n }\n get author() {\n return this._author;\n }\n set company(value) {\n this._company = value;\n }\n get company() {\n return this._company;\n }\n set revision(value) {\n this._revision = value;\n }\n get revision() {\n return this._revision;\n }\n set subject(value) {\n this._subject = value;\n }\n get subject() {\n return this._subject;\n }\n set theme(value) {\n this._theme = value;\n }\n get theme() {\n return this._theme;\n }\n set title(value) {\n this._title = value;\n }\n get title() {\n return this._title;\n }\n set rtlMode(value) {\n this._rtlMode = value;\n }\n get rtlMode() {\n return this._rtlMode;\n }\n get masterSlide() {\n return this._masterSlide;\n }\n get slides() {\n return this._slides;\n }\n get sections() {\n return this._sections;\n }\n get slideLayouts() {\n return this._slideLayouts;\n }\n get AlignH() {\n return this._alignH;\n }\n get AlignV() {\n return this._alignV;\n }\n get ChartType() {\n return this._chartType;\n }\n get OutputType() {\n return this._outputType;\n }\n get presLayout() {\n return this._presLayout;\n }\n get SchemeColor() {\n return this._schemeColor;\n }\n get ShapeType() {\n return this._shapeType;\n }\n get charts() {\n return this._charts;\n }\n get colors() {\n return this._colors;\n }\n get shapes() {\n return this._shapes;\n }\n constructor() {\n /**\n * PptxGenJS Library Version\n */\n this._version = VERSION;\n // Exposed class props\n this._alignH = AlignH;\n this._alignV = AlignV;\n this._chartType = ChartType;\n this._outputType = OutputType;\n this._schemeColor = SchemeColor;\n this._shapeType = ShapeType;\n /**\n * @depricated use `ChartType`\n */\n this._charts = CHART_TYPE;\n /**\n * @depricated use `SchemeColor`\n */\n this._colors = SCHEME_COLOR_NAMES;\n /**\n * @depricated use `ShapeType`\n */\n this._shapes = SHAPE_TYPE;\n /**\n * Provides an API for `addTableDefinition` to create slides as needed for auto-paging\n * @param {AddSlideProps} options - slide masterName and/or sectionTitle\n * @return {PresSlide} new Slide\n */\n this.addNewSlide = (options) => {\n // Continue using sections if the first slide using auto-paging has a Section\n const sectAlreadyInUse = this.sections.length > 0 &&\n this.sections[this.sections.length - 1]._slides.filter(slide => slide._slideNum === this.slides[this.slides.length - 1]._slideNum).length > 0;\n options.sectionTitle = sectAlreadyInUse ? this.sections[this.sections.length - 1].title : null;\n return this.addSlide(options);\n };\n /**\n * Provides an API for `addTableDefinition` to get slide reference by number\n * @param {number} slideNum - slide number\n * @return {PresSlide} Slide\n * @since 3.0.0\n */\n this.getSlide = (slideNum) => this.slides.filter(slide => slide._slideNum === slideNum)[0];\n /**\n * Enables the `Slide` class to set PptxGenJS [Presentation] master/layout slidenumbers\n * @param {SlideNumberProps} slideNum - slide number config\n */\n this.setSlideNumber = (slideNum) => {\n // 1: Add slideNumber to slideMaster1.xml\n this.masterSlide._slideNumberProps = slideNum;\n // 2: Add slideNumber to DEF_PRES_LAYOUT_NAME layout\n this.slideLayouts.filter(layout => layout._name === DEF_PRES_LAYOUT_NAME)[0]._slideNumberProps = slideNum;\n };\n /**\n * Create all chart and media rels for this Presentation\n * @param {PresSlide | SlideLayout} slide - slide with rels\n * @param {JSZip} zip - JSZip instance\n * @param {Promise<string>[]} chartPromises - promise array\n */\n this.createChartMediaRels = (slide, zip, chartPromises) => {\n slide._relsChart.forEach(rel => chartPromises.push(createExcelWorksheet(rel, zip)));\n slide._relsMedia.forEach(rel => {\n if (rel.type !== 'online' && rel.type !== 'hyperlink') {\n // A: Loop vars\n let data = rel.data && typeof rel.data === 'string' ? rel.data : '';\n // B: Users will undoubtedly pass various string formats, so correct prefixes as needed\n if (!data.includes(',') && !data.includes(';'))\n data = 'image/png;base64,' + data;\n else if (!data.includes(','))\n data = 'image/png;base64,' + data;\n else if (!data.includes(';'))\n data = 'image/png;' + data;\n // C: Add media\n zip.file(rel.Target.replace('..', 'ppt'), data.split(',').pop(), { base64: true });\n }\n });\n };\n /**\n * Create and export the .pptx file\n * @param {string} exportName - output file type\n * @param {Blob} blobContent - Blob content\n * @return {Promise<string>} Promise with file name\n */\n this.writeFileToBrowser = (exportName, blobContent) => __awaiter(this, void 0, void 0, function* () {\n // STEP 1: Create element\n const eleLink = document.createElement('a');\n eleLink.setAttribute('style', 'display:none;');\n eleLink.dataset.interception = 'off'; // @see https://docs.microsoft.com/en-us/sharepoint/dev/spfx/hyperlinking\n document.body.appendChild(eleLink);\n // STEP 2: Download file to browser\n // DESIGN: Use `createObjectURL()` to D/L files in client browsers (FYI: synchronously executed)\n if (window.URL.createObjectURL) {\n const url = window.URL.createObjectURL(new Blob([blobContent], { type: 'application/vnd.openxmlformats-officedocument.presentationml.presentation' }));\n eleLink.href = url;\n eleLink.download = exportName;\n eleLink.click();\n // Clean-up (NOTE: Add a slight delay before removing to avoid 'blob:null' error in Firefox Issue#81)\n setTimeout(() => {\n window.URL.revokeObjectURL(url);\n document.body.removeChild(eleLink);\n }, 100);\n // Done\n return yield Promise.resolve(exportName);\n }\n });\n /**\n * Create and export the .pptx file\n * @param {WRITE_OUTPUT_TYPE} outputType - output file type\n * @return {Promise<string | ArrayBuffer | Blob | Buffer | Uint8Array>} Promise with data or stream (node) or filename (browser)\n */\n this.exportPresentation = (props) => __awaiter(this, void 0, void 0, function* () {\n const arrChartPromises = [];\n let arrMediaPromises = [];\n const zip = new JSZip();\n // STEP 1: Read/Encode all Media before zip as base64 content, etc. is required\n this.slides.forEach(slide => {\n arrMediaPromises = arrMediaPromises.concat(encodeSlideMediaRels(slide));\n });\n this.slideLayouts.forEach(layout => {\n arrMediaPromises = arrMediaPromises.concat(encodeSlideMediaRels(layout));\n });\n arrMediaPromises = arrMediaPromises.concat(encodeSlideMediaRels(this.masterSlide));\n // STEP 2: Wait for Promises (if any) then generate the PPTX file\n return yield Promise.all(arrMediaPromises).then(() => __awaiter(this, void 0, void 0, function* () {\n // A: Add empty placeholder objects to slides that don't already have them\n this.slides.forEach(slide => {\n if (slide._slideLayout)\n addPlaceholdersToSlideLayouts(slide);\n });\n // B: Add all required folders and files\n zip.folder('_rels');\n zip.folder('docProps');\n zip.folder('ppt').folder('_rels');\n zip.folder('ppt/charts').folder('_rels');\n zip.folder('ppt/embeddings');\n zip.folder('ppt/media');\n zip.folder('ppt/slideLayouts').folder('_rels');\n zip.folder('ppt/slideMasters').folder('_rels');\n zip.folder('ppt/slides').folder('_rels');\n zip.folder('ppt/theme');\n zip.folder('ppt/notesMasters').folder('_rels');\n zip.folder('ppt/notesSlides').folder('_rels');\n zip.file('[Content_Types].xml', makeXmlContTypes(this.slides, this.slideLayouts, this.masterSlide)); // TODO: pass only `this` like below! 20200206\n zip.file('_rels/.rels', makeXmlRootRels());\n zip.file('docProps/app.xml', makeXmlApp(this.slides, this.company)); // TODO: pass only `this` like below! 20200206\n zip.file('docProps/core.xml', makeXmlCore(this.title, this.subject, this.author, this.revision)); // TODO: pass only `this` like below! 20200206\n zip.file('ppt/_rels/presentation.xml.rels', makeXmlPresentationRels(this.slides));\n zip.file('ppt/theme/theme1.xml', makeXmlTheme(this));\n zip.file('ppt/presentation.xml', makeXmlPresentation(this));\n zip.file('ppt/presProps.xml', makeXmlPresProps());\n zip.file('ppt/tableStyles.xml', makeXmlTableStyles());\n zip.file('ppt/viewProps.xml', makeXmlViewProps());\n // C: Create a Layout/Master/Rel/Slide file for each SlideLayout and Slide\n this.slideLayouts.forEach((layout, idx) => {\n zip.file(`ppt/slideLayouts/slideLayout${idx + 1}.xml`, makeXmlLayout(layout));\n zip.file(`ppt/slideLayouts/_rels/slideLayout${idx + 1}.xml.rels`, makeXmlSlideLayoutRel(idx + 1, this.slideLayouts));\n });\n this.slides.forEach((slide, idx) => {\n zip.file(`ppt/slides/slide${idx + 1}.xml`, makeXmlSlide(slide));\n zip.file(`ppt/slides/_rels/slide${idx + 1}.xml.rels`, makeXmlSlideRel(this.slides, this.slideLayouts, idx + 1));\n // Create all slide notes related items. Notes of empty strings are created for slides which do not have notes specified, to keep track of _rels.\n zip.file(`ppt/notesSlides/notesSlide${idx + 1}.xml`, makeXmlNotesSlide(slide));\n zip.file(`ppt/notesSlides/_rels/notesSlide${idx + 1}.xml.rels`, makeXmlNotesSlideRel(idx + 1));\n });\n zip.file('ppt/slideMasters/slideMaster1.xml', makeXmlMaster(this.masterSlide, this.slideLayouts));\n zip.file('ppt/slideMasters/_rels/slideMaster1.xml.rels', makeXmlMasterRel(this.masterSlide, this.slideLayouts));\n zip.file('ppt/notesMasters/notesMaster1.xml', makeXmlNotesMaster());\n zip.file('ppt/notesMasters/_rels/notesMaster1.xml.rels', makeXmlNotesMasterRel());\n // D: Create all Rels (images, media, chart data)\n this.slideLayouts.forEach(layout => {\n this.createChartMediaRels(layout, zip, arrChartPromises);\n });\n this.slides.forEach(slide => {\n this.createChartMediaRels(slide, zip, arrChartPromises);\n });\n this.createChartMediaRels(this.masterSlide, zip, arrChartPromises);\n // E: Wait for Promises (if any) then generate the PPTX file\n return yield Promise.all(arrChartPromises).then(() => __awaiter(this, void 0, void 0, function* () {\n if (props.outputType === 'STREAM') {\n // A: stream file\n return yield zip.generateAsync({ type: 'nodebuffer', compression: props.compression ? 'DEFLATE' : 'STORE' });\n }\n else if (props.outputType) {\n // B: Node [fs]: Output type user option or default\n return yield zip.generateAsync({ type: props.outputType });\n }\n else {\n // C: Browser: Output blob as app/ms-pptx\n return yield zip.generateAsync({ type: 'blob', compression: props.compression ? 'DEFLATE' : 'STORE' });\n }\n }));\n }));\n });\n const layout4x3 = { name: 'screen4x3', width: 9144000, height: 6858000 };\n const layout16x9 = { name: 'screen16x9', width: 9144000, height: 5143500 };\n const layout16x10 = { name: 'screen16x10', width: 9144000, height: 5715000 };\n const layoutWide = { name: 'custom', width: 12192000, height: 6858000 };\n // Set available layouts\n this.LAYOUTS = {\n LAYOUT_4x3: layout4x3,\n LAYOUT_16x9: layout16x9,\n LAYOUT_16x10: layout16x10,\n LAYOUT_WIDE: layoutWide,\n };\n // Core\n this._author = 'PptxGenJS';\n this._company = 'PptxGenJS';\n this._revision = '1'; // Note: Must be a whole number\n this._subject = 'PptxGenJS Presentation';\n this._title = 'PptxGenJS Presentation';\n // PptxGenJS props\n this._presLayout = {\n name: this.LAYOUTS[DEF_PRES_LAYOUT].name,\n _sizeW: this.LAYOUTS[DEF_PRES_LAYOUT].width,\n _sizeH: this.LAYOUTS[DEF_PRES_LAYOUT].height,\n width: this.LAYOUTS[DEF_PRES_LAYOUT].width,\n height: this.LAYOUTS[DEF_PRES_LAYOUT].height,\n };\n this._rtlMode = false;\n //\n this._slideLayouts = [\n {\n _margin: DEF_SLIDE_MARGIN_IN,\n _name: DEF_PRES_LAYOUT_NAME,\n _presLayout: this._presLayout,\n _rels: [],\n _relsChart: [],\n _relsMedia: [],\n _slide: null,\n _slideNum: 1000,\n _slideNumberProps: null,\n _slideObjects: [],\n },\n ];\n this._slides = [];\n this._sections = [];\n this._masterSlide = {\n addChart: null,\n addImage: null,\n addMedia: null,\n addNotes: null,\n addShape: null,\n addTable: null,\n addText: null,\n //\n _name: null,\n _presLayout: this._presLayout,\n _rId: null,\n _rels: [],\n _relsChart: [],\n _relsMedia: [],\n _slideId: null,\n _slideLayout: null,\n _slideNum: null,\n _slideNumberProps: null,\n _slideObjects: [],\n };\n }\n // EXPORT METHODS\n /**\n * Export the current Presentation to stream\n * @param {WriteBaseProps} props - output properties\n * @returns {Promise<string | ArrayBuffer | Blob | Buffer | Uint8Array>} file stream\n */\n stream(props) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.exportPresentation({\n compression: props === null || props === void 0 ? void 0 : props.compression,\n outputType: 'STREAM',\n });\n });\n }\n /**\n * Export the current Presentation as JSZip content with the selected type\n * @param {WriteProps} props output properties\n * @returns {Promise<string | ArrayBuffer | Blob | Buffer | Uint8Array>} file content in selected type\n */\n write(props) {\n return __awaiter(this, void 0, void 0, function* () {\n // DEPRECATED: @deprecated v3.5.0 - outputType - [[remove in v4.0.0]]\n const propsOutpType = typeof props === 'object' && (props === null || props === void 0 ? void 0 : props.outputType) ? props.outputType : props ? props : null;\n const propsCompress = typeof props === 'object' && (props === null || props === void 0 ? void 0 : props.compression) ? props.compression : false;\n return yield this.exportPresentation({\n compression: propsCompress,\n outputType: propsOutpType,\n });\n });\n }\n /**\n * Export the current Presentation.\n * Write the generated presentation to disk (Node) or trigger a download (browser).\n * @param {WriteFileProps} props - output file properties\n * @returns {Promise<string>} the presentation name\n */\n writeFile(props) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n // STEP 1: Figure out where we are running\n const isNode = typeof process !== 'undefined' && !!((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node) && ((_b = process.release) === null || _b === void 0 ? void 0 : _b.name) === 'node';\n // STEP 2: Normalise the user arguments\n if (typeof props === 'string') {\n // DEPRECATED: @deprecated v3.5.0 - fileName - [[remove in v4.0.0]]\n console.warn('[WARNING] writeFile(string) is deprecated - pass { fileName } instead.');\n props = { fileName: props };\n }\n const { fileName: rawName = 'Presentation.pptx', compression = false } = props;\n const fileName = rawName.toLowerCase().endsWith('.pptx') ? rawName : `${rawName}.pptx`;\n // STEP 3: Get the binary/Blob from exportPresentation()\n const outputType = isNode ? 'nodebuffer' : null;\n const data = yield this.exportPresentation({ compression, outputType });\n // STEP 4: Write the file out\n if (isNode) {\n // Dynamically import to avoid bundling fs in the browser build\n const { promises: fs } = yield import('node:fs');\n const { writeFile } = fs;\n yield writeFile(fileName, data);\n return fileName;\n }\n // Browser branch - push a download\n yield this.writeFileToBrowser(fileName, data);\n return fileName;\n });\n }\n // PRESENTATION METHODS\n /**\n * Add a new Section to Presentation\n * @param {ISectionProps} section - section properties\n * @example pptx.addSection({ title:'Charts' });\n */\n addSection(section) {\n if (!section)\n console.warn('addSection requires an argument');\n else if (!section.title)\n console.warn('addSection requires a title');\n const newSection = {\n _type: 'user',\n _slides: [],\n title: section.title,\n };\n if (section.order)\n this.sections.splice(section.order, 0, newSection);\n else\n this._sections.push(newSection);\n }\n /**\n * Add a new Slide to Presentation\n * @param {AddSlideProps} options - slide options\n * @returns {PresSlide} the new Slide\n */\n addSlide(options) {\n // TODO: DEPRECATED: arg0 string \"masterSlideName\" dep as of 3.2.0\n const masterSlideName = typeof options === 'string' ? options : (options === null || options === void 0 ? void 0 : options.masterName) ? options.masterName : '';\n let slideLayout = {\n _name: this.LAYOUTS[DEF_PRES_LAYOUT].name,\n _presLayout: this.presLayout,\n _rels: [],\n _relsChart: [],\n _relsMedia: [],\n _slideNum: this.slides.length + 1,\n };\n if (masterSlideName) {\n const tmpLayout = this.slideLayouts.filter(layout => layout._name === masterSlideName)[0];\n if (tmpLayout)\n slideLayout = tmpLayout;\n }\n const newSlide = new Slide({\n addSlide: this.addNewSlide,\n getSlide: this.getSlide,\n presLayout: this.presLayout,\n setSlideNum: this.setSlideNumber,\n slideId: this.slides.length + 256,\n slideRId: this.slides.length + 2,\n slideNumber: this.slides.length + 1,\n slideLayout,\n });\n // A: Add slide to pres\n this._slides.push(newSlide);\n // B: Sections\n // B-1: Add slide to section (if any provided)\n // B-2: Handle slides without a section when sections are already is use (\"loose\" slides arent allowed, they all need a section)\n if (options === null || options === void 0 ? void 0 : options.sectionTitle) {\n const sect = this.sections.filter(section => section.title === options.sectionTitle)[0];\n if (!sect)\n console.warn(`addSlide: unable to find section with title: \"${options.sectionTitle}\"`);\n else\n sect._slides.push(newSlide);\n }\n else if (this.sections && this.sections.length > 0 && (!(options === null || options === void 0 ? void 0 : options.sectionTitle))) {\n const lastSect = this._sections[this.sections.length - 1];\n // CASE 1: The latest section is a default type - just add this one\n if (lastSect._type === 'default')\n lastSect._slides.push(newSlide);\n // CASE 2: There latest section is NOT a default type - create the defualt, add this slide\n else {\n this._sections.push({\n title: `Default-${this.sections.filter(sect => sect._type === 'default').length + 1}`,\n _type: 'default',\n _slides: [newSlide],\n });\n }\n }\n return newSlide;\n }\n /**\n * Create a custom Slide Layout in any size\n * @param {PresLayout} layout - layout properties\n * @example pptx.defineLayout({ name:'A3', width:16.5, height:11.7 });\n */\n defineLayout(layout) {\n // @see https://support.office.com/en-us/article/Change-the-size-of-your-slides-040a811c-be43-40b9-8d04-0de5ed79987e\n if (!layout)\n console.warn('defineLayout requires `{name, width, height}`');\n else if (!layout.name)\n console.warn('defineLayout requires `name`');\n else if (!layout.width)\n console.warn('defineLayout requires `width`');\n else if (!layout.height)\n console.warn('defineLayout requires `height`');\n else if (typeof layout.height !== 'number')\n console.warn('defineLayout `height` should be a number (inches)');\n else if (typeof layout.width !== 'number')\n console.warn('defineLayout `width` should be a number (inches)');\n this.LAYOUTS[layout.name] = {\n name: layout.name,\n _sizeW: Math.round(Number(layout.width) * EMU),\n _sizeH: Math.round(Number(layout.height) * EMU),\n width: Math.round(Number(layout.width) * EMU),\n height: Math.round(Number(layout.height) * EMU),\n };\n }\n /**\n * Create a new slide master [layout] for the Presentation\n * @param {SlideMasterProps} props - layout properties\n */\n defineSlideMaster(props) {\n // (ISSUE#406;PULL#1176) deep clone the props object to avoid mutating the original object\n const propsClone = JSON.parse(JSON.stringify(props));\n if (!propsClone.title)\n throw new Error('defineSlideMaster() object argument requires a `title` value. (https://gitbrent.github.io/PptxGenJS/docs/masters.html)');\n const newLayout = {\n _margin: propsClone.margin || DEF_SLIDE_MARGIN_IN,\n _name: propsClone.title,\n _presLayout: this.presLayout,\n _rels: [],\n _relsChart: [],\n _relsMedia: [],\n _slide: null,\n _slideNum: 1000 + this.slideLayouts.length + 1,\n _slideNumberProps: propsClone.slideNumber || null,\n _slideObjects: [],\n background: propsClone.background || null,\n bkgd: propsClone.bkgd || null,\n };\n // STEP 1: Create the Slide Master/Layout\n createSlideMaster(propsClone, newLayout);\n // STEP 2: Add it to layout defs\n this.slideLayouts.push(newLayout);\n // STEP 3: Add background (image data/path must be captured before `exportPresentation()` is called)\n if (propsClone.background || propsClone.bkgd)\n addBackgroundDefinition(propsClone.background, newLayout);\n // STEP 4: Add slideNumber to master slide (if any)\n if (newLayout._slideNumberProps && !this.masterSlide._slideNumberProps)\n this.masterSlide._slideNumberProps = newLayout._slideNumberProps;\n }\n // HTML-TO-SLIDES METHODS\n /**\n * Reproduces an HTML table as a PowerPoint table - including column widths, style, etc. - creates 1 or more slides as needed\n * @param {string} eleId - table HTML element ID\n * @param {TableToSlidesProps} options - generation options\n */\n tableToSlides(eleId, options = {}) {\n // @note `verbose` option is undocumented; used for verbose output of layout process\n genTableToSlides(this, eleId, options, (options === null || options === void 0 ? void 0 : options.masterSlideName) ? this.slideLayouts.filter(layout => layout._name === options.masterSlideName)[0] : null);\n }\n}\n\nexport { PptxGenJS as default };\n","/**\n * `@ai-matrx/alchemy/operate/pptx` — THE PowerPoint door. `buildPresentation` hands a fresh deck\n * to the caller's layout function and answers the .pptx Blob; pptxgenjs loads on first use.\n */\nimport type PptxGenJS from \"pptxgenjs\";\n\nexport type PptxDeck = PptxGenJS;\nexport type PresentationOptions = {\n title?: string;\n author?: string;\n subject?: string;\n /** Default LAYOUT_WIDE (16:9). */\n layout?: string;\n};\n\n/** Build a deck: `fill` adds slides to it; the .pptx comes back as a Blob (save it with kit's downloadFile). */\nexport async function buildPresentation(fill: (deck: PptxDeck) => void | Promise<void>, options: PresentationOptions = {}): Promise<Blob> {\n const { default: Pptx } = await import(\"pptxgenjs\");\n const deck = new Pptx();\n if (options.author) deck.author = options.author;\n if (options.title) deck.title = options.title;\n if (options.subject) deck.subject = options.subject;\n deck.layout = options.layout ?? \"LAYOUT_WIDE\";\n await fill(deck);\n return (await deck.write({ outputType: \"blob\" })) as Blob;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;g3CAAA,6IAYC,SAAS,EAAE,CAAc,OAAO,SAAjB,UAAuC,OAAO,OAApB,IAA2B,OAAO,QAAQ,EAAE,EAAsB,OAAO,QAAnB,YAA2B,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,GAAqB,OAAO,OAApB,IAA2B,OAAoB,OAAO,OAApB,IAA2B,OAAoB,OAAO,KAApB,IAAyB,KAAK,MAAM,MAAM,EAAE,CAAE,GAAE,UAAU,CAAC,OAAO,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,EAAEA,GAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAc,OAAO,WAAnB,YAA4B,UAAQ,GAAG,CAACA,IAAG,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,MAAM,uBAAuB,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,mBAAmB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,SAASA,GAAE,CAAC,IAAIC,GAAE,EAAE,CAAC,EAAE,CAAC,EAAED,EAAC,EAAE,OAAO,EAAEC,IAAGD,EAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAc,OAAO,WAAnB,YAA4B,UAAQ,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,GAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,oEAAoE,EAAE,OAAO,SAASA,GAAE,CAAC,QAAQC,GAAEC,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAEF,GAAE,OAAO,EAAE,EAAEG,GAAa,EAAE,UAAUH,EAAC,IAAxB,SAA0B,EAAEA,GAAE,QAAQ,EAAE,EAAE,EAAE,EAAEG,IAAGF,GAAED,GAAE,GAAG,EAAEE,GAAE,EAAE,EAAEF,GAAE,GAAG,EAAE,EAAE,EAAE,EAAEA,GAAE,GAAG,EAAE,IAAIC,GAAED,GAAE,WAAW,GAAG,EAAEE,GAAE,EAAE,EAAEF,GAAE,WAAW,GAAG,EAAE,EAAE,EAAE,EAAEA,GAAE,WAAW,GAAG,EAAE,GAAG,EAAEC,IAAG,EAAE,GAAG,EAAEA,KAAI,EAAEC,IAAG,EAAE,EAAE,EAAE,GAAG,GAAGA,KAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,SAASF,GAAE,CAAC,IAAIC,GAAEC,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,GAAGF,GAAE,OAAO,EAAE,EAAE,MAAM,IAAI,EAAE,MAAM,IAAI,MAAM,iDAAiD,EAAE,IAAI,EAAE,EAAE,GAAGA,GAAEA,GAAE,QAAQ,mBAAmB,EAAE,GAAG,OAAO,EAAE,GAAGA,GAAE,OAAOA,GAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAIA,GAAE,OAAOA,GAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,IAAI,MAAM,2CAA2C,EAAE,IAAI,EAAE,EAAE,WAAW,IAAI,WAAW,EAAE,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC,EAAE,EAAEA,GAAE,QAAQC,GAAE,EAAE,QAAQD,GAAE,OAAO,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,QAAQA,GAAE,OAAO,GAAG,CAAC,IAAI,EAAEE,IAAG,GAAG,IAAI,GAAG,EAAE,EAAE,QAAQF,GAAE,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,QAAQA,GAAE,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAEC,GAAO,IAAL,KAAS,EAAE,GAAG,EAAEC,IAAQ,IAAL,KAAS,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,YAAY,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,0BAA0B,EAAE,SAAS,EAAEF,GAAEC,GAAEC,GAAEE,GAAEC,GAAE,CAAC,KAAK,eAAeL,GAAE,KAAK,iBAAiBC,GAAE,KAAK,MAAMC,GAAE,KAAK,YAAYE,GAAE,KAAK,kBAAkBC,EAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,UAAU,CAAC,IAAIL,GAAE,IAAI,EAAE,EAAE,QAAQ,QAAQ,KAAK,iBAAiB,CAAC,EAAE,KAAK,KAAK,YAAY,iBAAiB,CAAC,EAAE,KAAK,IAAI,EAAE,aAAa,CAAC,EAAEC,GAAE,KAAK,OAAOD,GAAE,GAAG,MAAM,UAAU,CAAC,GAAG,KAAK,WAAW,cAAcC,GAAE,iBAAiB,MAAM,IAAI,MAAM,uCAAuC,CAAC,CAAC,EAAED,EAAC,EAAE,oBAAoB,UAAU,CAAC,OAAO,IAAI,EAAE,EAAE,QAAQ,QAAQ,KAAK,iBAAiB,CAAC,EAAE,eAAe,iBAAiB,KAAK,cAAc,EAAE,eAAe,mBAAmB,KAAK,gBAAgB,EAAE,eAAe,QAAQ,KAAK,KAAK,EAAE,eAAe,cAAc,KAAK,WAAW,CAAC,CAAC,EAAE,EAAE,iBAAiB,SAASA,GAAEC,GAAEC,GAAE,CAAC,OAAOF,GAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,kBAAkB,CAAC,EAAE,KAAKC,GAAE,eAAeC,EAAC,CAAC,EAAE,KAAK,IAAI,EAAE,gBAAgB,CAAC,EAAE,eAAe,cAAcD,EAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,sBAAsB,GAAG,2BAA2B,GAAG,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,wBAAwB,EAAE,EAAE,MAAM,CAAC,MAAM,OAAO,eAAe,UAAU,CAAC,OAAO,IAAI,EAAE,mBAAmB,CAAC,EAAE,iBAAiB,UAAU,CAAC,OAAO,IAAI,EAAE,qBAAqB,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,yBAAyB,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,SAAS,EAAM,GAAE,UAAU,CAAC,QAAQD,GAAEC,GAAE,CAAC,EAAEC,GAAE,EAAEA,GAAE,IAAIA,KAAI,CAACF,GAAEE,GAAE,QAAQE,GAAE,EAAEA,GAAE,EAAEA,KAAIJ,GAAE,EAAEA,GAAE,WAAWA,KAAI,EAAEA,KAAI,EAAEC,GAAEC,EAAC,EAAEF,EAAC,CAAC,OAAOC,EAAC,GAAE,EAAE,EAAE,QAAQ,SAASD,GAAEC,GAAE,CAAC,OAAgBD,KAAT,QAAYA,GAAE,OAAkB,EAAE,UAAUA,EAAC,IAAxB,UAA0B,SAASA,GAAEC,GAAEC,GAAEE,GAAE,CAAC,IAAI,EAAE,EAAE,EAAEA,GAAEF,GAAEF,IAAG,GAAG,QAAQ,EAAEI,GAAE,EAAE,EAAE,IAAIJ,GAAEA,KAAI,EAAE,EAAE,KAAKA,GAAEC,GAAE,CAAC,EAAE,EAAE,MAAM,GAAGD,EAAC,GAAE,EAAEC,GAAED,GAAEA,GAAE,OAAO,CAAC,GAAE,SAASA,GAAEC,GAAEC,GAAEE,GAAE,CAAC,IAAI,EAAE,EAAE,EAAEA,GAAEF,GAAEF,IAAG,GAAG,QAAQ,EAAEI,GAAE,EAAE,EAAE,IAAIJ,GAAEA,KAAI,EAAE,EAAE,KAAKA,GAAEC,GAAE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAGD,EAAC,GAAE,EAAEC,GAAED,GAAEA,GAAE,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,OAAO,GAAG,EAAE,OAAO,GAAG,EAAE,IAAI,GAAG,EAAE,cAAc,GAAG,EAAE,KAAK,KAAK,EAAE,YAAY,KAAK,EAAE,mBAAmB,KAAK,EAAE,QAAQ,KAAK,EAAE,gBAAgB,KAAK,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,KAAK,EAAe,OAAO,QAApB,IAA4B,QAAQ,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAe,OAAO,WAApB,KAA6C,OAAO,YAApB,KAA8C,OAAO,YAApB,IAAgC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE,EAAE,EAAE,aAAa,QAAQ,SAAS,EAAEA,GAAEC,GAAE,CAAC,EAAE,KAAK,KAAK,eAAeD,EAAC,EAAE,KAAK,MAAM,KAAK,KAAK,YAAYA,GAAE,KAAK,aAAaC,GAAE,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,aAAa,SAASD,GAAE,CAAC,KAAK,KAAKA,GAAE,KAAY,KAAK,QAAZ,MAAmB,KAAK,YAAY,EAAE,KAAK,MAAM,KAAK,EAAE,YAAY,EAAEA,GAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,MAAM,UAAU,CAAC,EAAE,UAAU,MAAM,KAAK,IAAI,EAAS,KAAK,QAAZ,MAAmB,KAAK,YAAY,EAAE,KAAK,MAAM,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,QAAQ,UAAU,CAAC,EAAE,UAAU,QAAQ,KAAK,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,EAAE,UAAU,YAAY,UAAU,CAAC,KAAK,MAAM,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC,IAAI,GAAG,MAAM,KAAK,aAAa,OAAO,EAAE,CAAC,EAAE,IAAIC,GAAE,KAAK,KAAK,MAAM,OAAO,SAASD,GAAE,CAACC,GAAE,KAAK,CAAC,KAAKD,GAAE,KAAKC,GAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,eAAe,SAASD,GAAE,CAAC,OAAO,IAAI,EAAE,UAAUA,EAAC,CAAC,EAAE,EAAE,iBAAiB,UAAU,CAAC,OAAO,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,yBAAyB,GAAG,UAAU,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,SAAS,EAAEA,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAE,GAAG,IAAIF,GAAE,EAAEA,GAAED,GAAEC,KAAIE,IAAG,OAAO,aAAa,IAAIJ,EAAC,EAAEA,MAAK,EAAE,OAAOI,EAAC,CAAC,SAAS,EAAEJ,GAAEC,GAAEC,GAAEE,GAAEC,GAAEC,GAAE,CAAC,IAAI,EAAE,EAAE,EAAEN,GAAE,KAAK,EAAEA,GAAE,YAAY,EAAEM,KAAI,EAAE,WAAW,EAAE,EAAE,YAAY,SAASA,GAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,YAAY,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,YAAY,SAASA,GAAE,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAEL,IAAG,CAACC,KAAI,EAAE,MAAMF,GAAE,MAAM,EAAE,eAAeA,GAAE,eAAe,EAAE,iBAAiBA,GAAE,kBAAkB,IAAI,EAAE,EAAEC,KAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAaI,KAAT,QAAY,EAAE,IAAI,IAAG,SAASL,GAAEC,GAAE,CAAC,IAAIC,GAAEF,GAAE,OAAOA,KAAIE,GAAED,GAAE,MAAM,QAAQ,MAAMC,KAAI,EAAE,GAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE,GAAG,IAAG,SAASF,GAAE,CAAC,MAAO,KAAIA,IAAG,EAAE,GAAE,EAAE,cAAc,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,GAAG;AAAA,IAAO,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,eAAe,CAAC,EAAE,GAAG,EAAE,EAAE,iBAAiB,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,kBAAkB,EAAE,EAAE,EAAE,UAAU,EAAE,oBAAoB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,EAAEI,GAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,yBAAyB,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,cAAc,EAAE,SAAS,EAAEJ,GAAEC,GAAEC,GAAEE,GAAE,CAAC,EAAE,KAAK,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,WAAWH,GAAE,KAAK,YAAYC,GAAE,KAAK,eAAeE,GAAE,KAAK,YAAYJ,GAAE,KAAK,WAAW,GAAG,KAAK,cAAc,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,KAAK,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,SAASA,GAAE,CAAC,IAAIC,GAAED,GAAE,KAAK,SAAS,EAAEE,GAAE,KAAK,aAAaE,GAAE,KAAK,SAAS,OAAO,KAAK,WAAW,KAAK,cAAc,KAAKJ,EAAC,GAAG,KAAK,cAAcA,GAAE,KAAK,OAAO,EAAE,UAAU,KAAK,KAAK,KAAK,CAAC,KAAKA,GAAE,KAAK,KAAK,CAAC,YAAY,KAAK,YAAY,QAAQE,IAAGD,GAAE,KAAKC,GAAEE,GAAE,IAAIF,GAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,aAAa,SAASF,GAAE,CAAC,KAAK,oBAAoB,KAAK,aAAa,KAAK,YAAYA,GAAE,KAAK,KAAK,IAAIC,GAAE,KAAK,aAAa,CAACD,GAAE,KAAK,IAAI,GAAGC,GAAE,CAAC,IAAIC,GAAE,EAAEF,GAAEC,GAAE,GAAG,KAAK,oBAAoB,KAAK,YAAY,KAAK,cAAc,EAAE,KAAK,KAAK,CAAC,KAAKC,GAAE,WAAW,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,EAAE,EAAE,EAAE,UAAU,aAAa,SAASF,GAAE,CAAC,KAAK,WAAW,GAAG,IAAIC,GAAE,KAAK,aAAa,CAACD,GAAE,KAAK,IAAIE,GAAE,EAAEF,GAAEC,GAAE,GAAG,KAAK,oBAAoB,KAAK,YAAY,KAAK,cAAc,EAAE,GAAG,KAAK,WAAW,KAAKC,GAAE,SAAS,EAAED,GAAE,KAAK,KAAK,CAAC,MAAK,SAASD,GAAE,CAAC,OAAO,EAAE,gBAAgB,EAAEA,GAAE,MAAM,CAAC,EAAE,EAAEA,GAAE,eAAe,CAAC,EAAE,EAAEA,GAAE,iBAAiB,CAAC,CAAC,GAAEA,EAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAO,KAAI,KAAK,KAAK,CAAC,KAAKE,GAAE,WAAW,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,QAAQ,KAAK,KAAK,KAAK,cAAc,MAAM,CAAC,EAAE,KAAK,YAAY,IAAI,EAAE,EAAE,UAAU,MAAM,UAAU,CAAC,QAAQF,GAAE,KAAK,aAAaC,GAAE,EAAEA,GAAE,KAAK,WAAW,OAAOA,KAAI,KAAK,KAAK,CAAC,KAAK,KAAK,WAAWA,EAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,IAAIC,GAAE,KAAK,aAAaF,GAAEI,IAAE,SAASJ,GAAEC,GAAEC,GAAEE,GAAEC,GAAE,CAAC,IAAIC,GAAE,EAAE,YAAY,SAASD,GAAED,EAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,WAAW,EAAEJ,GAAE,CAAC,EAAE,EAAEA,GAAE,CAAC,EAAE,EAAEC,GAAE,CAAC,EAAE,EAAEC,GAAE,CAAC,EAAE,EAAEI,GAAE,OAAO,CAAC,EAAEA,EAAC,GAAE,KAAK,WAAW,OAAOJ,GAAEF,GAAE,KAAK,WAAW,KAAK,cAAc,EAAE,KAAK,KAAK,CAAC,KAAKI,GAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,kBAAkB,UAAU,CAAC,KAAK,SAAS,KAAK,SAAS,MAAM,EAAE,KAAK,aAAa,KAAK,SAAS,UAAU,EAAE,KAAK,SAAS,KAAK,SAAS,MAAM,EAAE,KAAK,SAAS,OAAO,CAAC,EAAE,EAAE,UAAU,iBAAiB,SAASJ,GAAE,CAAC,KAAK,SAAS,KAAKA,EAAC,EAAE,IAAIC,GAAE,KAAK,OAAOD,GAAE,GAAG,OAAO,SAASA,GAAE,CAACC,GAAE,aAAaD,EAAC,CAAC,CAAC,EAAEA,GAAE,GAAG,MAAM,UAAU,CAACC,GAAE,aAAaA,GAAE,SAAS,UAAU,EAAEA,GAAE,SAAS,OAAOA,GAAE,kBAAkB,EAAEA,GAAE,IAAI,CAAC,CAAC,EAAED,GAAE,GAAG,QAAQ,SAASA,GAAE,CAACC,GAAE,MAAMD,EAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,UAAU,KAAK,SAAS,QAAQ,KAAK,kBAAkB,EAAE,IAAI,KAAK,UAAU,KAAK,SAAS,QAAQ,KAAK,eAAe,QAAQ,KAAK,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,MAAM,SAASA,GAAE,CAAC,IAAIC,GAAE,KAAK,SAAS,GAAG,CAAC,EAAE,UAAU,MAAM,KAAK,KAAKD,EAAC,EAAE,MAAM,GAAG,QAAQE,GAAE,EAAEA,GAAED,GAAE,OAAOC,KAAI,GAAG,CAACD,GAAEC,EAAC,EAAE,MAAMF,EAAC,CAAC,MAAS,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,UAAU,KAAK,UAAU,CAAC,EAAE,UAAU,KAAK,KAAK,IAAI,EAAE,QAAQA,GAAE,KAAK,SAASC,GAAE,EAAEA,GAAED,GAAE,OAAOC,KAAID,GAAEC,EAAC,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,eAAe,GAAG,0BAA0B,GAAG,UAAU,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,eAAe,SAASD,GAAE,EAAEC,GAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,YAAYA,GAAE,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,CAACD,GAAE,QAAQ,SAASA,GAAEC,GAAE,CAAC,IAAI,IAAIC,IAAE,SAASF,GAAEC,GAAE,CAAC,IAAIC,GAAEF,IAAGC,GAAEG,GAAE,EAAEF,EAAC,EAAE,GAAG,CAACE,GAAE,MAAM,IAAI,MAAMF,GAAE,sCAAsC,EAAE,OAAOE,EAAC,GAAEH,GAAE,QAAQ,YAAY,EAAE,WAAW,EAAEG,GAAEH,GAAE,QAAQ,oBAAoB,EAAE,oBAAoB,CAAC,EAAE,EAAEA,GAAE,IAAI,EAAEA,GAAE,KAAKA,GAAE,gBAAgBC,GAAEE,EAAC,EAAE,eAAe,OAAO,CAAC,KAAKJ,GAAE,IAAI,EAAE,KAAK,EAAE,QAAQC,GAAE,SAAS,GAAG,gBAAgBA,GAAE,gBAAgB,eAAeA,GAAE,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,aAAa,CAAC,OAAOD,GAAE,CAAC,EAAE,MAAMA,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,SAAS,GAAG,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,IAAI,EAAE,GAAG,UAAU,OAAO,MAAM,IAAI,MAAM,gGAAgG,EAAE,KAAK,MAAM,OAAO,OAAO,IAAI,EAAE,KAAK,QAAQ,KAAK,KAAK,KAAK,GAAG,KAAK,MAAM,UAAU,CAAC,IAAIA,GAAE,IAAI,EAAE,QAAQC,MAAK,KAAiB,OAAO,KAAKA,EAAC,GAAzB,aAA6BD,GAAEC,EAAC,EAAE,KAAKA,EAAC,GAAG,OAAOD,EAAC,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,QAAQ,SAAS,EAAE,UAAU,SAASA,GAAEC,GAAE,CAAC,OAAO,IAAI,IAAG,UAAUD,GAAEC,EAAC,CAAC,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,GAAG,WAAW,GAAG,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,eAAe,EAAE,SAAS,EAAEG,GAAE,CAAC,OAAO,IAAI,EAAE,QAAQ,SAASJ,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAE,aAAa,iBAAiB,EAAE,KAAK,IAAI,CAAC,EAAEF,GAAE,GAAG,QAAQ,SAASF,GAAE,CAACC,GAAED,EAAC,CAAC,CAAC,EAAE,GAAG,MAAM,UAAU,CAACE,GAAE,WAAW,QAAQE,GAAE,aAAa,MAAMH,GAAE,IAAI,MAAM,gCAAgC,CAAC,EAAED,GAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,SAASA,GAAE,EAAE,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,WAAW,GAAG,sBAAsB,GAAG,cAAc,GAAG,eAAe,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,SAASA,EAAC,EAAE,EAAE,QAAQ,OAAO,IAAI,MAAM,sDAAsD,CAAC,EAAE,EAAE,eAAe,sBAAsBA,GAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,EAAE,KAAK,SAASA,GAAE,CAAC,IAAIC,GAAE,IAAI,EAAE,CAAC,EAAE,OAAOA,GAAE,KAAKD,EAAC,EAAEC,EAAC,CAAC,EAAE,KAAK,SAASD,GAAE,CAAC,IAAIC,GAAE,CAAC,EAAE,QAAQ,QAAQD,EAAC,CAAC,EAAEE,GAAEF,GAAE,MAAM,GAAG,EAAE,WAAW,QAAQI,GAAE,EAAEA,GAAEF,GAAE,OAAOE,KAAIH,GAAE,KAAK,EAAEC,GAAEE,EAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,IAAIH,EAAC,CAAC,CAAC,EAAE,KAAK,SAASD,GAAE,CAAC,QAAQC,GAAED,GAAE,MAAM,EAAEE,GAAED,GAAE,MAAMG,GAAE,EAAEA,GAAEF,GAAE,OAAOE,KAAI,CAAC,IAAIC,GAAEH,GAAEE,EAAC,EAAEE,GAAED,GAAE,YAAYE,GAAE,EAAE,QAAQF,GAAE,WAAW,EAAE,EAAE,KAAKE,GAAEF,GAAE,aAAa,CAAC,OAAO,GAAG,sBAAsB,GAAG,KAAKA,GAAE,KAAK,IAAIA,GAAE,IAAI,QAAQA,GAAE,eAAe,OAAOA,GAAE,eAAe,KAAK,gBAAgBA,GAAE,gBAAgB,eAAeA,GAAE,eAAe,cAAc,EAAE,aAAa,CAAC,EAAEA,GAAE,MAAM,EAAE,KAAKE,EAAC,EAAE,mBAAmBD,GAAE,CAAC,OAAOL,GAAE,WAAW,SAAS,EAAE,QAAQA,GAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,gBAAgB,GAAG,sBAAsB,GAAG,SAAS,GAAG,UAAU,GAAG,eAAe,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,yBAAyB,EAAE,SAAS,EAAED,GAAEC,GAAE,CAAC,EAAE,KAAK,KAAK,mCAAmCD,EAAC,EAAE,KAAK,eAAe,GAAG,KAAK,YAAYC,EAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,YAAY,SAASD,GAAE,CAAC,IAAIC,GAAE,MAAM,KAAK,QAAQD,IAAG,MAAM,EAAEA,GAAE,GAAG,OAAO,SAASA,GAAE,CAACC,GAAE,KAAK,CAAC,KAAKD,GAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,SAASA,GAAE,CAACC,GAAE,SAAS,KAAK,eAAeD,GAAEC,GAAE,MAAMD,EAAC,CAAC,CAAC,EAAE,GAAG,MAAM,UAAU,CAACC,GAAE,SAASA,GAAE,eAAe,GAAGA,GAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,MAAM,KAAK,IAAI,IAAI,KAAK,QAAQ,MAAM,EAAE,GAAG,EAAE,EAAE,UAAU,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,OAAO,KAAK,IAAI,IAAI,KAAK,eAAe,KAAK,IAAI,EAAE,KAAK,QAAQ,OAAO,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,0BAA0B,GAAG,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,iBAAiB,EAAE,SAAS,SAAS,EAAED,GAAEC,GAAEC,GAAE,CAAC,EAAE,KAAK,KAAKD,EAAC,EAAE,KAAK,QAAQD,GAAE,IAAII,GAAE,KAAKJ,GAAE,GAAG,OAAO,SAASA,GAAEC,GAAE,CAACG,GAAE,KAAKJ,EAAC,GAAGI,GAAE,QAAQ,MAAM,EAAEF,IAAGA,GAAED,EAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,SAASD,GAAE,CAACI,GAAE,KAAK,QAAQJ,EAAC,CAAC,CAAC,EAAE,GAAG,MAAM,UAAU,CAACI,GAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,MAAM,UAAU,CAAC,KAAK,QAAQ,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW,GAAG,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAoB,OAAO,OAApB,IAA2B,cAAc,SAASJ,GAAEC,GAAE,CAAC,GAAG,OAAO,MAAM,OAAO,OAAO,WAAW,KAAK,OAAO,OAAO,KAAKD,GAAEC,EAAC,EAAE,GAAa,OAAOD,IAAjB,SAAmB,MAAM,IAAI,MAAM,0CAA0C,EAAE,OAAO,IAAI,OAAOA,GAAEC,EAAC,CAAC,EAAE,YAAY,SAASD,GAAE,CAAC,GAAG,OAAO,MAAM,OAAO,OAAO,MAAMA,EAAC,EAAE,IAAIC,GAAE,IAAI,OAAOD,EAAC,EAAE,OAAOC,GAAE,KAAK,CAAC,EAAEA,EAAC,EAAE,SAAS,SAASD,GAAE,CAAC,OAAO,OAAO,SAASA,EAAC,CAAC,EAAE,SAAS,SAASA,GAAE,CAAC,OAAOA,IAAe,OAAOA,GAAE,IAArB,YAAqC,OAAOA,GAAE,OAArB,YAAwC,OAAOA,GAAE,QAArB,UAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,SAAS,EAAEA,GAAEC,GAAEC,GAAE,CAAC,IAAIE,GAAEC,GAAE,EAAE,UAAUJ,EAAC,EAAEK,GAAE,EAAE,OAAOJ,IAAG,CAAC,EAAE,CAAC,EAAEI,GAAE,KAAKA,GAAE,MAAM,IAAI,KAAYA,GAAE,cAAT,OAAuBA,GAAE,YAAYA,GAAE,YAAY,YAAY,GAAa,OAAOA,GAAE,iBAAnB,WAAqCA,GAAE,gBAAgB,SAASA,GAAE,gBAAgB,CAAC,GAAGA,GAAE,iBAAiB,MAAMA,GAAE,kBAAkBA,GAAE,IAAI,IAAIA,GAAE,gBAAgB,GAAGA,GAAE,iBAAiBA,GAAE,IAAI,IAAIA,GAAE,MAAMN,GAAE,EAAEA,EAAC,GAAGM,GAAE,gBAAgBF,GAAE,EAAEJ,EAAC,IAAI,EAAE,KAAK,KAAKI,GAAE,EAAE,EAAE,IAAIG,GAAaF,KAAX,UAAmBC,GAAE,SAAP,IAAoBA,GAAE,SAAP,GAAcJ,IAAYA,GAAE,SAAX,SAAoBI,GAAE,OAAO,CAACC,KAAIN,cAAa,GAAOA,GAAE,mBAAN,GAAwBK,GAAE,KAAK,CAACL,IAAOA,GAAE,SAAN,KAAgBK,GAAE,OAAO,GAAGA,GAAE,OAAO,GAAGL,GAAE,GAAGK,GAAE,YAAY,QAAQD,GAAE,UAAU,IAAIG,GAAE,KAAKA,GAAEP,cAAa,GAAGA,cAAa,EAAEA,GAAE,EAAE,QAAQ,EAAE,SAASA,EAAC,EAAE,IAAI,EAAED,GAAEC,EAAC,EAAE,EAAE,eAAeD,GAAEC,GAAEK,GAAE,OAAOA,GAAE,sBAAsBA,GAAE,MAAM,EAAE,IAAIG,GAAE,IAAI,EAAET,GAAEQ,GAAEF,EAAC,EAAE,KAAK,MAAMN,EAAC,EAAES,EAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,wBAAwB,EAAE,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,mCAAmC,EAAE,EAAE,SAAST,GAAE,CAAOA,GAAE,MAAM,EAAE,IAAhB,MAAoBA,GAAEA,GAAE,UAAU,EAAEA,GAAE,OAAO,CAAC,GAAG,IAAIC,GAAED,GAAE,YAAY,GAAG,EAAE,MAAO,GAAEC,GAAED,GAAE,UAAU,EAAEC,EAAC,EAAE,EAAE,EAAE,EAAE,SAASD,GAAE,CAAC,OAAYA,GAAE,MAAM,EAAE,IAAhB,MAAoBA,IAAG,KAAKA,EAAC,EAAE,EAAE,SAASA,GAAEC,GAAE,CAAC,OAAOA,GAAWA,KAAT,OAAWA,GAAE,EAAE,cAAcD,GAAE,EAAEA,EAAC,EAAE,KAAK,MAAMA,EAAC,GAAG,EAAE,KAAK,KAAKA,GAAE,KAAK,CAAC,IAAI,GAAG,cAAcC,EAAC,CAAC,EAAE,KAAK,MAAMD,EAAC,CAAC,EAAE,SAAS,EAAEA,GAAE,CAAC,OAA0B,OAAO,UAAU,SAAS,KAAKA,EAAC,IAApD,iBAAqD,CAAC,IAAI,EAAE,CAAC,KAAK,UAAU,CAAC,MAAM,IAAI,MAAM,4EAA4E,CAAC,EAAE,QAAQ,SAASA,GAAE,CAAC,IAAIC,GAAEC,GAAEE,GAAE,IAAIH,MAAK,KAAK,MAAMG,GAAE,KAAK,MAAMH,EAAC,GAAGC,GAAED,GAAE,MAAM,KAAK,KAAK,OAAOA,GAAE,MAAM,IAAIA,GAAE,MAAM,EAAE,KAAK,KAAK,MAAM,IAAI,KAAK,MAAMD,GAAEE,GAAEE,EAAC,CAAC,EAAE,OAAO,SAASF,GAAE,CAAC,IAAIE,GAAE,CAAC,EAAE,OAAO,KAAK,QAAQ,SAASJ,GAAEC,GAAE,CAACC,GAAEF,GAAEC,EAAC,GAAGG,GAAE,KAAKH,EAAC,CAAC,CAAC,EAAEG,EAAC,EAAE,KAAK,SAASJ,GAAEC,GAAEC,GAAE,CAAC,GAAO,UAAU,SAAd,EAAqB,OAAOF,GAAE,KAAK,KAAKA,GAAE,EAAE,KAAK,KAAKA,GAAEC,GAAEC,EAAC,EAAE,KAAK,GAAG,EAAEF,EAAC,EAAE,CAAC,IAAII,GAAEJ,GAAE,OAAO,KAAK,OAAO,SAASA,GAAEC,GAAE,CAAC,MAAM,CAACA,GAAE,KAAKG,GAAE,KAAKJ,EAAC,CAAC,CAAC,CAAC,CAAC,IAAIK,GAAE,KAAK,MAAM,KAAK,KAAKL,EAAC,EAAE,OAAOK,IAAG,CAACA,GAAE,IAAIA,GAAE,IAAI,EAAE,OAAO,SAASH,GAAE,CAAC,GAAG,CAACA,GAAE,OAAO,KAAK,GAAG,EAAEA,EAAC,EAAE,OAAO,KAAK,OAAO,SAASF,GAAEC,GAAE,CAAC,OAAOA,GAAE,KAAKC,GAAE,KAAKF,EAAC,CAAC,CAAC,EAAE,IAAIA,GAAE,KAAK,KAAKE,GAAED,GAAE,EAAE,KAAK,KAAKD,EAAC,EAAEI,GAAE,KAAK,MAAM,EAAE,OAAOA,GAAE,KAAKH,GAAE,KAAKG,EAAC,EAAE,OAAO,SAASF,GAAE,CAACA,GAAE,KAAK,KAAKA,GAAE,IAAIF,GAAE,KAAK,MAAME,EAAC,EAAE,GAAGF,KAAUE,GAAE,MAAM,EAAE,IAAhB,MAAoBA,IAAG,KAAKF,GAAE,KAAK,MAAME,EAAC,GAAGF,IAAG,CAACA,GAAE,IAAI,OAAO,KAAK,MAAME,EAAC,MAAO,SAAQD,GAAE,KAAK,OAAO,SAASD,GAAEC,GAAE,CAAC,OAAOA,GAAE,KAAK,MAAM,EAAEC,GAAE,MAAM,IAAIA,EAAC,CAAC,EAAEE,GAAE,EAAEA,GAAEH,GAAE,OAAOG,KAAI,OAAO,KAAK,MAAMH,GAAEG,EAAC,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,SAAS,UAAU,CAAC,MAAM,IAAI,MAAM,4EAA4E,CAAC,EAAE,uBAAuB,SAASJ,GAAE,CAAC,IAAIC,GAAEC,GAAE,CAAC,EAAE,GAAG,CAAC,IAAIA,GAAE,EAAE,OAAOF,IAAG,CAAC,EAAE,CAAC,YAAY,GAAG,YAAY,QAAQ,mBAAmB,KAAK,KAAK,GAAG,SAAS,MAAM,QAAQ,KAAK,SAAS,kBAAkB,eAAe,EAAE,UAAU,CAAC,GAAG,KAAKE,GAAE,KAAK,YAAY,EAAEA,GAAE,YAAYA,GAAE,YAAY,YAAY,EAAmBA,GAAE,OAAnB,iBAA0BA,GAAE,KAAK,UAAU,CAACA,GAAE,KAAK,MAAM,IAAI,MAAM,2BAA2B,EAAE,EAAE,aAAaA,GAAE,IAAI,EAAaA,GAAE,WAAb,UAAmCA,GAAE,WAAd,WAAkCA,GAAE,WAAZ,SAAgCA,GAAE,WAAZ,UAAuBA,GAAE,SAAS,QAAkBA,GAAE,WAAZ,UAAuBA,GAAE,SAAS,OAAO,IAAIE,GAAEF,GAAE,SAAS,KAAK,SAAS,GAAGD,GAAE,EAAE,eAAe,KAAKC,GAAEE,EAAC,CAAC,OAAOJ,GAAE,EAAEC,GAAE,IAAI,EAAE,OAAO,GAAG,MAAMD,EAAC,CAAC,CAAC,OAAO,IAAI,EAAEC,GAAEC,GAAE,MAAM,SAASA,GAAE,QAAQ,CAAC,EAAE,cAAc,SAASF,GAAEC,GAAE,CAAC,OAAO,KAAK,uBAAuBD,EAAC,EAAE,WAAWC,EAAC,CAAC,EAAE,mBAAmB,SAASD,GAAEC,GAAE,CAAC,OAAOD,GAAEA,IAAG,CAAC,GAAG,OAAOA,GAAE,KAAK,cAAc,KAAK,uBAAuBA,EAAC,EAAE,eAAeC,EAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,oCAAoC,GAAG,gBAAgB,GAAG,yBAAyB,GAAG,wBAAwB,GAAG,SAAS,GAAG,UAAU,GAAG,cAAc,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,cAAc,EAAE,SAAS,EAAED,GAAE,CAAC,EAAE,KAAK,KAAKA,EAAC,EAAE,QAAQC,GAAE,EAAEA,GAAE,KAAK,KAAK,OAAOA,KAAID,GAAEC,EAAC,EAAE,IAAID,GAAEC,EAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,OAAO,SAASD,GAAE,CAAC,OAAO,KAAK,KAAK,KAAK,KAAKA,EAAC,CAAC,EAAE,EAAE,UAAU,qBAAqB,SAASA,GAAE,CAAC,QAAQC,GAAED,GAAE,WAAW,CAAC,EAAEE,GAAEF,GAAE,WAAW,CAAC,EAAEI,GAAEJ,GAAE,WAAW,CAAC,EAAEK,GAAEL,GAAE,WAAW,CAAC,EAAE,EAAE,KAAK,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,KAAK,KAAK,CAAC,IAAIC,IAAG,KAAK,KAAK,EAAE,CAAC,IAAIC,IAAG,KAAK,KAAK,EAAE,CAAC,IAAIE,IAAG,KAAK,KAAK,EAAE,CAAC,IAAIC,GAAE,OAAO,EAAE,KAAK,KAAK,MAAM,EAAE,EAAE,EAAE,UAAU,sBAAsB,SAASL,GAAE,CAAC,IAAIC,GAAED,GAAE,WAAW,CAAC,EAAEE,GAAEF,GAAE,WAAW,CAAC,EAAEI,GAAEJ,GAAE,WAAW,CAAC,EAAEK,GAAEL,GAAE,WAAW,CAAC,EAAE,EAAE,KAAK,SAAS,CAAC,EAAE,OAAOC,KAAI,EAAE,CAAC,GAAGC,KAAI,EAAE,CAAC,GAAGE,KAAI,EAAE,CAAC,GAAGC,KAAI,EAAE,CAAC,CAAC,EAAE,EAAE,UAAU,SAAS,SAASL,GAAE,CAAC,GAAG,KAAK,YAAYA,EAAC,EAAMA,KAAJ,EAAM,MAAM,CAAC,EAAE,IAAIC,GAAE,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,MAAMD,EAAC,EAAE,OAAO,KAAK,OAAOA,GAAEC,EAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW,GAAG,eAAe,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAED,GAAE,CAAC,KAAK,KAAKA,GAAE,KAAK,OAAOA,GAAE,OAAO,KAAK,MAAM,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,YAAY,SAASA,GAAE,CAAC,KAAK,WAAW,KAAK,MAAMA,EAAC,CAAC,EAAE,WAAW,SAASA,GAAE,CAAC,GAAG,KAAK,OAAO,KAAK,KAAKA,IAAGA,GAAE,EAAE,MAAM,IAAI,MAAM,sCAAsC,KAAK,OAAO,mBAAmBA,GAAE,oBAAoB,CAAC,EAAE,SAAS,SAASA,GAAE,CAAC,KAAK,WAAWA,EAAC,EAAE,KAAK,MAAMA,EAAC,EAAE,KAAK,SAASA,GAAE,CAAC,KAAK,SAAS,KAAK,MAAMA,EAAC,CAAC,EAAE,OAAO,UAAU,CAAC,EAAE,QAAQ,SAASA,GAAE,CAAC,IAAIC,GAAEC,GAAE,EAAE,IAAI,KAAK,YAAYF,EAAC,EAAEC,GAAE,KAAK,MAAMD,GAAE,EAAEC,IAAG,KAAK,MAAMA,KAAIC,IAAGA,IAAG,GAAG,KAAK,OAAOD,EAAC,EAAE,OAAO,KAAK,OAAOD,GAAEE,EAAC,EAAE,WAAW,SAASF,GAAE,CAAC,OAAO,EAAE,YAAY,SAAS,KAAK,SAASA,EAAC,CAAC,CAAC,EAAE,SAAS,UAAU,CAAC,EAAE,qBAAqB,UAAU,CAAC,EAAE,sBAAsB,UAAU,CAAC,EAAE,SAAS,UAAU,CAAC,IAAIA,GAAE,KAAK,QAAQ,CAAC,EAAE,OAAO,IAAI,KAAK,KAAK,IAAI,MAAMA,IAAG,GAAG,MAAMA,IAAG,GAAG,IAAI,EAAEA,IAAG,GAAG,GAAGA,IAAG,GAAG,GAAGA,IAAG,EAAE,IAAI,GAAGA,KAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,oBAAoB,EAAE,SAAS,EAAEA,GAAE,CAAC,EAAE,KAAK,KAAKA,EAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,SAAS,SAASA,GAAE,CAAC,KAAK,YAAYA,EAAC,EAAE,IAAIC,GAAE,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,MAAMD,EAAC,EAAE,OAAO,KAAK,OAAOA,GAAEC,EAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW,GAAG,qBAAqB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,cAAc,EAAE,SAAS,EAAED,GAAE,CAAC,EAAE,KAAK,KAAKA,EAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,OAAO,SAASA,GAAE,CAAC,OAAO,KAAK,KAAK,WAAW,KAAK,KAAKA,EAAC,CAAC,EAAE,EAAE,UAAU,qBAAqB,SAASA,GAAE,CAAC,OAAO,KAAK,KAAK,YAAYA,EAAC,EAAE,KAAK,IAAI,EAAE,EAAE,UAAU,sBAAsB,SAASA,GAAE,CAAC,OAAOA,KAAI,KAAK,SAAS,CAAC,CAAC,EAAE,EAAE,UAAU,SAAS,SAASA,GAAE,CAAC,KAAK,YAAYA,EAAC,EAAE,IAAIC,GAAE,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,MAAMD,EAAC,EAAE,OAAO,KAAK,OAAOA,GAAEC,EAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW,GAAG,eAAe,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,eAAe,EAAE,SAAS,EAAED,GAAE,CAAC,EAAE,KAAK,KAAKA,EAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,SAAS,SAASA,GAAE,CAAC,GAAG,KAAK,YAAYA,EAAC,EAAMA,KAAJ,EAAM,OAAO,IAAI,WAAW,CAAC,EAAE,IAAIC,GAAE,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,MAAMD,EAAC,EAAE,OAAO,KAAK,OAAOA,GAAEC,EAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW,GAAG,gBAAgB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,QAAQ,SAASD,GAAE,CAAC,IAAIC,GAAE,EAAE,UAAUD,EAAC,EAAE,OAAO,EAAE,aAAaC,EAAC,EAAaA,KAAX,UAAc,EAAE,WAA0BA,KAAf,aAAiB,IAAI,EAAED,EAAC,EAAE,EAAE,WAAW,IAAI,EAAE,EAAE,YAAY,aAAaA,EAAC,CAAC,EAAE,IAAI,EAAE,EAAE,YAAY,QAAQA,EAAC,CAAC,EAAE,IAAI,EAAEA,EAAC,CAAC,CAAC,EAAE,CAAC,aAAa,GAAG,WAAW,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,iBAAiB,GAAG,qBAAqB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,kBAAkB,OAAO,EAAE,oBAAoB,OAAO,EAAE,sBAAsB,OAAO,EAAE,gCAAgC,UAAO,EAAE,4BAA4B,OAAO,EAAE,gBAAgB,UAAO,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAEA,GAAE,CAAC,EAAE,KAAK,KAAK,oBAAoBA,EAAC,EAAE,KAAK,SAASA,EAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,aAAa,SAASA,GAAE,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,YAAY,KAAK,SAASA,GAAE,IAAI,EAAE,KAAKA,GAAE,IAAI,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW,GAAG,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,KAAK,YAAY,EAAE,KAAK,eAAe,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,aAAa,SAASA,GAAE,CAAC,KAAK,WAAW,MAAM,EAAEA,GAAE,KAAK,KAAK,WAAW,OAAO,CAAC,EAAE,KAAK,KAAKA,EAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAEA,GAAE,CAAC,EAAE,KAAK,KAAK,uBAAuBA,EAAC,EAAE,KAAK,SAASA,GAAE,KAAK,eAAeA,GAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,aAAa,SAASA,GAAE,CAAC,GAAGA,GAAE,CAAC,IAAIC,GAAE,KAAK,WAAW,KAAK,QAAQ,GAAG,EAAE,KAAK,WAAW,KAAK,QAAQ,EAAEA,GAAED,GAAE,KAAK,MAAM,CAAC,EAAE,UAAU,aAAa,KAAK,KAAKA,EAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW,GAAG,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAEA,GAAE,CAAC,EAAE,KAAK,KAAK,YAAY,EAAE,IAAIC,GAAE,KAAK,KAAK,YAAY,GAAG,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,KAAK,eAAe,GAAGD,GAAE,KAAK,SAASA,GAAE,CAACC,GAAE,YAAY,GAAGA,GAAE,KAAKD,GAAEC,GAAE,IAAID,IAAGA,GAAE,QAAQ,EAAEC,GAAE,KAAK,EAAE,UAAUD,EAAC,EAAEC,GAAE,UAAUA,GAAE,eAAe,CAAC,EAAE,SAASD,GAAE,CAACC,GAAE,MAAMD,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,QAAQ,UAAU,CAAC,EAAE,UAAU,QAAQ,KAAK,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,UAAU,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,gBAAgB,KAAK,cAAc,KAAK,eAAe,GAAG,EAAE,MAAM,KAAK,eAAe,CAAC,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,UAAU,eAAe,UAAU,CAAC,KAAK,eAAe,GAAG,KAAK,UAAU,KAAK,aAAa,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,KAAK,eAAe,CAAC,EAAE,IAAI,EAAE,KAAK,eAAe,IAAI,EAAE,EAAE,UAAU,MAAM,UAAU,CAAC,GAAG,KAAK,UAAU,KAAK,WAAW,MAAM,GAAG,IAAIA,GAAE,KAAKC,GAAE,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM,KAAK,EAAE,GAAG,KAAK,OAAO,KAAK,IAAI,OAAO,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,CAAC,IAAI,SAASD,GAAE,KAAK,KAAK,UAAU,KAAK,MAAMC,EAAC,EAAE,MAAM,IAAI,aAAaD,GAAE,KAAK,KAAK,SAAS,KAAK,MAAMC,EAAC,EAAE,MAAM,IAAI,QAAQ,IAAI,aAAaD,GAAE,KAAK,KAAK,MAAM,KAAK,MAAMC,EAAC,CAAC,CAAC,OAAO,KAAK,MAAMA,GAAE,KAAK,KAAK,CAAC,KAAKD,GAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW,GAAG,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,SAAS,EAAEA,GAAE,CAAC,KAAK,KAAKA,IAAG,UAAU,KAAK,WAAW,CAAC,EAAE,KAAK,eAAe,KAAK,KAAK,gBAAgB,CAAC,EAAE,KAAK,SAAS,GAAG,KAAK,WAAW,GAAG,KAAK,SAAS,GAAG,KAAK,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,EAAE,UAAU,CAAC,KAAK,SAASA,GAAE,CAAC,KAAK,KAAK,OAAOA,EAAC,CAAC,EAAE,IAAI,UAAU,CAAC,GAAG,KAAK,WAAW,MAAM,GAAG,KAAK,MAAM,EAAE,GAAG,CAAC,KAAK,KAAK,KAAK,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,OAAOA,GAAE,CAAC,KAAK,KAAK,QAAQA,EAAC,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,SAASA,GAAE,CAAC,MAAM,CAAC,KAAK,aAAa,KAAK,SAAS,KAAK,eAAeA,IAAG,KAAK,WAAW,GAAG,KAAK,KAAK,QAAQA,EAAC,EAAE,KAAK,UAAU,KAAK,SAAS,MAAMA,EAAC,EAAE,KAAK,QAAQ,GAAG,GAAG,EAAE,GAAG,SAASA,GAAEC,GAAE,CAAC,OAAO,KAAK,WAAWD,EAAC,EAAE,KAAKC,EAAC,EAAE,IAAI,EAAE,QAAQ,UAAU,CAAC,KAAK,WAAW,KAAK,eAAe,KAAK,gBAAgB,KAAK,KAAK,WAAW,CAAC,CAAC,EAAE,KAAK,SAASD,GAAEC,GAAE,CAAC,GAAG,KAAK,WAAWD,EAAC,EAAE,QAAQE,GAAE,EAAEA,GAAE,KAAK,WAAWF,EAAC,EAAE,OAAOE,KAAI,KAAK,WAAWF,EAAC,EAAEE,EAAC,EAAE,KAAK,KAAKD,EAAC,CAAC,EAAE,KAAK,SAASD,GAAE,CAAC,OAAOA,GAAE,iBAAiB,IAAI,CAAC,EAAE,iBAAiB,SAASA,GAAE,CAAC,GAAG,KAAK,SAAS,MAAM,IAAI,MAAM,eAAe,KAAK,0BAA0B,EAAE,KAAK,WAAWA,GAAE,WAAW,KAAK,gBAAgB,EAAE,KAAK,SAASA,GAAE,IAAIC,GAAE,KAAK,OAAOD,GAAE,GAAG,OAAO,SAASA,GAAE,CAACC,GAAE,aAAaD,EAAC,CAAC,CAAC,EAAEA,GAAE,GAAG,MAAM,UAAU,CAACC,GAAE,IAAI,CAAC,CAAC,EAAED,GAAE,GAAG,QAAQ,SAASA,GAAE,CAACC,GAAE,MAAMD,EAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,KAAK,aAAa,KAAK,SAAS,GAAG,KAAK,UAAU,KAAK,SAAS,MAAM,EAAE,GAAG,EAAE,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,UAAU,KAAK,WAAW,MAAM,GAAG,IAAIA,GAAE,KAAK,SAAS,GAAG,OAAO,KAAK,iBAAiB,KAAK,MAAM,KAAK,cAAc,EAAEA,GAAE,IAAI,KAAK,UAAU,KAAK,SAAS,OAAO,EAAE,CAACA,EAAC,EAAE,MAAM,UAAU,CAAC,EAAE,aAAa,SAASA,GAAE,CAAC,KAAK,KAAKA,EAAC,CAAC,EAAE,eAAe,SAASA,GAAEC,GAAE,CAAC,OAAO,KAAK,gBAAgBD,EAAC,EAAEC,GAAE,KAAK,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,UAAU,CAAC,QAAQD,MAAK,KAAK,gBAAgB,OAAO,UAAU,eAAe,KAAK,KAAK,gBAAgBA,EAAC,IAAI,KAAK,WAAWA,EAAC,EAAE,KAAK,gBAAgBA,EAAC,EAAE,EAAE,KAAK,UAAU,CAAC,GAAG,KAAK,SAAS,MAAM,IAAI,MAAM,eAAe,KAAK,0BAA0B,EAAE,KAAK,SAAS,GAAG,KAAK,UAAU,KAAK,SAAS,KAAK,CAAC,EAAE,SAAS,UAAU,CAAC,IAAIA,GAAE,UAAU,KAAK,KAAK,OAAO,KAAK,SAAS,KAAK,SAAS,OAAOA,GAAEA,EAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,KAAK,GAAG,EAAE,WAAW,GAAG,CAAC,EAAE,EAAE,qCAAqC,CAAC,MAAS,CAAC,CAAC,SAAS,EAAEA,GAAEQ,GAAE,CAAC,OAAO,IAAI,EAAE,QAAQ,SAASP,GAAEC,GAAE,CAAC,IAAIE,GAAE,CAAC,EAAEC,GAAEL,GAAE,cAAcM,GAAEN,GAAE,YAAYO,GAAEP,GAAE,UAAUA,GAAE,GAAG,OAAO,SAASA,GAAEC,GAAE,CAACG,GAAE,KAAKJ,EAAC,EAAEQ,IAAGA,GAAEP,EAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,SAASD,GAAE,CAACI,GAAE,CAAC,EAAEF,GAAEF,EAAC,CAAC,CAAC,EAAE,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,IAAIA,IAAE,SAASA,GAAEC,GAAEC,GAAE,CAAC,OAAOF,GAAE,CAAC,IAAI,OAAO,OAAO,EAAE,QAAQ,EAAE,YAAY,cAAcC,EAAC,EAAEC,EAAC,EAAE,IAAI,SAAS,OAAO,EAAE,OAAOD,EAAC,EAAE,QAAQ,OAAO,EAAE,YAAYD,GAAEC,EAAC,CAAC,CAAC,GAAEK,IAAE,SAASN,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAE,EAAEC,GAAE,KAAKC,GAAE,EAAE,IAAIJ,GAAE,EAAEA,GAAED,GAAE,OAAOC,KAAII,IAAGL,GAAEC,EAAC,EAAE,OAAO,OAAOF,GAAE,CAAC,IAAI,SAAS,OAAOC,GAAE,KAAK,EAAE,EAAE,IAAI,QAAQ,OAAO,MAAM,UAAU,OAAO,MAAM,CAAC,EAAEA,EAAC,EAAE,IAAI,aAAa,IAAII,GAAE,IAAI,WAAWC,EAAC,EAAEJ,GAAE,EAAEA,GAAED,GAAE,OAAOC,KAAIG,GAAE,IAAIJ,GAAEC,EAAC,EAAEE,EAAC,EAAEA,IAAGH,GAAEC,EAAC,EAAE,OAAO,OAAOG,GAAE,IAAI,aAAa,OAAO,OAAO,OAAOJ,EAAC,EAAE,QAAQ,MAAM,IAAI,MAAM,8BAA8BD,GAAE,GAAG,CAAC,CAAC,GAAEK,GAAED,EAAC,EAAEG,EAAC,EAAEN,GAAED,EAAC,CAAC,OAAOA,GAAE,CAACE,GAAEF,EAAC,CAAC,CAACI,GAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAEJ,GAAEC,GAAEC,GAAE,CAAC,IAAIE,GAAEH,GAAE,OAAOA,GAAE,CAAC,IAAI,OAAO,IAAI,cAAcG,GAAE,aAAa,MAAM,IAAI,SAASA,GAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,cAAcA,GAAE,KAAK,YAAYH,GAAE,KAAK,UAAUC,GAAE,EAAE,aAAaE,EAAC,EAAE,KAAK,QAAQJ,GAAE,KAAK,IAAI,EAAEI,EAAC,CAAC,EAAEJ,GAAE,KAAK,CAAC,OAAOA,GAAE,CAAC,KAAK,QAAQ,IAAI,EAAE,OAAO,EAAE,KAAK,QAAQ,MAAMA,EAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,SAASA,GAAE,CAAC,OAAO,EAAE,KAAKA,EAAC,CAAC,EAAE,GAAG,SAASA,GAAEC,GAAE,CAAC,IAAIC,GAAE,KAAK,OAAeF,KAAT,OAAW,KAAK,QAAQ,GAAGA,GAAE,SAASA,GAAE,CAACC,GAAE,KAAKC,GAAEF,GAAE,KAAKA,GAAE,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ,GAAGA,GAAE,UAAU,CAAC,EAAE,MAAMC,GAAE,UAAUC,EAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,UAAU,CAAC,OAAO,EAAE,MAAM,KAAK,QAAQ,OAAO,CAAC,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC,OAAO,KAAK,QAAQ,MAAM,EAAE,IAAI,EAAE,eAAe,SAASF,GAAE,CAAC,GAAG,EAAE,aAAa,YAAY,EAAiB,KAAK,cAApB,aAAgC,MAAM,IAAI,MAAM,KAAK,YAAY,kCAAkC,EAAE,OAAO,IAAI,EAAE,KAAK,CAAC,WAA0B,KAAK,cAApB,YAA+B,EAAEA,EAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,sCAAsC,GAAG,aAAa,GAAG,WAAW,GAAG,kBAAkB,GAAG,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,GAAG,EAAE,OAAO,GAAG,EAAE,MAAM,GAAG,EAAE,OAAO,GAAG,EAAE,YAAyB,OAAO,YAApB,KAA8C,OAAO,WAApB,IAA+B,EAAE,WAAwB,OAAO,OAApB,IAA2B,EAAE,WAAwB,OAAO,WAApB,IAA4C,OAAO,YAApB,IAAgC,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC,EAAE,GAAG,CAAC,EAAE,KAAS,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,iBAAiB,CAAC,EAAE,OAA3C,CAA+C,MAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,aAAa,KAAK,mBAAmB,KAAK,gBAAgB,KAAK,eAAe,EAAE,OAAO,CAAC,EAAE,EAAE,KAAS,EAAE,QAAQ,iBAAiB,EAAE,OAAjC,CAAqC,MAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,iBAAiB,EAAE,QAAQ,MAAS,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,wBAAwB,EAAE,EAAE,IAAI,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,KAAK,cAAc,EAAE,KAAK,SAAS,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,KAAK,cAAc,CAAC,CAAC,EAAE,WAAW,SAASA,GAAE,CAAC,OAAO,EAAE,WAAW,EAAE,cAAcA,GAAE,OAAO,GAAE,SAASA,GAAE,CAAC,IAAIC,GAAEC,GAAEE,GAAEC,GAAEC,GAAEC,GAAEP,GAAE,OAAOQ,GAAE,EAAE,IAAIH,GAAE,EAAEA,GAAEE,GAAEF,MAAY,OAAOH,GAAEF,GAAE,WAAWK,EAAC,KAA/B,OAAoCA,GAAE,EAAEE,KAAW,OAAOH,GAAEJ,GAAE,WAAWK,GAAE,CAAC,KAAjC,QAAuCH,GAAE,OAAOA,GAAE,OAAO,KAAKE,GAAE,OAAOC,MAAKG,IAAGN,GAAE,IAAI,EAAEA,GAAE,KAAK,EAAEA,GAAE,MAAM,EAAE,EAAE,IAAID,GAAE,EAAE,WAAW,IAAI,WAAWO,EAAC,EAAE,IAAI,MAAMA,EAAC,EAAEH,GAAEC,GAAE,EAAEA,GAAEE,GAAEH,MAAY,OAAOH,GAAEF,GAAE,WAAWK,EAAC,KAA/B,OAAoCA,GAAE,EAAEE,KAAW,OAAOH,GAAEJ,GAAE,WAAWK,GAAE,CAAC,KAAjC,QAAuCH,GAAE,OAAOA,GAAE,OAAO,KAAKE,GAAE,OAAOC,MAAKH,GAAE,IAAID,GAAEK,IAAG,EAAEJ,IAAGA,GAAE,KAAKD,GAAEK,IAAG,EAAE,IAAIJ,KAAI,GAAGA,GAAE,MAAMD,GAAEK,IAAG,EAAE,IAAIJ,KAAI,IAAID,GAAEK,IAAG,EAAE,IAAIJ,KAAI,GAAGD,GAAEK,IAAG,EAAE,IAAIJ,KAAI,GAAG,IAAID,GAAEK,IAAG,EAAE,IAAIJ,KAAI,EAAE,IAAID,GAAEK,IAAG,EAAE,IAAI,GAAGJ,IAAG,OAAOD,EAAC,GAAED,EAAC,CAAC,EAAE,EAAE,WAAW,SAASA,GAAE,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,aAAaA,EAAC,EAAE,SAAS,OAAO,GAAE,SAASA,GAAE,CAAC,IAAIC,GAAEC,GAAEE,GAAEC,GAAEC,GAAEN,GAAE,OAAOO,GAAE,IAAI,MAAM,EAAED,EAAC,EAAE,IAAIL,GAAEC,GAAE,EAAED,GAAEK,IAAG,IAAIF,GAAEJ,GAAEC,IAAG,GAAG,IAAIM,GAAEL,IAAG,EAAEE,WAAU,GAAGC,GAAE,EAAED,EAAC,GAAGG,GAAEL,IAAG,EAAE,MAAMD,IAAGI,GAAE,MAAM,CAAC,IAAID,IAAOC,KAAJ,EAAM,GAAOA,KAAJ,EAAM,GAAG,EAAE,EAAEA,IAAGJ,GAAEK,IAAGF,GAAEA,IAAG,EAAE,GAAGJ,GAAEC,IAAG,EAAEI,KAAI,EAAEA,GAAEE,GAAEL,IAAG,EAAE,MAAME,GAAE,MAAMG,GAAEL,IAAG,EAAEE,IAAGA,IAAG,MAAMG,GAAEL,IAAG,EAAE,MAAME,IAAG,GAAG,KAAKG,GAAEL,IAAG,EAAE,MAAM,KAAKE,GAAE,CAAC,OAAOG,GAAE,SAASL,KAAIK,GAAE,SAASA,GAAEA,GAAE,SAAS,EAAEL,EAAC,EAAEK,GAAE,OAAOL,IAAG,EAAE,kBAAkBK,EAAC,CAAC,GAAEP,GAAE,EAAE,YAAY,EAAE,WAAW,aAAa,QAAQA,EAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,aAAa,SAASA,GAAE,CAAC,IAAIC,GAAE,EAAE,YAAY,EAAE,WAAW,aAAa,QAAQD,GAAE,IAAI,EAAE,GAAG,KAAK,UAAU,KAAK,SAAS,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,IAAIE,GAAED,IAAGA,GAAE,IAAI,WAAWC,GAAE,OAAO,KAAK,SAAS,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,EAAED,GAAE,IAAIC,GAAE,KAAK,SAAS,MAAM,CAAC,MAAMD,GAAE,KAAK,SAAS,OAAOA,EAAC,EAAE,KAAK,SAAS,IAAI,CAAC,IAAIG,IAAE,SAASJ,GAAEC,GAAE,CAAC,IAAIC,GAAE,KAAKD,GAAEA,IAAGD,GAAE,QAAQA,GAAE,SAASC,GAAED,GAAE,QAAQE,GAAED,GAAE,EAAE,GAAGC,KAAS,IAAIF,GAAEE,EAAC,IAAb,KAAiBA,KAAI,OAAOA,GAAE,GAAQA,KAAJ,EAAFD,GAAUC,GAAE,EAAEF,GAAEE,EAAC,CAAC,EAAED,GAAEC,GAAED,EAAC,GAAEA,EAAC,EAAEI,GAAEJ,GAAEG,KAAIH,GAAE,SAAS,EAAE,YAAYI,GAAEJ,GAAE,SAAS,EAAEG,EAAC,EAAE,KAAK,SAASH,GAAE,SAASG,GAAEH,GAAE,MAAM,IAAII,GAAEJ,GAAE,MAAM,EAAEG,EAAC,EAAE,KAAK,SAASH,GAAE,MAAMG,GAAEH,GAAE,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE,WAAWI,EAAC,EAAE,KAAKL,GAAE,IAAI,CAAC,CAAC,EAAE,EAAE,UAAU,MAAM,UAAU,CAAC,KAAK,UAAU,KAAK,SAAS,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE,WAAW,KAAK,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,KAAK,EAAE,EAAE,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,aAAa,SAASA,GAAE,CAAC,KAAK,KAAK,CAAC,KAAK,EAAE,WAAWA,GAAE,IAAI,EAAE,KAAKA,GAAE,IAAI,CAAC,CAAC,EAAE,EAAE,iBAAiB,CAAC,EAAE,CAAC,gBAAgB,GAAG,yBAAyB,GAAG,YAAY,GAAG,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,SAAS,EAAEA,GAAE,CAAC,OAAOA,EAAC,CAAC,SAAS,EAAEA,GAAEC,GAAE,CAAC,QAAQC,GAAE,EAAEA,GAAEF,GAAE,OAAO,EAAEE,GAAED,GAAEC,EAAC,EAAE,IAAIF,GAAE,WAAWE,EAAC,EAAE,OAAOD,EAAC,CAAC,EAAE,cAAc,EAAE,EAAE,QAAQ,SAASA,GAAEC,GAAE,CAAC,EAAE,aAAa,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,KAAK,CAACD,EAAC,EAAE,CAAC,KAAKC,EAAC,CAAC,CAAC,MAAS,CAAC,GAAG,CAAC,IAAIE,GAAE,IAAI,KAAK,aAAa,KAAK,mBAAmB,KAAK,gBAAgB,KAAK,eAAe,OAAOA,GAAE,OAAOH,EAAC,EAAEG,GAAE,QAAQF,EAAC,CAAC,MAAS,CAAC,MAAM,IAAI,MAAM,iCAAiC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,iBAAiB,SAASF,GAAEC,GAAEC,GAAE,CAAC,IAAIE,GAAE,CAAC,EAAEC,GAAE,EAAEC,GAAEN,GAAE,OAAO,GAAGM,IAAGJ,GAAE,OAAO,OAAO,aAAa,MAAM,KAAKF,EAAC,EAAE,KAAKK,GAAEC,IAAaL,KAAV,SAA4BA,KAAf,aAAiBG,GAAE,KAAK,OAAO,aAAa,MAAM,KAAKJ,GAAE,MAAMK,GAAE,KAAK,IAAIA,GAAEH,GAAEI,EAAC,CAAC,CAAC,CAAC,EAAEF,GAAE,KAAK,OAAO,aAAa,MAAM,KAAKJ,GAAE,SAASK,GAAE,KAAK,IAAIA,GAAEH,GAAEI,EAAC,CAAC,CAAC,CAAC,EAAED,IAAGH,GAAE,OAAOE,GAAE,KAAK,EAAE,CAAC,EAAE,gBAAgB,SAASJ,GAAE,CAAC,QAAQC,GAAE,GAAGC,GAAE,EAAEA,GAAEF,GAAE,OAAOE,KAAID,IAAG,OAAO,aAAaD,GAAEE,EAAC,CAAC,EAAE,OAAOD,EAAC,EAAE,eAAe,CAAC,YAAW,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,YAAgB,OAAO,aAAa,MAAM,KAAK,IAAI,WAAW,CAAC,CAAC,EAAE,SAAtD,CAA4D,MAAS,CAAC,MAAM,EAAE,CAAC,GAAE,EAAE,YAAW,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,YAAgB,OAAO,aAAa,MAAM,KAAK,EAAE,YAAY,CAAC,CAAC,EAAE,SAArD,CAA2D,MAAS,CAAC,MAAM,EAAE,CAAC,GAAE,CAAC,CAAC,EAAE,SAAS,EAAED,GAAE,CAAC,IAAIC,GAAE,MAAMC,GAAE,EAAE,UAAUF,EAAC,EAAEI,GAAE,GAAG,GAAkBF,KAAf,aAAiBE,GAAE,EAAE,eAAe,WAA0BF,KAAf,eAAmBE,GAAE,EAAE,eAAe,YAAYA,GAAE,KAAK,EAAEH,IAAG,GAAG,CAAC,OAAO,EAAE,iBAAiBD,GAAEE,GAAED,EAAC,CAAC,MAAS,CAACA,GAAE,KAAK,MAAMA,GAAE,CAAC,CAAC,CAAC,OAAO,EAAE,gBAAgBD,EAAC,CAAC,CAAC,SAAS,EAAEA,GAAEC,GAAE,CAAC,QAAQC,GAAE,EAAEA,GAAEF,GAAE,OAAOE,KAAID,GAAEC,EAAC,EAAEF,GAAEE,EAAC,EAAE,OAAOD,EAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,SAASD,GAAE,CAAC,OAAO,EAAEA,GAAE,IAAI,MAAMA,GAAE,MAAM,CAAC,CAAC,EAAE,YAAY,SAASA,GAAE,CAAC,OAAO,EAAE,OAAO,WAAWA,EAAC,EAAE,MAAM,EAAE,WAAW,SAASA,GAAE,CAAC,OAAO,EAAEA,GAAE,IAAI,WAAWA,GAAE,MAAM,CAAC,CAAC,EAAE,WAAW,SAASA,GAAE,CAAC,OAAO,EAAEA,GAAE,EAAE,YAAYA,GAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,SAASA,GAAE,CAAC,OAAO,IAAI,WAAWA,EAAC,EAAE,MAAM,EAAE,WAAW,SAASA,GAAE,CAAC,OAAO,IAAI,WAAWA,EAAC,CAAC,EAAE,WAAW,SAASA,GAAE,CAAC,OAAO,EAAE,cAAcA,EAAC,CAAC,CAAC,EAAE,EAAE,YAAY,CAAC,OAAO,SAASA,GAAE,CAAC,OAAO,EAAE,IAAI,WAAWA,EAAC,CAAC,CAAC,EAAE,MAAM,SAASA,GAAE,CAAC,OAAO,EAAE,IAAI,WAAWA,EAAC,EAAE,IAAI,MAAMA,GAAE,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,SAASA,GAAE,CAAC,OAAO,IAAI,WAAWA,EAAC,CAAC,EAAE,WAAW,SAASA,GAAE,CAAC,OAAO,EAAE,cAAc,IAAI,WAAWA,EAAC,CAAC,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,SAASA,GAAE,CAAC,OAAO,EAAEA,GAAE,IAAI,MAAMA,GAAE,MAAM,CAAC,CAAC,EAAE,YAAY,SAASA,GAAE,CAAC,OAAOA,GAAE,MAAM,EAAE,WAAW,EAAE,WAAW,SAASA,GAAE,CAAC,OAAO,EAAE,cAAcA,EAAC,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,SAASA,GAAE,CAAC,OAAO,EAAEA,GAAE,IAAI,MAAMA,GAAE,MAAM,CAAC,CAAC,EAAE,YAAY,SAASA,GAAE,CAAC,OAAO,EAAE,WAAW,WAAWA,EAAC,EAAE,MAAM,EAAE,WAAW,SAASA,GAAE,CAAC,OAAO,EAAEA,GAAE,IAAI,WAAWA,GAAE,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE,YAAY,SAASA,GAAEC,GAAE,CAAC,GAAGA,GAAEA,IAAG,GAAG,CAACD,GAAE,OAAOC,GAAE,EAAE,aAAaD,EAAC,EAAE,IAAIE,GAAE,EAAE,UAAUD,EAAC,EAAE,OAAO,EAAEC,EAAC,EAAEF,EAAC,EAAEC,EAAC,CAAC,EAAE,EAAE,QAAQ,SAASD,GAAE,CAAC,QAAQC,GAAED,GAAE,MAAM,GAAG,EAAEE,GAAE,CAAC,EAAEE,GAAE,EAAEA,GAAEH,GAAE,OAAOG,KAAI,CAAC,IAAIC,GAAEJ,GAAEG,EAAC,EAAQC,KAAN,KAAcA,KAAL,IAAYD,KAAJ,GAAOA,KAAIH,GAAE,OAAO,IAAWI,KAAP,KAASH,GAAE,IAAI,EAAEA,GAAE,KAAKG,EAAC,EAAE,CAAC,OAAOH,GAAE,KAAK,GAAG,CAAC,EAAE,EAAE,UAAU,SAASF,GAAE,CAAC,GAAa,OAAOA,IAAjB,SAAmB,MAAM,SAAS,IAAIC,GAAE,OAAO,UAAU,SAAS,KAAKD,EAAC,EAAE,OAAyBC,KAAnB,iBAAqB,QAAQ,EAAE,YAAY,EAAE,SAASD,EAAC,EAAE,aAAa,EAAE,YAAoCC,KAAxB,sBAA0B,aAAa,EAAE,aAAsCA,KAAzB,uBAA2B,cAAc,MAAM,EAAE,EAAE,aAAa,SAASD,GAAE,CAAC,GAAG,CAAC,EAAEA,GAAE,YAAY,CAAC,EAAE,MAAM,IAAI,MAAMA,GAAE,oCAAoC,CAAC,EAAE,EAAE,iBAAiB,MAAM,EAAE,iBAAiB,GAAG,EAAE,OAAO,SAASA,GAAE,CAAC,IAAIC,GAAEC,GAAEE,GAAE,GAAG,IAAIF,GAAE,EAAEA,IAAGF,IAAG,IAAI,OAAOE,KAAIE,IAAG,QAAQH,GAAED,GAAE,WAAWE,EAAC,GAAG,GAAG,IAAI,IAAID,GAAE,SAAS,EAAE,EAAE,YAAY,EAAE,OAAOG,EAAC,EAAE,EAAE,MAAM,SAASJ,GAAEC,GAAEC,GAAE,CAAC,aAAa,UAAU,CAACF,GAAE,MAAME,IAAG,KAAKD,IAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,SAASD,GAAEC,GAAE,CAAC,SAASC,IAAG,CAAC,CAACA,GAAE,UAAUD,GAAE,UAAUD,GAAE,UAAU,IAAIE,EAAC,EAAE,EAAE,OAAO,UAAU,CAAC,IAAIF,GAAEC,GAAEC,GAAE,CAAC,EAAE,IAAIF,GAAE,EAAEA,GAAE,UAAU,OAAOA,KAAI,IAAIC,MAAK,UAAUD,EAAC,EAAE,OAAO,UAAU,eAAe,KAAK,UAAUA,EAAC,EAAEC,EAAC,GAAYC,GAAED,EAAC,IAAZ,SAAgBC,GAAED,EAAC,EAAE,UAAUD,EAAC,EAAEC,EAAC,GAAG,OAAOC,EAAC,EAAE,EAAE,eAAe,SAASA,GAAEF,GAAEI,GAAEC,GAAEC,GAAE,CAAC,OAAO,EAAE,QAAQ,QAAQN,EAAC,EAAE,KAAK,SAASI,GAAE,CAAC,OAAO,EAAE,OAAOA,cAAa,MAAW,CAAC,gBAAgB,eAAe,EAAE,QAAQ,OAAO,UAAU,SAAS,KAAKA,EAAC,CAAC,IAAhF,IAA4F,KAAK,UAAU,cAAxB,OAAoCA,GAAE,YAAY,EAAe,OAAO,WAApB,IAA+B,IAAI,EAAE,QAAQ,SAASH,GAAEC,GAAE,CAAC,IAAIF,GAAE,IAAI,WAAWA,GAAE,OAAO,SAASA,GAAE,CAACC,GAAED,GAAE,OAAO,MAAM,CAAC,EAAEA,GAAE,QAAQ,SAASA,GAAE,CAACE,GAAEF,GAAE,OAAO,KAAK,CAAC,EAAEA,GAAE,kBAAkBI,EAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,OAAO,IAAI,MAAMF,GAAE,+CAA+C,CAAC,EAAEE,EAAC,CAAC,EAAE,KAAK,SAASJ,GAAE,CAAC,IAAIC,GAAE,EAAE,UAAUD,EAAC,EAAE,OAAOC,IAAmBA,KAAhB,cAAkBD,GAAE,EAAE,YAAY,aAAaA,EAAC,EAAaC,KAAX,WAAeK,GAAEN,GAAE,EAAE,OAAOA,EAAC,EAAEI,IAAQC,KAAL,KAASL,IAAE,SAASA,GAAE,CAAC,OAAO,EAAEA,GAAE,EAAE,WAAW,IAAI,WAAWA,GAAE,MAAM,EAAE,IAAI,MAAMA,GAAE,MAAM,CAAC,CAAC,GAAEA,EAAC,IAAIA,IAAG,EAAE,QAAQ,OAAO,IAAI,MAAM,2BAA2BE,GAAE,4EAA4E,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,gBAAgB,GAAG,YAAY,GAAG,aAAa,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,EAAEF,GAAE,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,YAAYA,EAAC,CAAC,EAAE,UAAU,CAAC,eAAe,SAASA,GAAE,CAAC,GAAG,CAAC,KAAK,OAAO,sBAAsBA,EAAC,EAAE,CAAC,KAAK,OAAO,OAAO,EAAE,IAAIC,GAAE,KAAK,OAAO,WAAW,CAAC,EAAE,MAAM,IAAI,MAAM,+CAA+C,EAAE,OAAOA,EAAC,EAAE,cAAc,EAAE,OAAOD,EAAC,EAAE,GAAG,CAAC,CAAC,EAAE,YAAY,SAASA,GAAEC,GAAE,CAAC,IAAIC,GAAE,KAAK,OAAO,MAAM,KAAK,OAAO,SAASF,EAAC,EAAE,IAAII,GAAE,KAAK,OAAO,WAAW,CAAC,IAAIH,GAAE,OAAO,KAAK,OAAO,SAASC,EAAC,EAAEE,EAAC,EAAE,sBAAsB,UAAU,CAAC,KAAK,WAAW,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,wBAAwB,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,4BAA4B,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,kBAAkB,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,eAAe,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,iBAAiB,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,iBAAiB,KAAK,OAAO,QAAQ,CAAC,EAAE,IAAIJ,GAAE,KAAK,OAAO,SAAS,KAAK,gBAAgB,EAAEC,GAAE,EAAE,WAAW,aAAa,QAAQC,GAAE,EAAE,YAAYD,GAAED,EAAC,EAAE,KAAK,WAAW,KAAK,YAAY,eAAeE,EAAC,CAAC,EAAE,2BAA2B,UAAU,CAAC,KAAK,sBAAsB,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,OAAO,KAAK,CAAC,EAAE,KAAK,WAAW,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,wBAAwB,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,4BAA4B,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,kBAAkB,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,eAAe,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,iBAAiB,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,oBAAoB,CAAC,EAAE,QAAQF,GAAEC,GAAEC,GAAEE,GAAE,KAAK,sBAAsB,GAAG,EAAEA,IAAGJ,GAAE,KAAK,OAAO,QAAQ,CAAC,EAAEC,GAAE,KAAK,OAAO,QAAQ,CAAC,EAAEC,GAAE,KAAK,OAAO,SAASD,EAAC,EAAE,KAAK,oBAAoBD,EAAC,EAAE,CAAC,GAAGA,GAAE,OAAOC,GAAE,MAAMC,EAAC,CAAC,EAAE,kCAAkC,UAAU,CAAC,GAAG,KAAK,6BAA6B,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,mCAAmC,KAAK,OAAO,QAAQ,CAAC,EAAE,KAAK,WAAW,KAAK,OAAO,QAAQ,CAAC,EAAE,EAAE,KAAK,WAAW,MAAM,IAAI,MAAM,qCAAqC,CAAC,EAAE,eAAe,UAAU,CAAC,IAAIF,GAAEC,GAAE,IAAID,GAAE,EAAEA,GAAE,KAAK,MAAM,OAAOA,KAAIC,GAAE,KAAK,MAAMD,EAAC,EAAE,KAAK,OAAO,SAASC,GAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,iBAAiB,EAAEA,GAAE,cAAc,KAAK,MAAM,EAAEA,GAAE,WAAW,EAAEA,GAAE,kBAAkB,CAAC,EAAE,eAAe,UAAU,CAAC,IAAID,GAAE,IAAI,KAAK,OAAO,SAAS,KAAK,gBAAgB,EAAE,KAAK,OAAO,sBAAsB,EAAE,mBAAmB,IAAIA,GAAE,IAAI,EAAE,CAAC,MAAM,KAAK,KAAK,EAAE,KAAK,WAAW,GAAG,gBAAgB,KAAK,MAAM,EAAE,KAAK,MAAM,KAAKA,EAAC,EAAE,GAAG,KAAK,oBAAoB,KAAK,MAAM,QAAY,KAAK,oBAAT,GAAgC,KAAK,MAAM,SAAf,EAAsB,MAAM,IAAI,MAAM,kCAAkC,KAAK,kBAAkB,gCAAgC,KAAK,MAAM,MAAM,CAAC,EAAE,iBAAiB,UAAU,CAAC,IAAIA,GAAE,KAAK,OAAO,qBAAqB,EAAE,qBAAqB,EAAE,GAAGA,GAAE,EAAE,MAAM,KAAK,YAAY,EAAE,EAAE,iBAAiB,EAAuJ,IAAI,MAAM,oDAAoD,EAAnN,IAAI,MAAM,yIAAyI,EAAkE,KAAK,OAAO,SAASA,EAAC,EAAE,IAAIC,GAAED,GAAE,GAAG,KAAK,eAAe,EAAE,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,KAAK,aAAa,EAAE,kBAAkB,KAAK,0BAA0B,EAAE,kBAAkB,KAAK,8BAA8B,EAAE,kBAAkB,KAAK,oBAAoB,EAAE,kBAAkB,KAAK,iBAAiB,EAAE,kBAAkB,KAAK,mBAAmB,EAAE,iBAAiB,CAAC,GAAG,KAAK,MAAM,IAAIA,GAAE,KAAK,OAAO,qBAAqB,EAAE,+BAA+B,GAAG,EAAE,MAAM,IAAI,MAAM,sEAAsE,EAAE,GAAG,KAAK,OAAO,SAASA,EAAC,EAAE,KAAK,eAAe,EAAE,+BAA+B,EAAE,KAAK,kCAAkC,EAAE,CAAC,KAAK,YAAY,KAAK,mCAAmC,EAAE,2BAA2B,IAAI,KAAK,mCAAmC,KAAK,OAAO,qBAAqB,EAAE,2BAA2B,EAAE,KAAK,mCAAmC,GAAG,MAAM,IAAI,MAAM,8DAA8D,EAAE,KAAK,OAAO,SAAS,KAAK,kCAAkC,EAAE,KAAK,eAAe,EAAE,2BAA2B,EAAE,KAAK,2BAA2B,CAAC,CAAC,IAAIE,GAAE,KAAK,iBAAiB,KAAK,eAAe,KAAK,QAAQA,IAAG,GAAGA,IAAG,GAAG,KAAK,uBAAuB,IAAIE,GAAEH,GAAEC,GAAE,GAAG,EAAEE,GAAE,KAAK,YAAYH,GAAE,EAAE,mBAAmB,IAAI,KAAK,OAAO,KAAKG,YAAWA,GAAE,EAAE,MAAM,IAAI,MAAM,0BAA0B,KAAK,IAAIA,EAAC,EAAE,SAAS,CAAC,EAAE,cAAc,SAASJ,GAAE,CAAC,KAAK,OAAO,EAAEA,EAAC,CAAC,EAAE,KAAK,SAASA,GAAE,CAAC,KAAK,cAAcA,EAAC,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,qBAAqB,GAAG,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,WAAW,EAAE,SAAS,EAAEA,GAAEC,GAAE,CAAC,KAAK,QAAQD,GAAE,KAAK,YAAYC,EAAC,CAAC,EAAE,UAAU,CAAC,YAAY,UAAU,CAAC,OAAW,EAAE,KAAK,UAAX,CAAmB,EAAE,QAAQ,UAAU,CAAC,OAAc,KAAK,KAAK,UAAjB,IAAyB,EAAE,cAAc,SAASD,GAAE,CAAC,IAAIC,GAAEC,GAAE,GAAGF,GAAE,KAAK,EAAE,EAAE,KAAK,eAAeA,GAAE,QAAQ,CAAC,EAAEE,GAAEF,GAAE,QAAQ,CAAC,EAAE,KAAK,SAASA,GAAE,SAAS,KAAK,cAAc,EAAEA,GAAE,KAAKE,EAAC,EAAO,KAAK,iBAAV,IAA+B,KAAK,mBAAV,GAA2B,MAAM,IAAI,MAAM,oIAAoI,EAAE,IAAWD,IAAE,SAASD,GAAE,CAAC,QAAQC,MAAK,EAAE,GAAG,OAAO,UAAU,eAAe,KAAK,EAAEA,EAAC,GAAG,EAAEA,EAAC,EAAE,QAAQD,GAAE,OAAO,EAAEC,EAAC,EAAE,OAAO,IAAI,GAAE,KAAK,iBAAiB,KAAjJ,KAAoJ,MAAM,IAAI,MAAM,+BAA+B,EAAE,OAAO,KAAK,iBAAiB,EAAE,0BAA0B,EAAE,YAAY,SAAS,KAAK,QAAQ,EAAE,GAAG,EAAE,KAAK,aAAa,IAAI,EAAE,KAAK,eAAe,KAAK,iBAAiB,KAAK,MAAMA,GAAED,GAAE,SAAS,KAAK,cAAc,CAAC,CAAC,EAAE,gBAAgB,SAASA,GAAE,CAAC,KAAK,cAAcA,GAAE,QAAQ,CAAC,EAAEA,GAAE,KAAK,CAAC,EAAE,KAAK,QAAQA,GAAE,QAAQ,CAAC,EAAE,KAAK,kBAAkBA,GAAE,WAAW,CAAC,EAAE,KAAK,KAAKA,GAAE,SAAS,EAAE,KAAK,MAAMA,GAAE,QAAQ,CAAC,EAAE,KAAK,eAAeA,GAAE,QAAQ,CAAC,EAAE,KAAK,iBAAiBA,GAAE,QAAQ,CAAC,EAAE,IAAIC,GAAED,GAAE,QAAQ,CAAC,EAAE,GAAG,KAAK,kBAAkBA,GAAE,QAAQ,CAAC,EAAE,KAAK,kBAAkBA,GAAE,QAAQ,CAAC,EAAE,KAAK,gBAAgBA,GAAE,QAAQ,CAAC,EAAE,KAAK,uBAAuBA,GAAE,QAAQ,CAAC,EAAE,KAAK,uBAAuBA,GAAE,QAAQ,CAAC,EAAE,KAAK,kBAAkBA,GAAE,QAAQ,CAAC,EAAE,KAAK,YAAY,EAAE,MAAM,IAAI,MAAM,iCAAiC,EAAEA,GAAE,KAAKC,EAAC,EAAE,KAAK,gBAAgBD,EAAC,EAAE,KAAK,qBAAqBA,EAAC,EAAE,KAAK,YAAYA,GAAE,SAAS,KAAK,iBAAiB,CAAC,EAAE,kBAAkB,UAAU,CAAC,KAAK,gBAAgB,KAAK,KAAK,eAAe,KAAK,IAAIA,GAAE,KAAK,eAAe,EAAE,KAAK,IAAI,CAAC,EAAE,GAAG,KAAK,wBAA2BA,IAAH,IAAO,KAAK,eAAe,GAAG,KAAK,wBAA2BA,IAAH,IAAO,KAAK,gBAAgB,KAAK,wBAAwB,GAAG,OAAO,KAAK,KAAW,KAAK,YAAY,MAAM,EAAE,IAA/B,MAAmC,KAAK,IAAI,GAAG,EAAE,qBAAqB,UAAU,CAAC,GAAG,KAAK,YAAY,CAAC,EAAE,CAAC,IAAIA,GAAE,EAAE,KAAK,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,mBAAmB,EAAE,mBAAmB,KAAK,iBAAiBA,GAAE,QAAQ,CAAC,GAAG,KAAK,iBAAiB,EAAE,mBAAmB,KAAK,eAAeA,GAAE,QAAQ,CAAC,GAAG,KAAK,oBAAoB,EAAE,mBAAmB,KAAK,kBAAkBA,GAAE,QAAQ,CAAC,GAAG,KAAK,kBAAkB,EAAE,mBAAmB,KAAK,gBAAgBA,GAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,gBAAgB,SAASA,GAAE,CAAC,IAAIC,GAAEC,GAAEE,GAAEC,GAAEL,GAAE,MAAM,KAAK,kBAAkB,IAAI,KAAK,cAAc,KAAK,YAAY,CAAC,GAAGA,GAAE,MAAM,EAAEK,IAAGJ,GAAED,GAAE,QAAQ,CAAC,EAAEE,GAAEF,GAAE,QAAQ,CAAC,EAAEI,GAAEJ,GAAE,SAASE,EAAC,EAAE,KAAK,YAAYD,EAAC,EAAE,CAAC,GAAGA,GAAE,OAAOC,GAAE,MAAME,EAAC,EAAEJ,GAAE,SAASK,EAAC,CAAC,EAAE,WAAW,UAAU,CAAC,IAAIL,GAAE,EAAE,WAAW,aAAa,QAAQ,GAAG,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,WAAW,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,WAAW,KAAK,WAAW,MAAM,CAAC,IAAIC,GAAE,KAAK,0BAA0B,EAAE,GAAUA,KAAP,KAAS,KAAK,YAAYA,OAAM,CAAC,IAAIC,GAAE,EAAE,YAAYF,GAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,KAAK,YAAY,eAAeE,EAAC,CAAC,CAAC,IAAIE,GAAE,KAAK,6BAA6B,EAAE,GAAUA,KAAP,KAAS,KAAK,eAAeA,OAAM,CAAC,IAAIC,GAAE,EAAE,YAAYL,GAAE,KAAK,WAAW,EAAE,KAAK,eAAe,KAAK,YAAY,eAAeK,EAAC,CAAC,CAAC,CAAC,EAAE,0BAA0B,UAAU,CAAC,IAAIL,GAAE,KAAK,YAAY,KAAK,EAAE,GAAGA,GAAE,CAAC,IAAIC,GAAE,EAAED,GAAE,KAAK,EAAE,OAAWC,GAAE,QAAQ,CAAC,IAAf,GAAsB,EAAE,KAAK,QAAQ,IAAIA,GAAE,QAAQ,CAAC,EAAnC,KAA0C,EAAE,WAAWA,GAAE,SAASD,GAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,6BAA6B,UAAU,CAAC,IAAIA,GAAE,KAAK,YAAY,KAAK,EAAE,GAAGA,GAAE,CAAC,IAAIC,GAAE,EAAED,GAAE,KAAK,EAAE,OAAWC,GAAE,QAAQ,CAAC,IAAf,GAAsB,EAAE,KAAK,WAAW,IAAIA,GAAE,QAAQ,CAAC,EAAtC,KAA6C,EAAE,WAAWA,GAAE,SAASD,GAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,UAAU,EAAE,qBAAqB,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,SAAS,EAAEA,GAAEC,GAAEC,GAAE,CAAC,KAAK,KAAKF,GAAE,KAAK,IAAIE,GAAE,IAAI,KAAK,KAAKA,GAAE,KAAK,KAAK,QAAQA,GAAE,QAAQ,KAAK,gBAAgBA,GAAE,gBAAgB,KAAK,eAAeA,GAAE,eAAe,KAAK,MAAMD,GAAE,KAAK,YAAYC,GAAE,OAAO,KAAK,QAAQ,CAAC,YAAYA,GAAE,YAAY,mBAAmBA,GAAE,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,wBAAwB,EAAE,EAAE,UAAU,CAAC,eAAe,SAASF,GAAE,CAAC,IAAIC,GAAE,KAAKC,GAAE,SAAS,GAAG,CAAC,GAAG,CAACF,GAAE,MAAM,IAAI,MAAM,2BAA2B,EAAE,IAAII,IAAcF,GAAEF,GAAE,YAAY,KAA5B,UAAyCE,KAAT,OAA4BA,KAAjB,gBAA6BA,KAAT,SAAaA,GAAE,UAAUD,GAAE,KAAK,kBAAkB,EAAE,IAAII,GAAE,CAAC,KAAK,YAAYA,IAAG,CAACD,KAAIH,GAAEA,GAAE,KAAK,IAAI,EAAE,gBAAgB,GAAG,CAACI,IAAGD,KAAIH,GAAEA,GAAE,KAAK,IAAI,EAAE,gBAAgB,EAAE,OAAOD,GAAE,EAAEC,GAAE,IAAI,EAAE,OAAO,GAAG,MAAMD,EAAC,CAAC,CAAC,OAAO,IAAI,EAAEC,GAAEC,GAAE,EAAE,CAAC,EAAE,MAAM,SAASF,GAAEC,GAAE,CAAC,OAAO,KAAK,eAAeD,EAAC,EAAE,WAAWC,EAAC,CAAC,EAAE,WAAW,SAASD,GAAEC,GAAE,CAAC,OAAO,KAAK,eAAeD,IAAG,YAAY,EAAE,eAAeC,EAAC,CAAC,EAAE,gBAAgB,SAASD,GAAEC,GAAE,CAAC,GAAG,KAAK,iBAAiB,GAAG,KAAK,MAAM,YAAY,QAAQD,GAAE,MAAM,OAAO,KAAK,MAAM,oBAAoB,EAAE,IAAIE,GAAE,KAAK,kBAAkB,EAAE,OAAO,KAAK,cAAcA,GAAEA,GAAE,KAAK,IAAI,EAAE,gBAAgB,GAAG,EAAE,iBAAiBA,GAAEF,GAAEC,EAAC,CAAC,EAAE,kBAAkB,UAAU,CAAC,OAAO,KAAK,iBAAiB,EAAE,KAAK,MAAM,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,WAAW,eAAe,eAAe,eAAe,EAAE,EAAE,UAAU,CAAC,MAAM,IAAI,MAAM,4EAA4E,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,qBAAqB,EAAE,sBAAsB,GAAG,yBAAyB,GAAG,wBAAwB,GAAG,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,SAASA,GAAE,CAAC,aAAa,IAAI,EAAE,EAAED,GAAEC,GAAE,kBAAkBA,GAAE,uBAAuB,GAAGD,GAAE,CAAC,IAAI,EAAE,EAAE,EAAE,IAAIA,GAAE,CAAC,EAAE,EAAEC,GAAE,SAAS,eAAe,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,SAASA,GAAE,cAAuBA,GAAE,iBAAX,OAA0B,EAAE,aAAaA,IAAG,uBAAuBA,GAAE,SAAS,cAAc,QAAQ,EAAE,UAAU,CAAC,IAAID,GAAEC,GAAE,SAAS,cAAc,QAAQ,EAAED,GAAE,mBAAmB,UAAU,CAAC,EAAE,EAAEA,GAAE,mBAAmB,KAAKA,GAAE,WAAW,YAAYA,EAAC,EAAEA,GAAE,IAAI,EAAEC,GAAE,SAAS,gBAAgB,YAAYD,EAAC,CAAC,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAIC,GAAE,eAAe,EAAE,MAAM,UAAU,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,GAAG,CAAC,IAAID,GAAEC,GAAE,EAAE,GAAG,QAAQC,GAAE,EAAE,OAAOA,IAAG,CAAC,IAAID,GAAE,EAAE,EAAE,CAAC,EAAED,GAAE,GAAG,EAAEA,GAAEE,IAAGD,GAAED,EAAC,EAAE,EAAEE,GAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,SAASF,GAAE,CAAK,EAAE,KAAKA,EAAC,IAAZ,GAAe,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,KAAkB,OAAO,OAApB,IAA2B,OAAoB,OAAO,KAApB,IAAyB,KAAkB,OAAO,OAApB,IAA2B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,WAAW,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,EAAEA,GAAE,CAAC,GAAe,OAAOA,IAAnB,WAAqB,MAAM,IAAI,UAAU,6BAA6B,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,CAAC,EAAE,KAAK,QAAQ,OAAOA,KAAI,GAAG,EAAE,KAAKA,EAAC,CAAC,CAAC,SAAS,EAAEA,GAAEC,GAAEC,GAAE,CAAC,KAAK,QAAQF,GAAc,OAAOC,IAAnB,aAAuB,KAAK,YAAYA,GAAE,KAAK,cAAc,KAAK,oBAAgC,OAAOC,IAAnB,aAAuB,KAAK,WAAWA,GAAE,KAAK,aAAa,KAAK,kBAAkB,CAAC,SAAS,EAAED,GAAEC,GAAEE,GAAE,CAAC,EAAE,UAAU,CAAC,IAAIJ,GAAE,GAAG,CAACA,GAAEE,GAAEE,EAAC,CAAC,OAAOJ,GAAE,CAAC,OAAO,EAAE,OAAOC,GAAED,EAAC,CAAC,CAACA,KAAIC,GAAE,EAAE,OAAOA,GAAE,IAAI,UAAU,oCAAoC,CAAC,EAAE,EAAE,QAAQA,GAAED,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAEA,GAAE,CAAC,IAAIC,GAAED,IAAGA,GAAE,KAAK,GAAGA,KAAc,OAAOA,IAAjB,UAAgC,OAAOA,IAAnB,aAAmC,OAAOC,IAAnB,WAAqB,OAAO,UAAU,CAACA,GAAE,MAAMD,GAAE,SAAS,CAAC,CAAC,CAAC,SAAS,EAAEC,GAAED,GAAE,CAAC,IAAIE,GAAE,GAAG,SAASE,GAAEJ,GAAE,CAACE,KAAIA,GAAE,GAAG,EAAE,OAAOD,GAAED,EAAC,EAAE,CAAC,SAASK,GAAEL,GAAE,CAACE,KAAIA,GAAE,GAAG,EAAE,QAAQD,GAAED,EAAC,EAAE,CAAC,IAAIM,GAAE,EAAE,UAAU,CAACN,GAAEK,GAAED,EAAC,CAAC,CAAC,EAAYE,GAAE,SAAZ,SAAoBF,GAAEE,GAAE,KAAK,CAAC,CAAC,SAAS,EAAEN,GAAEC,GAAE,CAAC,IAAIC,GAAE,CAAC,EAAE,GAAG,CAACA,GAAE,MAAMF,GAAEC,EAAC,EAAEC,GAAE,OAAO,SAAS,OAAOF,GAAE,CAACE,GAAE,OAAO,QAAQA,GAAE,MAAMF,EAAC,CAAC,OAAOE,EAAC,EAAE,EAAE,QAAQ,GAAG,UAAU,QAAQ,SAASD,GAAE,CAAC,GAAe,OAAOA,IAAnB,WAAqB,OAAO,KAAK,IAAIC,GAAE,KAAK,YAAY,OAAO,KAAK,KAAK,SAASF,GAAE,CAAC,OAAOE,GAAE,QAAQD,GAAE,CAAC,EAAE,KAAK,UAAU,CAAC,OAAOD,EAAC,CAAC,CAAC,EAAE,SAASA,GAAE,CAAC,OAAOE,GAAE,QAAQD,GAAE,CAAC,EAAE,KAAK,UAAU,CAAC,MAAMD,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,MAAM,SAASA,GAAE,CAAC,OAAO,KAAK,KAAK,KAAKA,EAAC,CAAC,EAAE,EAAE,UAAU,KAAK,SAASA,GAAEC,GAAE,CAAC,GAAe,OAAOD,IAAnB,YAAsB,KAAK,QAAQ,GAAe,OAAOC,IAAnB,YAAsB,KAAK,QAAQ,EAAE,OAAO,KAAK,IAAIC,GAAE,IAAI,KAAK,YAAY,CAAC,EAAE,YAAK,QAAQ,EAAE,EAAEA,GAAE,KAAK,QAAQ,EAAEF,GAAEC,GAAE,KAAK,OAAO,EAAE,KAAK,MAAM,KAAK,IAAI,EAAEC,GAAEF,GAAEC,EAAC,CAAC,EAASC,EAAC,EAAE,EAAE,UAAU,cAAc,SAASF,GAAE,CAAC,EAAE,QAAQ,KAAK,QAAQA,EAAC,CAAC,EAAE,EAAE,UAAU,mBAAmB,SAASA,GAAE,CAAC,EAAE,KAAK,QAAQ,KAAK,YAAYA,EAAC,CAAC,EAAE,EAAE,UAAU,aAAa,SAASA,GAAE,CAAC,EAAE,OAAO,KAAK,QAAQA,EAAC,CAAC,EAAE,EAAE,UAAU,kBAAkB,SAASA,GAAE,CAAC,EAAE,KAAK,QAAQ,KAAK,WAAWA,EAAC,CAAC,EAAE,EAAE,QAAQ,SAASA,GAAEC,GAAE,CAAC,IAAIC,GAAE,EAAE,EAAED,EAAC,EAAE,GAAaC,GAAE,SAAZ,QAAmB,OAAO,EAAE,OAAOF,GAAEE,GAAE,KAAK,EAAE,IAAIE,GAAEF,GAAE,MAAM,GAAGE,GAAE,EAAEJ,GAAEI,EAAC,MAAM,CAACJ,GAAE,MAAM,EAAEA,GAAE,QAAQC,GAAE,QAAQI,GAAE,GAAGC,GAAEN,GAAE,MAAM,OAAO,EAAEK,GAAEC,IAAGN,GAAE,MAAMK,EAAC,EAAE,cAAcJ,EAAC,CAAC,CAAC,OAAOD,EAAC,EAAE,EAAE,OAAO,SAASA,GAAEC,GAAE,CAACD,GAAE,MAAM,EAAEA,GAAE,QAAQC,GAAE,QAAQC,GAAE,GAAGE,GAAEJ,GAAE,MAAM,OAAO,EAAEE,GAAEE,IAAGJ,GAAE,MAAME,EAAC,EAAE,aAAaD,EAAC,EAAE,OAAOD,EAAC,EAAE,EAAE,QAAQ,SAASA,GAAE,CAAC,OAAGA,cAAa,KAAYA,GAAS,EAAE,QAAQ,IAAI,KAAK,CAAC,EAAEA,EAAC,CAAC,EAAE,EAAE,OAAO,SAASA,GAAE,CAAC,IAAIC,GAAE,IAAI,KAAK,CAAC,EAAE,OAAO,EAAE,OAAOA,GAAED,EAAC,CAAC,EAAE,EAAE,IAAI,SAASA,GAAE,CAAC,IAAIE,GAAE,KAAK,GAAsB,OAAO,UAAU,SAAS,KAAKF,EAAC,IAAnD,iBAAqD,OAAO,KAAK,OAAO,IAAI,UAAU,kBAAkB,CAAC,EAAE,IAAII,GAAEJ,GAAE,OAAOK,GAAE,GAAG,GAAG,CAACD,GAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,EAA4C,QAAtCE,GAAE,IAAI,MAAMF,EAAC,EAAEG,GAAE,EAAEN,GAAE,GAAGO,GAAE,IAAI,KAAK,CAAC,EAAO,EAAEP,GAAEG,IAAGK,GAAET,GAAEC,EAAC,EAAEA,EAAC,EAAE,OAAOO,GAAE,SAASC,GAAET,GAAEC,GAAE,CAACC,GAAE,QAAQF,EAAC,EAAE,KAAK,SAASA,GAAE,CAACM,GAAEL,EAAC,EAAED,GAAE,EAAEO,KAAIH,IAAGC,KAAIA,GAAE,GAAG,EAAE,QAAQG,GAAEF,EAAC,EAAE,EAAE,SAASN,GAAE,CAACK,KAAIA,GAAE,GAAG,EAAE,OAAOG,GAAER,EAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,SAASA,GAAE,CAAC,IAAIC,GAAE,KAAK,GAAsB,OAAO,UAAU,SAAS,KAAKD,EAAC,IAAnD,iBAAqD,OAAO,KAAK,OAAO,IAAI,UAAU,kBAAkB,CAAC,EAAE,IAAIE,GAAEF,GAAE,OAAOI,GAAE,GAAG,GAAG,CAACF,GAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,EAAyB,QAAnBG,GAAE,GAAGC,GAAE,IAAI,KAAK,CAAC,EAAO,EAAED,GAAEH,IAAGK,GAAEP,GAAEK,EAAC,EAAEJ,GAAE,QAAQM,EAAC,EAAE,KAAK,SAASP,GAAE,CAACI,KAAIA,GAAE,GAAG,EAAE,QAAQE,GAAEN,EAAC,EAAE,EAAE,SAASA,GAAE,CAACI,KAAIA,GAAE,GAAG,EAAE,OAAOE,GAAEN,EAAC,EAAE,CAAC,EAAE,IAAIO,GAAE,OAAOD,EAAC,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,EAAE,eAAe,EAAE,EAAE,eAAe,EAAE,EAAE,sBAAsB,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,gBAAgB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,uBAAuB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,OAAO,UAAU,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,SAAS,EAAEN,GAAE,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,IAAI,EAAEA,EAAC,EAAE,KAAK,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,MAAM,WAAW,GAAG,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,EAAEA,IAAG,CAAC,CAAC,EAAE,IAAIC,GAAE,KAAK,QAAQA,GAAE,KAAK,EAAEA,GAAE,WAAWA,GAAE,WAAW,CAACA,GAAE,WAAWA,GAAE,MAAM,EAAEA,GAAE,YAAYA,GAAE,WAAW,KAAKA,GAAE,YAAY,IAAI,KAAK,IAAI,EAAE,KAAK,IAAI,GAAG,KAAK,MAAM,GAAG,KAAK,OAAO,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,KAAK,UAAU,EAAE,IAAIC,GAAE,EAAE,aAAa,KAAK,KAAKD,GAAE,MAAMA,GAAE,OAAOA,GAAE,WAAWA,GAAE,SAASA,GAAE,QAAQ,EAAE,GAAGC,KAAI,EAAE,MAAM,IAAI,MAAM,EAAEA,EAAC,CAAC,EAAE,GAAGD,GAAE,QAAQ,EAAE,iBAAiB,KAAK,KAAKA,GAAE,MAAM,EAAEA,GAAE,WAAW,CAAC,IAAIG,GAAE,GAAGA,GAAY,OAAOH,GAAE,YAAnB,SAA8B,EAAE,WAAWA,GAAE,UAAU,EAA2B,EAAE,KAAKA,GAAE,UAAU,IAA5C,uBAA8C,IAAI,WAAWA,GAAE,UAAU,EAAEA,GAAE,YAAYC,GAAE,EAAE,qBAAqB,KAAK,KAAKE,EAAC,KAAK,EAAE,MAAM,IAAI,MAAM,EAAEF,EAAC,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC,CAAC,SAAS,EAAEF,GAAEC,GAAE,CAAC,IAAIC,GAAE,IAAI,EAAED,EAAC,EAAE,GAAGC,GAAE,KAAKF,GAAE,EAAE,EAAEE,GAAE,IAAI,MAAMA,GAAE,KAAK,EAAEA,GAAE,GAAG,EAAE,OAAOA,GAAE,MAAM,CAAC,EAAE,UAAU,KAAK,SAASF,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAEC,GAAE,KAAK,KAAKC,GAAE,KAAK,QAAQ,UAAU,GAAG,KAAK,MAAM,MAAM,GAAGF,GAAEH,KAAI,CAAC,CAACA,GAAEA,GAAOA,KAAL,GAAO,EAAE,EAAY,OAAOD,IAAjB,SAAmBK,GAAE,MAAM,EAAE,WAAWL,EAAC,EAA2B,EAAE,KAAKA,EAAC,IAAjC,uBAAmCK,GAAE,MAAM,IAAI,WAAWL,EAAC,EAAEK,GAAE,MAAML,GAAEK,GAAE,QAAQ,EAAEA,GAAE,SAASA,GAAE,MAAM,OAAO,EAAE,CAAC,GAAOA,GAAE,YAAN,IAAkBA,GAAE,OAAO,IAAI,EAAE,KAAKC,EAAC,EAAED,GAAE,SAAS,EAAEA,GAAE,UAAUC,KAAQJ,GAAE,EAAE,QAAQG,GAAED,EAAC,KAApB,GAAwBF,KAAI,EAAE,OAAO,KAAK,MAAMA,EAAC,EAAE,EAAE,KAAK,MAAM,IAAQG,GAAE,YAAN,IAAsBA,GAAE,WAAN,GAAoBD,KAAJ,GAAWA,KAAJ,KAAoB,KAAK,QAAQ,KAAxB,SAA2B,KAAK,OAAO,EAAE,cAAc,EAAE,UAAUC,GAAE,OAAOA,GAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE,UAAUA,GAAE,OAAOA,GAAE,QAAQ,CAAC,EAAE,QAAQ,EAAEA,GAAE,UAAcA,GAAE,YAAN,IAAsBH,KAAJ,GAAO,OAAWE,KAAJ,GAAOF,GAAE,EAAE,WAAW,KAAK,IAAI,EAAE,KAAK,MAAMA,EAAC,EAAE,KAAK,MAAM,GAAGA,KAAI,GAAOE,KAAJ,IAAQ,KAAK,MAAM,CAAC,EAAE,EAAEC,GAAE,UAAU,GAAG,EAAE,EAAE,UAAU,OAAO,SAASL,GAAE,CAAC,KAAK,OAAO,KAAKA,EAAC,CAAC,EAAE,EAAE,UAAU,MAAM,SAASA,GAAE,CAACA,KAAI,IAAe,KAAK,QAAQ,KAAxB,SAA2B,KAAK,OAAO,KAAK,OAAO,KAAK,EAAE,EAAE,KAAK,OAAO,EAAE,cAAc,KAAK,MAAM,GAAG,KAAK,OAAO,CAAC,EAAE,KAAK,IAAIA,GAAE,KAAK,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,WAAW,SAASA,GAAEC,GAAE,CAAC,OAAOA,GAAEA,IAAG,CAAC,GAAG,IAAI,GAAG,EAAED,GAAEC,EAAC,CAAC,EAAE,EAAE,KAAK,SAASD,GAAEC,GAAE,CAAC,OAAOA,GAAEA,IAAG,CAAC,GAAG,KAAK,GAAG,EAAED,GAAEC,EAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,OAAO,UAAU,SAAS,SAAS,EAAED,GAAE,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,IAAI,EAAEA,EAAC,EAAE,KAAK,QAAQ,EAAE,OAAO,CAAC,UAAU,MAAM,WAAW,EAAE,GAAG,EAAE,EAAEA,IAAG,CAAC,CAAC,EAAE,IAAIC,GAAE,KAAK,QAAQA,GAAE,KAAK,GAAGA,GAAE,YAAYA,GAAE,WAAW,KAAKA,GAAE,WAAW,CAACA,GAAE,WAAeA,GAAE,aAAN,IAAmBA,GAAE,WAAW,MAAM,EAAE,GAAGA,GAAE,YAAYA,GAAE,WAAW,KAAKD,IAAGA,GAAE,aAAaC,GAAE,YAAY,IAAI,GAAGA,GAAE,YAAYA,GAAE,WAAW,KAAQ,GAAGA,GAAE,aAAT,IAAuBA,GAAE,YAAY,IAAI,KAAK,IAAI,EAAE,KAAK,IAAI,GAAG,KAAK,MAAM,GAAG,KAAK,OAAO,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,KAAK,UAAU,EAAE,IAAIC,GAAE,EAAE,aAAa,KAAK,KAAKD,GAAE,UAAU,EAAE,GAAGC,KAAI,EAAE,KAAK,MAAM,IAAI,MAAM,EAAEA,EAAC,CAAC,EAAE,KAAK,OAAO,IAAI,EAAE,EAAE,iBAAiB,KAAK,KAAK,KAAK,MAAM,CAAC,CAAC,SAAS,EAAEF,GAAEC,GAAE,CAAC,IAAIC,GAAE,IAAI,EAAED,EAAC,EAAE,GAAGC,GAAE,KAAKF,GAAE,EAAE,EAAEE,GAAE,IAAI,MAAMA,GAAE,KAAK,EAAEA,GAAE,GAAG,EAAE,OAAOA,GAAE,MAAM,CAAC,EAAE,UAAU,KAAK,SAASF,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAEC,GAAEC,GAAEC,GAAEC,GAAE,EAAE,KAAK,KAAK,EAAE,KAAK,QAAQ,UAAU,EAAE,KAAK,QAAQ,WAAW,EAAE,GAAG,GAAG,KAAK,MAAM,MAAM,GAAGJ,GAAEH,KAAI,CAAC,CAACA,GAAEA,GAAOA,KAAL,GAAO,EAAE,SAAS,EAAE,WAAqB,OAAOD,IAAjB,SAAmB,EAAE,MAAM,EAAE,cAAcA,EAAC,EAA2B,EAAE,KAAKA,EAAC,IAAjC,uBAAmC,EAAE,MAAM,IAAI,WAAWA,EAAC,EAAE,EAAE,MAAMA,GAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,EAAE,CAAC,GAAO,EAAE,YAAN,IAAkB,EAAE,OAAO,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,UAAU,IAAIE,GAAE,EAAE,QAAQ,EAAE,EAAE,UAAU,KAAK,EAAE,aAAa,IAAIM,GAAY,OAAO,GAAjB,SAAmB,EAAE,WAAW,CAAC,EAA2B,EAAE,KAAK,CAAC,IAAjC,uBAAmC,IAAI,WAAW,CAAC,EAAE,EAAEN,GAAE,EAAE,qBAAqB,KAAK,KAAKM,EAAC,GAAGN,KAAI,EAAE,aAAkB,IAAL,KAASA,GAAE,EAAE,KAAK,EAAE,IAAIA,KAAI,EAAE,cAAcA,KAAI,EAAE,KAAK,OAAO,KAAK,MAAMA,EAAC,EAAE,EAAE,KAAK,MAAM,IAAI,EAAE,WAAe,EAAE,YAAN,GAAiBA,KAAI,EAAE,eAAmB,EAAE,WAAN,GAAgBE,KAAI,EAAE,UAAUA,KAAI,EAAE,gBAA2B,KAAK,QAAQ,KAAxB,UAA4BC,GAAE,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAEC,GAAE,EAAE,SAASD,GAAEE,GAAE,EAAE,WAAW,EAAE,OAAOF,EAAC,EAAE,EAAE,SAASC,GAAE,EAAE,UAAU,EAAEA,GAAEA,IAAG,EAAE,SAAS,EAAE,OAAO,EAAE,OAAOD,GAAEC,GAAE,CAAC,EAAE,KAAK,OAAOC,EAAC,GAAG,KAAK,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAQ,EAAE,WAAN,GAAoB,EAAE,YAAN,IAAkB,EAAE,GAAG,QAAQ,EAAE,EAAE,UAAc,EAAE,YAAN,IAAkBL,KAAI,EAAE,cAAc,OAAOA,KAAI,EAAE,eAAeE,GAAE,EAAE,UAAUA,KAAI,EAAE,UAAUF,GAAE,EAAE,WAAW,KAAK,IAAI,EAAE,KAAK,MAAMA,EAAC,EAAE,KAAK,MAAM,GAAGA,KAAI,EAAE,MAAME,KAAI,EAAE,eAAe,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,UAAU,OAAO,SAASJ,GAAE,CAAC,KAAK,OAAO,KAAKA,EAAC,CAAC,EAAE,EAAE,UAAU,MAAM,SAASA,GAAE,CAACA,KAAI,EAAE,OAAkB,KAAK,QAAQ,KAAxB,SAA2B,KAAK,OAAO,KAAK,OAAO,KAAK,EAAE,EAAE,KAAK,OAAO,EAAE,cAAc,KAAK,MAAM,GAAG,KAAK,OAAO,CAAC,EAAE,KAAK,IAAIA,GAAE,KAAK,IAAI,KAAK,KAAK,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,WAAW,SAASA,GAAEC,GAAE,CAAC,OAAOA,GAAEA,IAAG,CAAC,GAAG,IAAI,GAAG,EAAED,GAAEC,EAAC,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,iBAAiB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAe,OAAO,WAApB,KAA6C,OAAO,YAApB,KAA8C,OAAO,WAApB,IAA+B,EAAE,OAAO,SAASD,GAAE,CAAC,QAAQC,GAAE,MAAM,UAAU,MAAM,KAAK,UAAU,CAAC,EAAEA,GAAE,QAAQ,CAAC,IAAIC,GAAED,GAAE,MAAM,EAAE,GAAGC,GAAE,CAAC,GAAa,OAAOA,IAAjB,SAAmB,MAAM,IAAI,UAAUA,GAAE,oBAAoB,EAAE,QAAQE,MAAKF,GAAEA,GAAE,eAAeE,EAAC,IAAIJ,GAAEI,EAAC,EAAEF,GAAEE,EAAC,EAAE,CAAC,CAAC,OAAOJ,EAAC,EAAE,EAAE,UAAU,SAASA,GAAEC,GAAE,CAAC,OAAOD,GAAE,SAASC,GAAED,GAAEA,GAAE,SAASA,GAAE,SAAS,EAAEC,EAAC,GAAGD,GAAE,OAAOC,GAAED,GAAE,EAAE,IAAI,EAAE,CAAC,SAAS,SAASA,GAAEC,GAAEC,GAAEE,GAAEC,GAAE,CAAC,GAAGJ,GAAE,UAAUD,GAAE,SAASA,GAAE,IAAIC,GAAE,SAASC,GAAEA,GAAEE,EAAC,EAAEC,EAAC,MAAO,SAAQC,GAAE,EAAEA,GAAEF,GAAEE,KAAIN,GAAEK,GAAEC,EAAC,EAAEL,GAAEC,GAAEI,EAAC,CAAC,EAAE,cAAc,SAASN,GAAE,CAAC,IAAIC,GAAEC,GAAEE,GAAEC,GAAEC,GAAE,EAAE,IAAIL,GAAEG,GAAE,EAAEF,GAAEF,GAAE,OAAOC,GAAEC,GAAED,KAAIG,IAAGJ,GAAEC,EAAC,EAAE,OAAO,IAAI,EAAE,IAAI,WAAWG,EAAC,EAAEH,GAAEI,GAAE,EAAEH,GAAEF,GAAE,OAAOC,GAAEC,GAAED,KAAIK,GAAEN,GAAEC,EAAC,EAAE,EAAE,IAAIK,GAAED,EAAC,EAAEA,IAAGC,GAAE,OAAO,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,SAASN,GAAEC,GAAEC,GAAEE,GAAEC,GAAE,CAAC,QAAQC,GAAE,EAAEA,GAAEF,GAAEE,KAAIN,GAAEK,GAAEC,EAAC,EAAEL,GAAEC,GAAEI,EAAC,CAAC,EAAE,cAAc,SAASN,GAAE,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAC,EAAEA,EAAC,CAAC,CAAC,EAAE,EAAE,SAAS,SAASA,GAAE,CAACA,IAAG,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,EAAE,MAAM,WAAW,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM,EAAE,MAAM,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,aAAa,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAS,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,aAAa,MAAM,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,MAAS,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAEA,GAAEC,GAAE,CAAC,GAAGA,GAAE,QAAQD,GAAE,UAAU,GAAG,CAACA,GAAE,UAAU,GAAG,OAAO,OAAO,aAAa,MAAM,KAAK,EAAE,UAAUA,GAAEC,EAAC,CAAC,EAAE,QAAQC,GAAE,GAAGE,GAAE,EAAEA,GAAEH,GAAEG,KAAIF,IAAG,OAAO,aAAaF,GAAEI,EAAC,CAAC,EAAE,OAAOF,EAAC,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,SAASF,GAAE,CAAC,IAAIC,GAAEC,GAAEE,GAAEC,GAAEC,GAAE,EAAEN,GAAE,OAAO,EAAE,EAAE,IAAIK,GAAE,EAAEA,GAAE,EAAEA,MAAY,OAAOH,GAAEF,GAAE,WAAWK,EAAC,KAA/B,OAAoCA,GAAE,EAAE,IAAW,OAAOD,GAAEJ,GAAE,WAAWK,GAAE,CAAC,KAAjC,QAAuCH,GAAE,OAAOA,GAAE,OAAO,KAAKE,GAAE,OAAOC,MAAK,GAAGH,GAAE,IAAI,EAAEA,GAAE,KAAK,EAAEA,GAAE,MAAM,EAAE,EAAE,IAAID,GAAE,IAAI,EAAE,KAAK,CAAC,EAAEI,GAAEC,GAAE,EAAEA,GAAE,EAAED,MAAY,OAAOH,GAAEF,GAAE,WAAWK,EAAC,KAA/B,OAAoCA,GAAE,EAAE,IAAW,OAAOD,GAAEJ,GAAE,WAAWK,GAAE,CAAC,KAAjC,QAAuCH,GAAE,OAAOA,GAAE,OAAO,KAAKE,GAAE,OAAOC,MAAKH,GAAE,IAAID,GAAEK,IAAG,EAAEJ,IAAGA,GAAE,KAAKD,GAAEK,IAAG,EAAE,IAAIJ,KAAI,GAAGA,GAAE,MAAMD,GAAEK,IAAG,EAAE,IAAIJ,KAAI,IAAID,GAAEK,IAAG,EAAE,IAAIJ,KAAI,GAAGD,GAAEK,IAAG,EAAE,IAAIJ,KAAI,GAAG,IAAID,GAAEK,IAAG,EAAE,IAAIJ,KAAI,EAAE,IAAID,GAAEK,IAAG,EAAE,IAAI,GAAGJ,IAAG,OAAOD,EAAC,EAAE,EAAE,cAAc,SAASD,GAAE,CAAC,OAAO,EAAEA,GAAEA,GAAE,MAAM,CAAC,EAAE,EAAE,cAAc,SAASA,GAAE,CAAC,QAAQC,GAAE,IAAI,EAAE,KAAKD,GAAE,MAAM,EAAEE,GAAE,EAAEE,GAAEH,GAAE,OAAOC,GAAEE,GAAEF,KAAID,GAAEC,EAAC,EAAEF,GAAE,WAAWE,EAAC,EAAE,OAAOD,EAAC,EAAE,EAAE,WAAW,SAASD,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAEC,GAAEC,GAAE,EAAEL,IAAGD,GAAE,OAAO,EAAE,IAAI,MAAM,EAAE,CAAC,EAAE,IAAIE,GAAEE,GAAE,EAAEF,GAAE,GAAG,IAAIG,GAAEL,GAAEE,IAAG,GAAG,IAAI,EAAEE,IAAG,EAAEC,WAAU,GAAGC,GAAE,EAAED,EAAC,GAAG,EAAED,IAAG,EAAE,MAAMF,IAAGI,GAAE,MAAM,CAAC,IAAID,IAAOC,KAAJ,EAAM,GAAOA,KAAJ,EAAM,GAAG,EAAE,EAAEA,IAAGJ,GAAE,GAAGG,GAAEA,IAAG,EAAE,GAAGL,GAAEE,IAAG,EAAEI,KAAI,EAAEA,GAAE,EAAEF,IAAG,EAAE,MAAMC,GAAE,MAAM,EAAED,IAAG,EAAEC,IAAGA,IAAG,MAAM,EAAED,IAAG,EAAE,MAAMC,IAAG,GAAG,KAAK,EAAED,IAAG,EAAE,MAAM,KAAKC,GAAE,CAAC,OAAO,EAAE,EAAED,EAAC,CAAC,EAAE,EAAE,WAAW,SAASJ,GAAEC,GAAE,CAAC,IAAIC,GAAE,KAAKD,GAAEA,IAAGD,GAAE,QAAQA,GAAE,SAASC,GAAED,GAAE,QAAQE,GAAED,GAAE,EAAE,GAAGC,KAAS,IAAIF,GAAEE,EAAC,IAAb,KAAiBA,KAAI,OAAOA,GAAE,GAAQA,KAAJ,EAAFD,GAAUC,GAAE,EAAEF,GAAEE,EAAC,CAAC,EAAED,GAAEC,GAAED,EAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,QAAQ,SAASD,GAAEC,GAAEC,GAAE,EAAE,CAAC,QAAQ,EAAE,MAAMF,GAAE,EAAE,EAAEA,KAAI,GAAG,MAAM,EAAE,EAAE,EAAME,KAAJ,GAAO,CAAC,IAAIA,IAAG,EAAE,IAAIA,GAAE,IAAIA,GAAE,EAAE,GAAG,EAAE,EAAED,GAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,GAAG,eAAe,GAAG,aAAa,GAAG,YAAY,GAAG,iBAAiB,EAAE,aAAa,EAAE,mBAAmB,EAAE,sBAAsB,GAAG,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,GAAE,UAAU,CAAC,QAAQD,GAAEC,GAAE,CAAC,EAAEC,GAAE,EAAEA,GAAE,IAAIA,KAAI,CAACF,GAAEE,GAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAIF,GAAE,EAAEA,GAAE,WAAWA,KAAI,EAAEA,KAAI,EAAEC,GAAEC,EAAC,EAAEF,EAAC,CAAC,OAAOC,EAAC,GAAE,EAAE,EAAE,QAAQ,SAASD,GAAEC,GAAEC,GAAE,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAEA,GAAEF,IAAG,GAAG,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAIA,GAAEA,KAAI,EAAE,EAAE,KAAKA,GAAEC,GAAE,CAAC,EAAE,EAAE,MAAM,GAAGD,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAEA,GAAEC,GAAE,CAAC,OAAOD,GAAE,IAAI,EAAEC,EAAC,EAAEA,EAAC,CAAC,SAAS,EAAED,GAAE,CAAC,OAAOA,IAAG,IAAI,EAAEA,GAAE,EAAE,EAAE,CAAC,SAAS,EAAEA,GAAE,CAAC,QAAQC,GAAED,GAAE,OAAO,GAAG,EAAEC,IAAGD,GAAEC,EAAC,EAAE,CAAC,CAAC,SAAS,EAAED,GAAE,CAAC,IAAIC,GAAED,GAAE,MAAME,GAAED,GAAE,QAAQC,GAAEF,GAAE,YAAYE,GAAEF,GAAE,WAAeE,KAAJ,IAAQ,EAAE,SAASF,GAAE,OAAOC,GAAE,YAAYA,GAAE,YAAYC,GAAEF,GAAE,QAAQ,EAAEA,GAAE,UAAUE,GAAED,GAAE,aAAaC,GAAEF,GAAE,WAAWE,GAAEF,GAAE,WAAWE,GAAED,GAAE,SAASC,GAAMD,GAAE,UAAN,IAAgBA,GAAE,YAAY,GAAG,CAAC,SAAS,EAAED,GAAEC,GAAE,CAAC,EAAE,gBAAgBD,GAAE,GAAGA,GAAE,YAAYA,GAAE,YAAY,GAAGA,GAAE,SAASA,GAAE,YAAYC,EAAC,EAAED,GAAE,YAAYA,GAAE,SAAS,EAAEA,GAAE,IAAI,CAAC,CAAC,SAAS,EAAEA,GAAEC,GAAE,CAACD,GAAE,YAAYA,GAAE,SAAS,EAAEC,EAAC,CAAC,SAAS,EAAED,GAAEC,GAAE,CAACD,GAAE,YAAYA,GAAE,SAAS,EAAEC,KAAI,EAAE,IAAID,GAAE,YAAYA,GAAE,SAAS,EAAE,IAAIC,EAAC,CAAC,SAAS,EAAED,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAEC,GAAEL,GAAE,iBAAiBM,GAAEN,GAAE,SAASO,GAAEP,GAAE,YAAYQ,GAAER,GAAE,WAAWS,GAAET,GAAE,SAASA,GAAE,OAAO,EAAEA,GAAE,UAAUA,GAAE,OAAO,GAAG,EAAEU,GAAEV,GAAE,OAAOW,GAAEX,GAAE,OAAOY,GAAEZ,GAAE,KAAKG,GAAEH,GAAE,SAAS,EAAEa,GAAEH,GAAEJ,GAAEC,GAAE,CAAC,EAAEO,GAAEJ,GAAEJ,GAAEC,EAAC,EAAEP,GAAE,aAAaA,GAAE,aAAaK,KAAI,GAAGG,GAAER,GAAE,YAAYQ,GAAER,GAAE,WAAW,EAAG,IAAGU,IAAGR,GAAED,IAAGM,EAAC,IAAIO,IAAGJ,GAAER,GAAEK,GAAE,CAAC,IAAIM,IAAGH,GAAER,EAAC,IAAIQ,GAAEJ,EAAC,GAAGI,GAAE,EAAER,EAAC,IAAIQ,GAAEJ,GAAE,CAAC,EAAE,CAACA,IAAG,EAAEJ,KAAI,EAAE,OAAQQ,GAAE,EAAEJ,EAAC,IAAII,GAAE,EAAER,EAAC,GAAGQ,GAAE,EAAEJ,EAAC,IAAII,GAAE,EAAER,EAAC,GAAGQ,GAAE,EAAEJ,EAAC,IAAII,GAAE,EAAER,EAAC,GAAGQ,GAAE,EAAEJ,EAAC,IAAII,GAAE,EAAER,EAAC,GAAGQ,GAAE,EAAEJ,EAAC,IAAII,GAAE,EAAER,EAAC,GAAGQ,GAAE,EAAEJ,EAAC,IAAII,GAAE,EAAER,EAAC,GAAGQ,GAAE,EAAEJ,EAAC,IAAII,GAAE,EAAER,EAAC,GAAGQ,GAAE,EAAEJ,EAAC,IAAII,GAAE,EAAER,EAAC,GAAGI,GAAEH,IAAG,GAAGC,GAAE,GAAGD,GAAEG,IAAGA,GAAEH,GAAE,EAAEI,GAAEH,GAAE,CAAC,GAAGJ,GAAE,YAAYC,GAAEO,KAAID,GAAEH,IAAG,MAAMS,GAAEH,GAAEJ,GAAEC,GAAE,CAAC,EAAEO,GAAEJ,GAAEJ,GAAEC,EAAC,CAAC,CAAC,QAASN,GAAEW,GAAEX,GAAEU,EAAC,GAAGF,IAAM,EAAEJ,IAAL,GAAQ,OAAOE,IAAGP,GAAE,UAAUO,GAAEP,GAAE,SAAS,CAAC,SAAS,EAAEA,GAAE,CAAC,IAAIC,GAAEC,GAAEE,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEZ,GAAE,OAAO,EAAE,CAAC,GAAGK,GAAEL,GAAE,YAAYA,GAAE,UAAUA,GAAE,SAASA,GAAE,UAAUY,IAAGA,GAAE,GAAG,CAAC,IAAI,EAAE,SAASZ,GAAE,OAAOA,GAAE,OAAOY,GAAEA,GAAE,CAAC,EAAEZ,GAAE,aAAaY,GAAEZ,GAAE,UAAUY,GAAEZ,GAAE,aAAaY,GAAEX,GAAEC,GAAEF,GAAE,UAAUI,GAAEJ,GAAE,KAAK,EAAEC,EAAC,EAAED,GAAE,KAAKC,EAAC,EAAEW,IAAGR,GAAEA,GAAEQ,GAAE,EAAE,EAAEV,IAAG,CAAC,IAAID,GAAEC,GAAEU,GAAER,GAAEJ,GAAE,KAAK,EAAEC,EAAC,EAAED,GAAE,KAAKC,EAAC,EAAEW,IAAGR,GAAEA,GAAEQ,GAAE,EAAE,EAAEV,IAAG,CAACG,IAAGO,EAAC,CAAC,GAAOZ,GAAE,KAAK,WAAX,EAAoB,MAAM,GAAGO,GAAEP,GAAE,KAAKQ,GAAER,GAAE,OAAOS,GAAET,GAAE,SAASA,GAAE,UAAUU,GAAEL,GAAEM,GAAE,OAAOA,GAAEJ,GAAE,SAASG,GAAEC,KAAIA,GAAED,IAAGR,GAAMS,KAAJ,EAAM,GAAGJ,GAAE,UAAUI,GAAE,EAAE,SAASH,GAAED,GAAE,MAAMA,GAAE,QAAQI,GAAEF,EAAC,EAAMF,GAAE,MAAM,OAAZ,EAAiBA,GAAE,MAAM,EAAEA,GAAE,MAAMC,GAAEG,GAAEF,EAAC,EAAMF,GAAE,MAAM,OAAZ,IAAmBA,GAAE,MAAM,EAAEA,GAAE,MAAMC,GAAEG,GAAEF,EAAC,GAAGF,GAAE,SAASI,GAAEJ,GAAE,UAAUI,GAAEA,IAAGX,GAAE,WAAWE,GAAEF,GAAE,UAAUA,GAAE,QAAQ,EAAE,IAAIM,GAAEN,GAAE,SAASA,GAAE,OAAOA,GAAE,MAAMA,GAAE,OAAOM,EAAC,EAAEN,GAAE,OAAOA,GAAE,OAAOA,GAAE,WAAWA,GAAE,OAAOM,GAAE,CAAC,GAAGN,GAAE,UAAUA,GAAE,SAASA,GAAE,OAAOA,GAAE,OAAOA,GAAE,WAAWA,GAAE,OAAOM,GAAE,EAAE,CAAC,GAAGN,GAAE,UAAUA,GAAE,KAAKM,GAAEN,GAAE,MAAM,EAAEA,GAAE,KAAKA,GAAE,KAAK,EAAEA,GAAE,KAAKA,GAAE,KAAK,EAAEM,GAAEA,KAAIN,GAAE,SAAS,EAAEA,GAAE,UAAUA,GAAE,OAAO,KAAK,CAAC,OAAOA,GAAE,UAAU,GAAOA,GAAE,KAAK,WAAX,EAAoB,CAAC,SAAS,EAAEA,GAAEC,GAAE,CAAC,QAAQC,GAAEE,KAAI,CAAC,GAAGJ,GAAE,UAAU,EAAE,CAAC,GAAG,EAAEA,EAAC,EAAEA,GAAE,UAAU,GAAGC,KAAI,EAAE,OAAO,EAAE,GAAOD,GAAE,YAAN,EAAgB,KAAK,CAAC,GAAGE,GAAE,EAAEF,GAAE,WAAW,IAAIA,GAAE,OAAOA,GAAE,OAAOA,GAAE,WAAWA,GAAE,OAAOA,GAAE,SAAS,EAAE,CAAC,GAAGA,GAAE,UAAUE,GAAEF,GAAE,KAAKA,GAAE,SAASA,GAAE,MAAM,EAAEA,GAAE,KAAKA,GAAE,KAAK,EAAEA,GAAE,KAAKA,GAAE,KAAK,EAAEA,GAAE,UAAcE,KAAJ,GAAOF,GAAE,SAASE,IAAGF,GAAE,OAAO,IAAIA,GAAE,aAAa,EAAEA,GAAEE,EAAC,GAAGF,GAAE,cAAc,EAAE,GAAGI,GAAE,EAAE,UAAUJ,GAAEA,GAAE,SAASA,GAAE,YAAYA,GAAE,aAAa,CAAC,EAAEA,GAAE,WAAWA,GAAE,aAAaA,GAAE,cAAcA,GAAE,gBAAgBA,GAAE,WAAW,EAAE,CAAC,IAAIA,GAAE,eAAeA,GAAE,WAAWA,GAAE,OAAOA,GAAE,OAAOA,GAAE,WAAWA,GAAE,OAAOA,GAAE,SAAS,EAAE,CAAC,GAAGA,GAAE,UAAUE,GAAEF,GAAE,KAAKA,GAAE,SAASA,GAAE,MAAM,EAAEA,GAAE,KAAKA,GAAE,KAAK,EAAEA,GAAE,KAAKA,GAAE,KAAK,EAAEA,GAAE,SAAY,EAAEA,GAAE,cAAP,GAAqB,CAACA,GAAE,UAAU,MAAMA,GAAE,UAAUA,GAAE,aAAaA,GAAE,aAAa,EAAEA,GAAE,MAAMA,GAAE,OAAOA,GAAE,QAAQ,EAAEA,GAAE,OAAOA,GAAE,OAAOA,GAAE,WAAWA,GAAE,OAAOA,GAAE,SAAS,CAAC,GAAGA,GAAE,eAAeI,GAAE,EAAE,UAAUJ,GAAE,EAAEA,GAAE,OAAOA,GAAE,QAAQ,CAAC,EAAEA,GAAE,YAAYA,GAAE,WAAW,GAAGI,KAAI,EAAEJ,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,GAAsB,OAAO,CAAC,CAAC,OAAOA,GAAE,OAAOA,GAAE,SAAS,EAAE,EAAEA,GAAE,SAAS,EAAE,EAAEC,KAAI,GAAG,EAAED,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,EAAqB,EAAE,GAAGA,GAAE,WAAW,EAAEA,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,GAAsB,EAAE,CAAC,CAAC,SAAS,EAAEA,GAAEC,GAAE,CAAC,QAAQC,GAAEE,GAAEC,KAAI,CAAC,GAAGL,GAAE,UAAU,EAAE,CAAC,GAAG,EAAEA,EAAC,EAAEA,GAAE,UAAU,GAAGC,KAAI,EAAE,OAAO,EAAE,GAAOD,GAAE,YAAN,EAAgB,KAAK,CAAC,GAAGE,GAAE,EAAEF,GAAE,WAAW,IAAIA,GAAE,OAAOA,GAAE,OAAOA,GAAE,WAAWA,GAAE,OAAOA,GAAE,SAAS,EAAE,CAAC,GAAGA,GAAE,UAAUE,GAAEF,GAAE,KAAKA,GAAE,SAASA,GAAE,MAAM,EAAEA,GAAE,KAAKA,GAAE,KAAK,EAAEA,GAAE,KAAKA,GAAE,KAAK,EAAEA,GAAE,UAAUA,GAAE,YAAYA,GAAE,aAAaA,GAAE,WAAWA,GAAE,YAAYA,GAAE,aAAa,EAAE,EAAME,KAAJ,GAAOF,GAAE,YAAYA,GAAE,gBAAgBA,GAAE,SAASE,IAAGF,GAAE,OAAO,IAAIA,GAAE,aAAa,EAAEA,GAAEE,EAAC,EAAEF,GAAE,cAAc,IAAQA,GAAE,WAAN,GAAgBA,GAAE,eAAe,GAAG,KAAKA,GAAE,SAASA,GAAE,eAAeA,GAAE,aAAa,EAAE,IAAIA,GAAE,aAAa,GAAGA,GAAE,cAAcA,GAAE,YAAY,CAAC,IAAIK,GAAEL,GAAE,SAASA,GAAE,UAAU,EAAEI,GAAE,EAAE,UAAUJ,GAAEA,GAAE,SAAS,EAAEA,GAAE,WAAWA,GAAE,YAAY,CAAC,EAAEA,GAAE,WAAWA,GAAE,YAAY,EAAEA,GAAE,aAAa,EAAE,EAAEA,GAAE,UAAUK,KAAIL,GAAE,OAAOA,GAAE,OAAOA,GAAE,WAAWA,GAAE,OAAOA,GAAE,SAAS,EAAE,CAAC,GAAGA,GAAE,UAAUE,GAAEF,GAAE,KAAKA,GAAE,SAASA,GAAE,MAAM,EAAEA,GAAE,KAAKA,GAAE,KAAK,EAAEA,GAAE,KAAKA,GAAE,KAAK,EAAEA,GAAE,UAAa,EAAEA,GAAE,aAAP,GAAoB,CAAC,GAAGA,GAAE,gBAAgB,EAAEA,GAAE,aAAa,EAAE,EAAEA,GAAE,WAAWI,KAAI,EAAEJ,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,GAAsB,OAAO,CAAC,SAASA,GAAE,iBAAiB,IAAII,GAAE,EAAE,UAAUJ,GAAE,EAAEA,GAAE,OAAOA,GAAE,SAAS,CAAC,CAAC,IAAI,EAAEA,GAAE,EAAE,EAAEA,GAAE,WAAWA,GAAE,YAAgBA,GAAE,KAAK,YAAX,EAAqB,OAAO,OAAOA,GAAE,gBAAgB,EAAEA,GAAE,WAAWA,GAAE,WAAW,CAAC,OAAOA,GAAE,kBAAkBI,GAAE,EAAE,UAAUJ,GAAE,EAAEA,GAAE,OAAOA,GAAE,SAAS,CAAC,CAAC,EAAEA,GAAE,gBAAgB,GAAGA,GAAE,OAAOA,GAAE,SAAS,EAAE,EAAEA,GAAE,SAAS,EAAE,EAAEC,KAAI,GAAG,EAAED,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,EAAqB,EAAE,GAAGA,GAAE,WAAW,EAAEA,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,GAAsB,EAAE,CAAC,CAAC,SAAS,EAAEA,GAAEC,GAAEC,GAAEE,GAAEC,GAAE,CAAC,KAAK,YAAYL,GAAE,KAAK,SAASC,GAAE,KAAK,YAAYC,GAAE,KAAK,UAAUE,GAAE,KAAK,KAAKC,EAAC,CAAC,SAAS,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,OAAO,EAAE,KAAK,YAAY,KAAK,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,KAAK,OAAO,KAAK,KAAK,QAAQ,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,GAAG,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,KAAK,KAAK,YAAY,EAAE,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,UAAU,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,QAAQ,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,SAAS,EAAE,EAAE,KAAK,SAAS,EAAE,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,SAAS,EAAEL,GAAE,CAAC,IAAIC,GAAE,OAAOD,IAAGA,GAAE,OAAOA,GAAE,SAASA,GAAE,UAAU,EAAEA,GAAE,UAAU,GAAGC,GAAED,GAAE,OAAO,QAAQ,EAAEC,GAAE,YAAY,EAAEA,GAAE,KAAK,IAAIA,GAAE,KAAK,CAACA,GAAE,MAAMA,GAAE,OAAOA,GAAE,KAAK,EAAE,EAAED,GAAE,MAAUC,GAAE,OAAN,EAAW,EAAE,EAAEA,GAAE,WAAW,EAAE,EAAE,SAASA,EAAC,EAAE,GAAG,EAAED,GAAE,CAAC,CAAC,CAAC,SAAS,EAAEA,GAAE,CAAC,IAAIC,GAAE,EAAED,EAAC,EAAE,OAAOC,KAAI,IAAG,SAASD,GAAE,CAACA,GAAE,YAAY,EAAEA,GAAE,OAAO,EAAEA,GAAE,IAAI,EAAEA,GAAE,eAAe,EAAEA,GAAE,KAAK,EAAE,SAASA,GAAE,WAAW,EAAEA,GAAE,KAAK,EAAE,YAAYA,GAAE,WAAW,EAAEA,GAAE,KAAK,EAAE,YAAYA,GAAE,iBAAiB,EAAEA,GAAE,KAAK,EAAE,UAAUA,GAAE,SAAS,EAAEA,GAAE,YAAY,EAAEA,GAAE,UAAU,EAAEA,GAAE,OAAO,EAAEA,GAAE,aAAaA,GAAE,YAAY,EAAE,EAAEA,GAAE,gBAAgB,EAAEA,GAAE,MAAM,CAAC,GAAEA,GAAE,KAAK,EAAEC,EAAC,CAAC,SAAS,EAAED,GAAEC,GAAEC,GAAEE,GAAEC,GAAEC,GAAE,CAAC,GAAG,CAACN,GAAE,OAAO,EAAE,IAAIO,GAAE,EAAE,GAAGN,KAAI,IAAIA,GAAE,GAAGG,GAAE,GAAGG,GAAE,EAAEH,GAAE,CAACA,IAAG,GAAGA,KAAIG,GAAE,EAAEH,IAAG,IAAIC,GAAE,GAAG,EAAEA,IAAGH,KAAI,GAAGE,GAAE,GAAG,GAAGA,IAAGH,GAAE,GAAG,EAAEA,IAAGK,GAAE,GAAG,EAAEA,GAAE,OAAO,EAAEN,GAAE,CAAC,EAAMI,KAAJ,IAAQA,GAAE,GAAG,IAAII,GAAE,IAAI,EAAE,OAAOR,GAAE,MAAMQ,IAAG,KAAKR,GAAEQ,GAAE,KAAKD,GAAEC,GAAE,OAAO,KAAKA,GAAE,OAAOJ,GAAEI,GAAE,OAAO,GAAGA,GAAE,OAAOA,GAAE,OAAOA,GAAE,OAAO,EAAEA,GAAE,UAAUH,GAAE,EAAEG,GAAE,UAAU,GAAGA,GAAE,UAAUA,GAAE,UAAUA,GAAE,UAAU,EAAEA,GAAE,WAAW,CAAC,GAAGA,GAAE,UAAU,EAAE,GAAG,GAAGA,GAAE,OAAO,IAAI,EAAE,KAAK,EAAEA,GAAE,MAAM,EAAEA,GAAE,KAAK,IAAI,EAAE,MAAMA,GAAE,SAAS,EAAEA,GAAE,KAAK,IAAI,EAAE,MAAMA,GAAE,MAAM,EAAEA,GAAE,YAAY,GAAGH,GAAE,EAAEG,GAAE,iBAAiB,EAAEA,GAAE,YAAYA,GAAE,YAAY,IAAI,EAAE,KAAKA,GAAE,gBAAgB,EAAEA,GAAE,MAAM,EAAEA,GAAE,YAAYA,GAAE,MAAM,EAAEA,GAAE,YAAYA,GAAE,MAAMP,GAAEO,GAAE,SAASF,GAAEE,GAAE,OAAON,GAAE,EAAEF,EAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,SAASA,GAAEC,GAAE,CAAC,IAAIC,GAAE,MAAM,IAAIA,GAAEF,GAAE,iBAAiB,IAAIE,GAAEF,GAAE,iBAAiB,KAAK,CAAC,GAAGA,GAAE,WAAW,EAAE,CAAC,GAAG,EAAEA,EAAC,EAAMA,GAAE,YAAN,GAAiBC,KAAI,EAAE,OAAO,EAAE,GAAOD,GAAE,YAAN,EAAgB,KAAK,CAACA,GAAE,UAAUA,GAAE,UAAUA,GAAE,UAAU,EAAE,IAAII,GAAEJ,GAAE,YAAYE,GAAoH,IAA1GF,GAAE,WAAN,GAAgBA,GAAE,UAAUI,MAAKJ,GAAE,UAAUA,GAAE,SAASI,GAAEJ,GAAE,SAASI,GAAE,EAAEJ,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,IAAkCA,GAAE,SAASA,GAAE,aAAaA,GAAE,OAAO,IAAI,EAAEA,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,GAAsB,OAAO,CAAC,CAAC,OAAOA,GAAE,OAAO,EAAEC,KAAI,GAAG,EAAED,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,EAAqB,EAAE,IAAIA,GAAE,SAASA,GAAE,cAAc,EAAEA,GAAE,EAAE,EAAEA,GAAE,KAAK,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,YAAY,SAASA,GAAEC,GAAE,CAAC,OAAO,EAAED,GAAEC,GAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,aAAa,EAAE,EAAE,iBAAiB,EAAE,EAAE,iBAAiB,SAASD,GAAEC,GAAE,CAAC,OAAOD,IAAGA,GAAE,MAAUA,GAAE,MAAM,OAAZ,EAAiB,GAAGA,GAAE,MAAM,OAAOC,GAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,SAASD,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAEC,GAAEC,GAAE,GAAG,CAACN,IAAG,CAACA,GAAE,OAAO,EAAEC,IAAGA,GAAE,EAAE,OAAOD,GAAE,EAAEA,GAAE,CAAC,EAAE,EAAE,GAAGI,GAAEJ,GAAE,MAAM,CAACA,GAAE,QAAQ,CAACA,GAAE,OAAWA,GAAE,WAAN,GAAsBI,GAAE,SAAR,KAAgBH,KAAI,EAAE,OAAO,EAAED,GAAMA,GAAE,YAAN,EAAgB,GAAG,CAAC,EAAE,GAAGI,GAAE,KAAKJ,GAAEE,GAAEE,GAAE,WAAWA,GAAE,WAAWH,GAAEG,GAAE,SAAS,EAAE,GAAOA,GAAE,OAAN,EAAWJ,GAAE,MAAM,EAAE,EAAEI,GAAE,EAAE,EAAE,EAAEA,GAAE,GAAG,EAAE,EAAEA,GAAE,CAAC,EAAEA,GAAE,QAAQ,EAAEA,IAAGA,GAAE,OAAO,KAAK,EAAE,IAAIA,GAAE,OAAO,KAAK,EAAE,IAAIA,GAAE,OAAO,MAAM,EAAE,IAAIA,GAAE,OAAO,KAAK,EAAE,IAAIA,GAAE,OAAO,QAAQ,GAAG,EAAE,EAAE,EAAEA,GAAE,IAAIA,GAAE,OAAO,IAAI,EAAE,EAAEA,GAAEA,GAAE,OAAO,MAAM,EAAE,GAAG,EAAE,EAAEA,GAAEA,GAAE,OAAO,MAAM,GAAG,GAAG,EAAE,EAAEA,GAAEA,GAAE,OAAO,MAAM,GAAG,GAAG,EAAE,EAAEA,GAAMA,GAAE,QAAN,EAAY,EAAE,GAAGA,GAAE,UAAUA,GAAE,MAAM,EAAE,EAAE,CAAC,EAAE,EAAEA,GAAE,IAAIA,GAAE,OAAO,EAAE,EAAEA,GAAE,OAAO,OAAOA,GAAE,OAAO,MAAM,SAAS,EAAEA,GAAE,IAAIA,GAAE,OAAO,MAAM,MAAM,EAAE,EAAEA,GAAEA,GAAE,OAAO,MAAM,QAAQ,EAAE,GAAG,GAAGA,GAAE,OAAO,OAAOJ,GAAE,MAAM,EAAEA,GAAE,MAAMI,GAAE,YAAYA,GAAE,QAAQ,CAAC,GAAGA,GAAE,QAAQ,EAAEA,GAAE,OAAO,KAAK,EAAEA,GAAE,CAAC,EAAE,EAAEA,GAAE,CAAC,EAAE,EAAEA,GAAE,CAAC,EAAE,EAAEA,GAAE,CAAC,EAAE,EAAEA,GAAE,CAAC,EAAE,EAAEA,GAAMA,GAAE,QAAN,EAAY,EAAE,GAAGA,GAAE,UAAUA,GAAE,MAAM,EAAE,EAAE,CAAC,EAAE,EAAEA,GAAE,CAAC,EAAEA,GAAE,OAAO,OAAO,CAAC,IAAIG,GAAE,GAAGH,GAAE,OAAO,GAAG,IAAI,EAAEG,KAAI,GAAGH,GAAE,UAAUA,GAAE,MAAM,EAAE,EAAEA,GAAE,MAAM,EAAE,EAAMA,GAAE,QAAN,EAAY,EAAE,IAAI,EAAMA,GAAE,WAAN,IAAiBG,IAAG,IAAIA,IAAG,GAAGA,GAAE,GAAGH,GAAE,OAAO,EAAE,EAAEA,GAAEG,EAAC,EAAMH,GAAE,WAAN,IAAiB,EAAEA,GAAEJ,GAAE,QAAQ,EAAE,EAAE,EAAEI,GAAE,MAAMJ,GAAE,KAAK,GAAGA,GAAE,MAAM,CAAC,CAAC,GAAQI,GAAE,SAAP,GAAc,GAAGA,GAAE,OAAO,MAAM,CAAC,IAAIC,GAAED,GAAE,QAAQA,GAAE,SAAS,MAAMA,GAAE,OAAO,MAAM,UAAUA,GAAE,UAAUA,GAAE,mBAAmBA,GAAE,OAAO,MAAMA,GAAE,QAAQC,KAAIL,GAAE,MAAM,EAAEA,GAAE,MAAMI,GAAE,YAAYA,GAAE,QAAQC,GAAEA,EAAC,GAAG,EAAEL,EAAC,EAAEK,GAAED,GAAE,QAAQA,GAAE,UAAUA,GAAE,oBAAoB,EAAEA,GAAE,IAAIA,GAAE,OAAO,MAAMA,GAAE,OAAO,CAAC,EAAEA,GAAE,UAAUA,GAAE,OAAO,MAAMA,GAAE,QAAQC,KAAIL,GAAE,MAAM,EAAEA,GAAE,MAAMI,GAAE,YAAYA,GAAE,QAAQC,GAAEA,EAAC,GAAGD,GAAE,UAAUA,GAAE,OAAO,MAAM,SAASA,GAAE,QAAQ,EAAEA,GAAE,OAAO,GAAG,MAAMA,GAAE,OAAO,GAAG,GAAQA,GAAE,SAAP,GAAc,GAAGA,GAAE,OAAO,KAAK,CAACC,GAAED,GAAE,QAAQ,EAAE,CAAC,GAAGA,GAAE,UAAUA,GAAE,mBAAmBA,GAAE,OAAO,MAAMA,GAAE,QAAQC,KAAIL,GAAE,MAAM,EAAEA,GAAE,MAAMI,GAAE,YAAYA,GAAE,QAAQC,GAAEA,EAAC,GAAG,EAAEL,EAAC,EAAEK,GAAED,GAAE,QAAQA,GAAE,UAAUA,GAAE,kBAAkB,CAACE,GAAE,EAAE,KAAK,CAACA,GAAEF,GAAE,QAAQA,GAAE,OAAO,KAAK,OAAO,IAAIA,GAAE,OAAO,KAAK,WAAWA,GAAE,SAAS,EAAE,EAAE,EAAEA,GAAEE,EAAC,CAAC,OAAWA,KAAJ,GAAOF,GAAE,OAAO,MAAMA,GAAE,QAAQC,KAAIL,GAAE,MAAM,EAAEA,GAAE,MAAMI,GAAE,YAAYA,GAAE,QAAQC,GAAEA,EAAC,GAAOC,KAAJ,IAAQF,GAAE,QAAQ,EAAEA,GAAE,OAAO,GAAG,MAAMA,GAAE,OAAO,GAAG,GAAQA,GAAE,SAAP,GAAc,GAAGA,GAAE,OAAO,QAAQ,CAACC,GAAED,GAAE,QAAQ,EAAE,CAAC,GAAGA,GAAE,UAAUA,GAAE,mBAAmBA,GAAE,OAAO,MAAMA,GAAE,QAAQC,KAAIL,GAAE,MAAM,EAAEA,GAAE,MAAMI,GAAE,YAAYA,GAAE,QAAQC,GAAEA,EAAC,GAAG,EAAEL,EAAC,EAAEK,GAAED,GAAE,QAAQA,GAAE,UAAUA,GAAE,kBAAkB,CAACE,GAAE,EAAE,KAAK,CAACA,GAAEF,GAAE,QAAQA,GAAE,OAAO,QAAQ,OAAO,IAAIA,GAAE,OAAO,QAAQ,WAAWA,GAAE,SAAS,EAAE,EAAE,EAAEA,GAAEE,EAAC,CAAC,OAAWA,KAAJ,GAAOF,GAAE,OAAO,MAAMA,GAAE,QAAQC,KAAIL,GAAE,MAAM,EAAEA,GAAE,MAAMI,GAAE,YAAYA,GAAE,QAAQC,GAAEA,EAAC,GAAOC,KAAJ,IAAQF,GAAE,OAAO,IAAI,MAAMA,GAAE,OAAO,IAAI,GAASA,GAAE,SAAR,MAAiBA,GAAE,OAAO,MAAMA,GAAE,QAAQ,EAAEA,GAAE,kBAAkB,EAAEJ,EAAC,EAAEI,GAAE,QAAQ,GAAGA,GAAE,mBAAmB,EAAEA,GAAE,IAAIJ,GAAE,KAAK,EAAE,EAAEI,GAAEJ,GAAE,OAAO,EAAE,GAAG,EAAEA,GAAE,MAAM,EAAEI,GAAE,OAAO,IAAIA,GAAE,OAAO,GAAOA,GAAE,UAAN,GAAe,GAAG,EAAEJ,EAAC,EAAMA,GAAE,YAAN,EAAgB,OAAOI,GAAE,WAAW,GAAG,UAAcJ,GAAE,WAAN,GAAgB,EAAEC,EAAC,GAAG,EAAEC,EAAC,GAAGD,KAAI,EAAE,OAAO,EAAED,GAAE,EAAE,EAAE,GAASI,GAAE,SAAR,KAAoBJ,GAAE,WAAN,EAAe,OAAO,EAAEA,GAAE,EAAE,EAAE,GAAOA,GAAE,WAAN,GAAoBI,GAAE,YAAN,GAAiBH,KAAI,GAASG,GAAE,SAAR,IAAe,CAAC,IAAII,GAAMJ,GAAE,WAAN,GAAe,SAASJ,GAAEC,GAAE,CAAC,QAAQC,KAAI,CAAC,GAAOF,GAAE,YAAN,IAAkB,EAAEA,EAAC,EAAMA,GAAE,YAAN,GAAiB,CAAC,GAAGC,KAAI,EAAE,OAAO,EAAE,KAAK,CAAC,GAAGD,GAAE,aAAa,EAAEE,GAAE,EAAE,UAAUF,GAAE,EAAEA,GAAE,OAAOA,GAAE,QAAQ,CAAC,EAAEA,GAAE,YAAYA,GAAE,WAAWE,KAAI,EAAEF,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,GAAsB,OAAO,CAAC,CAAC,OAAOA,GAAE,OAAO,EAAEC,KAAI,GAAG,EAAED,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,EAAqB,EAAE,GAAGA,GAAE,WAAW,EAAEA,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,GAAsB,EAAE,CAAC,GAAEI,GAAEH,EAAC,EAAMG,GAAE,WAAN,GAAe,SAASJ,GAAEC,GAAE,CAAC,QAAQC,GAAEE,GAAEC,GAAEC,GAAEC,GAAEP,GAAE,SAAS,CAAC,GAAGA,GAAE,WAAW,EAAE,CAAC,GAAG,EAAEA,EAAC,EAAEA,GAAE,WAAW,GAAGC,KAAI,EAAE,OAAO,EAAE,GAAOD,GAAE,YAAN,EAAgB,KAAK,CAAC,GAAGA,GAAE,aAAa,EAAEA,GAAE,WAAW,GAAG,EAAEA,GAAE,WAAWI,GAAEG,GAAEF,GAAEL,GAAE,SAAS,CAAC,KAAKO,GAAE,EAAEF,EAAC,GAAGD,KAAIG,GAAE,EAAEF,EAAC,GAAGD,KAAIG,GAAE,EAAEF,EAAC,EAAE,CAACC,GAAEN,GAAE,SAAS,EAAE,EAAE,OAAQI,KAAIG,GAAE,EAAEF,EAAC,GAAGD,KAAIG,GAAE,EAAEF,EAAC,GAAGD,KAAIG,GAAE,EAAEF,EAAC,GAAGD,KAAIG,GAAE,EAAEF,EAAC,GAAGD,KAAIG,GAAE,EAAEF,EAAC,GAAGD,KAAIG,GAAE,EAAEF,EAAC,GAAGD,KAAIG,GAAE,EAAEF,EAAC,GAAGD,KAAIG,GAAE,EAAEF,EAAC,GAAGA,GAAEC,IAAGN,GAAE,aAAa,GAAGM,GAAED,IAAGL,GAAE,aAAaA,GAAE,YAAYA,GAAE,aAAaA,GAAE,UAAU,CAAC,GAAGA,GAAE,cAAc,GAAGE,GAAE,EAAE,UAAUF,GAAE,EAAEA,GAAE,aAAa,CAAC,EAAEA,GAAE,WAAWA,GAAE,aAAaA,GAAE,UAAUA,GAAE,aAAaA,GAAE,aAAa,IAAIE,GAAE,EAAE,UAAUF,GAAE,EAAEA,GAAE,OAAOA,GAAE,QAAQ,CAAC,EAAEA,GAAE,YAAYA,GAAE,YAAYE,KAAI,EAAEF,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,GAAsB,OAAO,CAAC,CAAC,OAAOA,GAAE,OAAO,EAAEC,KAAI,GAAG,EAAED,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,EAAqB,EAAE,GAAGA,GAAE,WAAW,EAAEA,GAAE,EAAE,EAAMA,GAAE,KAAK,YAAX,GAAsB,EAAE,CAAC,GAAEI,GAAEH,EAAC,EAAE,EAAEG,GAAE,KAAK,EAAE,KAAKA,GAAEH,EAAC,EAAE,GAAGO,KAAI,GAAGA,KAAI,IAAIJ,GAAE,OAAO,KAAKI,KAAI,GAAGA,KAAI,EAAE,OAAWR,GAAE,YAAN,IAAkBI,GAAE,WAAW,IAAI,EAAE,GAAGI,KAAI,IAAQP,KAAJ,EAAM,EAAE,UAAUG,EAAC,EAAMH,KAAJ,IAAQ,EAAE,iBAAiBG,GAAE,EAAE,EAAE,EAAE,EAAMH,KAAJ,IAAQ,EAAEG,GAAE,IAAI,EAAMA,GAAE,YAAN,IAAkBA,GAAE,SAAS,EAAEA,GAAE,YAAY,EAAEA,GAAE,OAAO,KAAK,EAAEJ,EAAC,EAAMA,GAAE,YAAN,GAAiB,OAAOI,GAAE,WAAW,GAAG,CAAC,CAAC,OAAOH,KAAI,EAAE,EAAEG,GAAE,MAAM,EAAE,GAAOA,GAAE,OAAN,GAAY,EAAEA,GAAE,IAAIJ,GAAE,KAAK,EAAE,EAAEI,GAAEJ,GAAE,OAAO,EAAE,GAAG,EAAE,EAAEI,GAAEJ,GAAE,OAAO,GAAG,GAAG,EAAE,EAAEI,GAAEJ,GAAE,OAAO,GAAG,GAAG,EAAE,EAAEI,GAAE,IAAIJ,GAAE,QAAQ,EAAE,EAAEI,GAAEJ,GAAE,UAAU,EAAE,GAAG,EAAE,EAAEI,GAAEJ,GAAE,UAAU,GAAG,GAAG,EAAE,EAAEI,GAAEJ,GAAE,UAAU,GAAG,GAAG,IAAI,EAAEI,GAAEJ,GAAE,QAAQ,EAAE,EAAE,EAAEI,GAAE,MAAMJ,GAAE,KAAK,GAAG,EAAEA,EAAC,EAAE,EAAEI,GAAE,OAAOA,GAAE,KAAK,CAACA,GAAE,MAAUA,GAAE,UAAN,EAAc,EAAE,EAAE,EAAE,EAAE,WAAW,SAASJ,GAAE,CAAC,IAAIC,GAAE,OAAOD,IAAGA,GAAE,OAAOC,GAAED,GAAE,MAAM,UAAU,GAAQC,KAAL,IAAaA,KAAL,IAAaA,KAAL,IAAcA,KAAN,KAASA,KAAI,GAASA,KAAN,IAAQ,EAAED,GAAE,CAAC,GAAGA,GAAE,MAAM,KAAKC,KAAI,EAAE,EAAED,GAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,qBAAqB,SAASA,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEV,GAAE,OAAgC,GAAtB,CAACD,IAAG,CAACA,GAAE,QAAuBM,IAAGJ,GAAEF,GAAE,OAAO,QAAnB,GAA8BM,KAAJ,GAAOJ,GAAE,SAAS,GAAGA,GAAE,UAAU,OAAO,EAAE,IAAQI,KAAJ,IAAQN,GAAE,MAAM,EAAEA,GAAE,MAAMC,GAAEU,GAAE,CAAC,GAAGT,GAAE,KAAK,EAAES,IAAGT,GAAE,SAAaI,KAAJ,IAAQ,EAAEJ,GAAE,IAAI,EAAEA,GAAE,SAAS,EAAEA,GAAE,YAAY,EAAEA,GAAE,OAAO,GAAGQ,GAAE,IAAI,EAAE,KAAKR,GAAE,MAAM,EAAE,EAAE,SAASQ,GAAET,GAAEU,GAAET,GAAE,OAAOA,GAAE,OAAO,CAAC,EAAED,GAAES,GAAEC,GAAET,GAAE,QAAQK,GAAEP,GAAE,SAASQ,GAAER,GAAE,QAAQS,GAAET,GAAE,MAAMA,GAAE,SAASW,GAAEX,GAAE,QAAQ,EAAEA,GAAE,MAAMC,GAAE,EAAEC,EAAC,EAAEA,GAAE,WAAW,GAAG,CAAC,IAAIE,GAAEF,GAAE,SAASG,GAAEH,GAAE,WAAW,EAAE,GAAGA,GAAE,OAAOA,GAAE,OAAOA,GAAE,WAAWA,GAAE,OAAOE,GAAE,EAAE,CAAC,GAAGF,GAAE,UAAUA,GAAE,KAAKE,GAAEF,GAAE,MAAM,EAAEA,GAAE,KAAKA,GAAE,KAAK,EAAEA,GAAE,KAAKA,GAAE,KAAK,EAAEE,GAAEA,KAAI,EAAEC,IAAG,CAACH,GAAE,SAASE,GAAEF,GAAE,UAAU,EAAE,EAAE,EAAEA,EAAC,CAAC,CAAC,OAAOA,GAAE,UAAUA,GAAE,UAAUA,GAAE,YAAYA,GAAE,SAASA,GAAE,OAAOA,GAAE,UAAUA,GAAE,UAAU,EAAEA,GAAE,aAAaA,GAAE,YAAY,EAAE,EAAEA,GAAE,gBAAgB,EAAEF,GAAE,QAAQQ,GAAER,GAAE,MAAMS,GAAET,GAAE,SAASO,GAAEL,GAAE,KAAKI,GAAE,CAAC,EAAE,EAAE,YAAY,oCAAoC,EAAE,CAAC,kBAAkB,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,QAAQ,UAAU,CAAC,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,KAAK,KAAK,UAAU,EAAE,KAAK,KAAK,GAAG,KAAK,QAAQ,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,QAAQ,SAASN,GAAEC,GAAE,CAAC,IAAIC,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEA,GAAEF,GAAE,MAAM,EAAEA,GAAE,QAAQ,EAAEA,GAAE,MAAM,EAAE,GAAGA,GAAE,SAAS,GAAG,EAAEA,GAAE,SAAS,EAAEA,GAAE,OAAO,EAAE,GAAGC,GAAED,GAAE,WAAW,EAAE,GAAGA,GAAE,UAAU,KAAK,EAAEE,GAAE,KAAK,EAAEA,GAAE,MAAM,EAAEA,GAAE,MAAM,EAAEA,GAAE,MAAM,EAAEA,GAAE,OAAO,EAAEA,GAAE,KAAK,EAAEA,GAAE,KAAK,EAAEA,GAAE,QAAQ,EAAEA,GAAE,SAAS,GAAG,GAAGA,GAAE,SAAS,EAAE,GAAG,GAAGA,GAAE,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,GAAO,EAAE,IAAI,GAAG,OAAd,EAAmB,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,IAAO,GAAG,IAAP,EAAU,CAAC,EAAE,GAAG,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,CAACA,GAAE,KAAK,GAAG,MAAM,CAAC,CAACF,GAAE,IAAI,8BAA8BE,GAAE,KAAK,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,MAAM,EAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,IAAO,GAAG,IAAP,EAAU,CAAC,EAAE,GAAG,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,SAAS,CAAC,CAACF,GAAE,IAAI,wBAAwBE,GAAE,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAACF,GAAE,IAAI,gCAAgCE,GAAE,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,IAAIA,GAAE,KAAK,CAACF,GAAE,IAAI,gCAAgCE,GAAE,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,IAAI,EAAEF,GAAE,QAAQ,EAAEA,GAAE,SAAS,EAAEA,GAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAGA,GAAE,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,KAAK,EAAE,GAAGE,GAAE,KAAK,EAAEA,GAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,SAAS,EAAEF,GAAE,CAAC,OAAOA,KAAI,GAAG,MAAMA,KAAI,EAAE,SAAS,MAAMA,KAAI,KAAK,IAAIA,KAAI,GAAG,CAAC,SAAS,GAAG,CAAC,KAAK,KAAK,EAAE,KAAK,KAAK,GAAG,KAAK,KAAK,EAAE,KAAK,SAAS,GAAG,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,KAAK,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,KAAK,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,KAAK,KAAK,SAAS,KAAK,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,MAAM,GAAG,EAAE,KAAK,KAAK,IAAI,EAAE,MAAM,GAAG,EAAE,KAAK,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,SAAS,EAAEA,GAAE,CAAC,IAAIC,GAAE,OAAOD,IAAGA,GAAE,OAAOC,GAAED,GAAE,MAAMA,GAAE,SAASA,GAAE,UAAUC,GAAE,MAAM,EAAED,GAAE,IAAI,GAAGC,GAAE,OAAOD,GAAE,MAAM,EAAEC,GAAE,MAAMA,GAAE,KAAK,EAAEA,GAAE,KAAK,EAAEA,GAAE,SAAS,EAAEA,GAAE,KAAK,MAAMA,GAAE,KAAK,KAAKA,GAAE,KAAK,EAAEA,GAAE,KAAK,EAAEA,GAAE,QAAQA,GAAE,OAAO,IAAI,EAAE,MAAM,CAAC,EAAEA,GAAE,SAASA,GAAE,QAAQ,IAAI,EAAE,MAAM,CAAC,EAAEA,GAAE,KAAK,EAAEA,GAAE,KAAK,GAAG,GAAG,CAAC,CAAC,SAAS,EAAED,GAAE,CAAC,IAAIC,GAAE,OAAOD,IAAGA,GAAE,QAAQC,GAAED,GAAE,OAAO,MAAM,EAAEC,GAAE,MAAM,EAAEA,GAAE,MAAM,EAAE,EAAED,EAAC,GAAG,CAAC,CAAC,SAAS,EAAEA,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAE,OAAOJ,IAAGA,GAAE,OAAOI,GAAEJ,GAAE,MAAMC,GAAE,GAAGC,GAAE,EAAED,GAAE,CAACA,KAAIC,GAAE,GAAGD,IAAG,GAAGA,GAAE,KAAKA,IAAG,KAAKA,KAAIA,GAAE,GAAG,GAAGA,IAAG,GAAUG,GAAE,SAAT,MAAiBA,GAAE,QAAQH,KAAIG,GAAE,OAAO,MAAMA,GAAE,KAAKF,GAAEE,GAAE,MAAMH,GAAE,EAAED,EAAC,IAAI,CAAC,CAAC,SAAS,EAAEA,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAE,OAAOJ,IAAGI,GAAE,IAAI,GAAGJ,GAAE,MAAMI,IAAG,OAAO,MAAMF,GAAE,EAAEF,GAAEC,EAAC,KAAK,IAAID,GAAE,MAAM,MAAME,IAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,SAAS,EAAEF,GAAE,CAAC,GAAG,EAAE,CAAC,IAAIC,GAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAEA,GAAE,EAAEA,GAAE,KAAKD,GAAE,KAAKC,IAAG,EAAE,EAAE,KAAKA,GAAE,KAAKD,GAAE,KAAKC,IAAG,EAAE,EAAE,KAAKA,GAAE,KAAKD,GAAE,KAAKC,IAAG,EAAE,EAAE,KAAKA,GAAE,KAAKD,GAAE,KAAKC,IAAG,EAAE,EAAE,IAAI,EAAE,EAAED,GAAE,KAAK,EAAE,IAAI,EAAE,EAAEA,GAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAEC,GAAE,EAAEA,GAAE,IAAID,GAAE,KAAKC,IAAG,EAAE,EAAE,EAAE,EAAED,GAAE,KAAK,EAAE,GAAG,EAAE,EAAEA,GAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAACA,GAAE,QAAQ,EAAEA,GAAE,QAAQ,EAAEA,GAAE,SAAS,EAAEA,GAAE,SAAS,CAAC,CAAC,SAAS,EAAEA,GAAEC,GAAEC,GAAEE,GAAE,CAAC,IAAIC,GAAEC,GAAEN,GAAE,MAAM,OAAcM,GAAE,SAAT,OAAkBA,GAAE,MAAM,GAAGA,GAAE,MAAMA,GAAE,MAAM,EAAEA,GAAE,MAAM,EAAEA,GAAE,OAAO,IAAI,EAAE,KAAKA,GAAE,KAAK,GAAGF,IAAGE,GAAE,OAAO,EAAE,SAASA,GAAE,OAAOL,GAAEC,GAAEI,GAAE,MAAMA,GAAE,MAAM,CAAC,EAAEA,GAAE,MAAM,EAAEA,GAAE,MAAMA,GAAE,QAAQF,IAAGC,GAAEC,GAAE,MAAMA,GAAE,SAASD,GAAED,IAAG,EAAE,SAASE,GAAE,OAAOL,GAAEC,GAAEE,GAAEC,GAAEC,GAAE,KAAK,GAAGF,IAAGC,KAAI,EAAE,SAASC,GAAE,OAAOL,GAAEC,GAAEE,GAAEA,GAAE,CAAC,EAAEE,GAAE,MAAMF,GAAEE,GAAE,MAAMA,GAAE,QAAQA,GAAE,OAAOD,GAAEC,GAAE,QAAQA,GAAE,QAAQA,GAAE,MAAM,GAAGA,GAAE,MAAMA,GAAE,QAAQA,GAAE,OAAOD,MAAK,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,cAAc,EAAE,EAAE,iBAAiB,EAAE,EAAE,YAAY,SAASL,GAAE,CAAC,OAAO,EAAEA,GAAE,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,QAAQ,SAASA,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAET,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAACH,IAAG,CAACA,GAAE,OAAO,CAACA,GAAE,QAAQ,CAACA,GAAE,OAAWA,GAAE,WAAN,EAAe,OAAO,GAAQE,GAAEF,GAAE,OAAO,OAAjB,KAAwBE,GAAE,KAAK,IAAIK,GAAEP,GAAE,SAASK,GAAEL,GAAE,OAAOS,GAAET,GAAE,UAAUM,GAAEN,GAAE,QAAQI,GAAEJ,GAAE,MAAMQ,GAAER,GAAE,SAASU,GAAER,GAAE,KAAKS,GAAET,GAAE,KAAKU,GAAEJ,GAAEL,GAAEM,GAAE,EAAE,EAAE,EAAE,OAAO,OAAOP,GAAE,KAAK,CAAC,KAAK,EAAE,GAAOA,GAAE,OAAN,EAAW,CAACA,GAAE,KAAK,GAAG,KAAK,CAAC,KAAKS,GAAE,IAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAAC,GAAG,EAAET,GAAE,MAAcQ,KAAR,MAAU,CAAC,EAAER,GAAE,MAAM,CAAC,EAAE,IAAIQ,GAAE,EAAE,CAAC,EAAEA,KAAI,EAAE,IAAIR,GAAE,MAAM,EAAEA,GAAE,MAAM,EAAE,EAAE,CAAC,EAAES,GAAED,GAAE,EAAER,GAAE,KAAK,EAAE,KAAK,CAAC,GAAGA,GAAE,MAAM,EAAEA,GAAE,OAAOA,GAAE,KAAK,KAAK,IAAI,EAAE,EAAEA,GAAE,UAAU,IAAIQ,KAAI,IAAIA,IAAG,IAAI,GAAG,CAACV,GAAE,IAAI,yBAAyBE,GAAE,KAAK,GAAG,KAAK,CAAC,IAAO,GAAGQ,KAAP,EAAU,CAACV,GAAE,IAAI,6BAA6BE,GAAE,KAAK,GAAG,KAAK,CAAC,GAAGS,IAAG,EAAE,EAAE,GAAG,IAAID,MAAK,IAAQR,GAAE,QAAN,EAAYA,GAAE,MAAM,UAAU,EAAEA,GAAE,MAAM,CAACF,GAAE,IAAI,sBAAsBE,GAAE,KAAK,GAAG,KAAK,CAACA,GAAE,KAAK,GAAG,EAAEF,GAAE,MAAME,GAAE,MAAM,EAAEA,GAAE,KAAK,IAAIQ,GAAE,GAAG,GAAGC,GAAED,GAAE,EAAE,MAAM,IAAK,GAAE,KAAKC,GAAE,IAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAAC,GAAGT,GAAE,MAAMQ,IAAM,IAAIR,GAAE,QAAV,EAAiB,CAACF,GAAE,IAAI,6BAA6BE,GAAE,KAAK,GAAG,KAAK,CAAC,GAAG,MAAMA,GAAE,MAAM,CAACF,GAAE,IAAI,2BAA2BE,GAAE,KAAK,GAAG,KAAK,CAACA,GAAE,OAAOA,GAAE,KAAK,KAAKQ,IAAG,EAAE,GAAG,IAAIR,GAAE,QAAQ,EAAE,CAAC,EAAE,IAAIQ,GAAE,EAAE,CAAC,EAAEA,KAAI,EAAE,IAAIR,GAAE,MAAM,EAAEA,GAAE,MAAM,EAAE,EAAE,CAAC,GAAGS,GAAED,GAAE,EAAER,GAAE,KAAK,EAAE,IAAK,GAAE,KAAKS,GAAE,IAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAACT,GAAE,OAAOA,GAAE,KAAK,KAAKQ,IAAG,IAAIR,GAAE,QAAQ,EAAE,CAAC,EAAE,IAAIQ,GAAE,EAAE,CAAC,EAAEA,KAAI,EAAE,IAAI,EAAE,CAAC,EAAEA,KAAI,GAAG,IAAI,EAAE,CAAC,EAAEA,KAAI,GAAG,IAAIR,GAAE,MAAM,EAAEA,GAAE,MAAM,EAAE,EAAE,CAAC,GAAGS,GAAED,GAAE,EAAER,GAAE,KAAK,EAAE,IAAK,GAAE,KAAKS,GAAE,IAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAACT,GAAE,OAAOA,GAAE,KAAK,OAAO,IAAIQ,GAAER,GAAE,KAAK,GAAGQ,IAAG,GAAG,IAAIR,GAAE,QAAQ,EAAE,CAAC,EAAE,IAAIQ,GAAE,EAAE,CAAC,EAAEA,KAAI,EAAE,IAAIR,GAAE,MAAM,EAAEA,GAAE,MAAM,EAAE,EAAE,CAAC,GAAGS,GAAED,GAAE,EAAER,GAAE,KAAK,EAAE,IAAK,GAAE,GAAG,KAAKA,GAAE,MAAM,CAAC,KAAKS,GAAE,IAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAACT,GAAE,OAAOQ,GAAER,GAAE,OAAOA,GAAE,KAAK,UAAUQ,IAAG,IAAIR,GAAE,QAAQ,EAAE,CAAC,EAAE,IAAIQ,GAAE,EAAE,CAAC,EAAEA,KAAI,EAAE,IAAIR,GAAE,MAAM,EAAEA,GAAE,MAAM,EAAE,EAAE,CAAC,GAAGS,GAAED,GAAE,CAAC,MAAMR,GAAE,OAAOA,GAAE,KAAK,MAAM,MAAMA,GAAE,KAAK,EAAE,IAAK,GAAE,GAAG,KAAKA,GAAE,QAAQM,IAAG,EAAEN,GAAE,UAAU,EAAEM,IAAG,IAAIN,GAAE,OAAO,EAAEA,GAAE,KAAK,UAAUA,GAAE,OAAOA,GAAE,KAAK,QAAQA,GAAE,KAAK,MAAM,IAAI,MAAMA,GAAE,KAAK,SAAS,GAAG,EAAE,SAASA,GAAE,KAAK,MAAME,GAAEE,GAAE,EAAE,CAAC,GAAG,IAAIJ,GAAE,QAAQA,GAAE,MAAM,EAAEA,GAAE,MAAME,GAAE,EAAEE,EAAC,GAAGE,IAAG,EAAEF,IAAG,EAAEJ,GAAE,QAAQ,GAAGA,GAAE,QAAQ,MAAM,EAAEA,GAAE,OAAO,EAAEA,GAAE,KAAK,EAAE,IAAK,GAAE,GAAG,KAAKA,GAAE,MAAM,CAAC,GAAOM,KAAJ,EAAM,MAAM,EAAE,IAAI,EAAE,EAAE,EAAEJ,GAAEE,GAAE,GAAG,EAAEJ,GAAE,MAAM,GAAGA,GAAE,OAAO,QAAQA,GAAE,KAAK,MAAM,OAAO,aAAa,CAAC,GAAG,GAAG,EAAEM,IAAG,CAAC,GAAG,IAAIN,GAAE,QAAQA,GAAE,MAAM,EAAEA,GAAE,MAAME,GAAE,EAAEE,EAAC,GAAGE,IAAG,EAAEF,IAAG,EAAE,EAAE,MAAM,CAAC,MAAMJ,GAAE,OAAOA,GAAE,KAAK,KAAK,MAAMA,GAAE,OAAO,EAAEA,GAAE,KAAK,EAAE,IAAK,GAAE,GAAG,KAAKA,GAAE,MAAM,CAAC,GAAOM,KAAJ,EAAM,MAAM,EAAE,IAAI,EAAE,EAAE,EAAEJ,GAAEE,GAAE,GAAG,EAAEJ,GAAE,MAAM,GAAGA,GAAE,OAAO,QAAQA,GAAE,KAAK,SAAS,OAAO,aAAa,CAAC,GAAG,GAAG,EAAEM,IAAG,CAAC,GAAG,IAAIN,GAAE,QAAQA,GAAE,MAAM,EAAEA,GAAE,MAAME,GAAE,EAAEE,EAAC,GAAGE,IAAG,EAAEF,IAAG,EAAE,EAAE,MAAM,CAAC,MAAMJ,GAAE,OAAOA,GAAE,KAAK,QAAQ,MAAMA,GAAE,KAAK,EAAE,IAAK,GAAE,GAAG,IAAIA,GAAE,MAAM,CAAC,KAAKS,GAAE,IAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAAC,GAAGD,MAAK,MAAMR,GAAE,OAAO,CAACF,GAAE,IAAI,sBAAsBE,GAAE,KAAK,GAAG,KAAK,CAACS,GAAED,GAAE,CAAC,CAACR,GAAE,OAAOA,GAAE,KAAK,KAAKA,GAAE,OAAO,EAAE,EAAEA,GAAE,KAAK,KAAK,IAAIF,GAAE,MAAME,GAAE,MAAM,EAAEA,GAAE,KAAK,GAAG,MAAM,IAAK,IAAG,KAAKS,GAAE,IAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAACX,GAAE,MAAME,GAAE,MAAM,EAAEQ,EAAC,EAAEC,GAAED,GAAE,EAAER,GAAE,KAAK,GAAG,IAAK,IAAG,GAAOA,GAAE,WAAN,EAAe,OAAOF,GAAE,SAASO,GAAEP,GAAE,UAAUS,GAAET,GAAE,QAAQM,GAAEN,GAAE,SAASQ,GAAEN,GAAE,KAAKQ,GAAER,GAAE,KAAKS,GAAE,EAAEX,GAAE,MAAME,GAAE,MAAM,EAAEA,GAAE,KAAK,GAAG,IAAK,IAAG,GAAOD,KAAJ,GAAWA,KAAJ,EAAM,MAAM,EAAE,IAAK,IAAG,GAAGC,GAAE,KAAK,CAACQ,MAAK,EAAEC,GAAEA,IAAG,EAAEA,GAAET,GAAE,KAAK,GAAG,KAAK,CAAC,KAAKS,GAAE,GAAG,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAAC,OAAOT,GAAE,KAAK,EAAEQ,GAAEC,IAAG,EAAE,GAAGD,MAAK,GAAG,CAAC,IAAK,GAAER,GAAE,KAAK,GAAG,MAAM,IAAK,GAAE,GAAG,EAAEA,EAAC,EAAEA,GAAE,KAAK,GAAOD,KAAJ,EAAM,MAAMS,MAAK,EAAEC,IAAG,EAAE,MAAM,EAAE,IAAK,GAAET,GAAE,KAAK,GAAG,MAAM,IAAK,GAAEF,GAAE,IAAI,qBAAqBE,GAAE,KAAK,EAAE,CAACQ,MAAK,EAAEC,IAAG,EAAE,MAAM,IAAK,IAAG,IAAID,MAAK,EAAEC,GAAEA,IAAG,EAAEA,GAAEA,GAAE,IAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAAC,IAAI,MAAMD,MAAKA,KAAI,GAAG,OAAO,CAACV,GAAE,IAAI,+BAA+BE,GAAE,KAAK,GAAG,KAAK,CAAC,GAAGA,GAAE,OAAO,MAAMQ,GAAEC,GAAED,GAAE,EAAER,GAAE,KAAK,GAAOD,KAAJ,EAAM,MAAM,EAAE,IAAK,IAAGC,GAAE,KAAK,GAAG,IAAK,IAAG,GAAG,EAAEA,GAAE,OAAO,CAAC,GAAGM,GAAE,IAAI,EAAEA,IAAGC,GAAE,IAAI,EAAEA,IAAO,IAAJ,EAAM,MAAM,EAAE,EAAE,SAASJ,GAAED,GAAEE,GAAE,EAAEC,EAAC,EAAEC,IAAG,EAAEF,IAAG,EAAEG,IAAG,EAAEF,IAAG,EAAEL,GAAE,QAAQ,EAAE,KAAK,CAACA,GAAE,KAAK,GAAG,MAAM,IAAK,IAAG,KAAKS,GAAE,IAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAAC,GAAGT,GAAE,KAAK,KAAK,GAAGQ,IAAGA,MAAK,EAAEC,IAAG,EAAET,GAAE,MAAM,GAAG,GAAGQ,IAAGA,MAAK,EAAEC,IAAG,EAAET,GAAE,MAAM,GAAG,GAAGQ,IAAGA,MAAK,EAAEC,IAAG,EAAE,IAAIT,GAAE,MAAM,GAAGA,GAAE,MAAM,CAACF,GAAE,IAAI,sCAAsCE,GAAE,KAAK,GAAG,KAAK,CAACA,GAAE,KAAK,EAAEA,GAAE,KAAK,GAAG,IAAK,IAAG,KAAKA,GAAE,KAAKA,GAAE,OAAO,CAAC,KAAKS,GAAE,GAAG,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAACT,GAAE,KAAK,EAAEA,GAAE,MAAM,CAAC,EAAE,EAAEQ,GAAEA,MAAK,EAAEC,IAAG,CAAC,CAAC,KAAKT,GAAE,KAAK,IAAIA,GAAE,KAAK,EAAEA,GAAE,MAAM,CAAC,EAAE,EAAE,GAAGA,GAAE,QAAQA,GAAE,OAAOA,GAAE,QAAQ,EAAE,EAAE,CAAC,KAAKA,GAAE,OAAO,EAAE,EAAE,EAAE,EAAEA,GAAE,KAAK,EAAE,GAAGA,GAAE,QAAQ,EAAEA,GAAE,KAAK,CAAC,EAAEA,GAAE,QAAQ,EAAE,KAAK,EAAE,CAACF,GAAE,IAAI,2BAA2BE,GAAE,KAAK,GAAG,KAAK,CAACA,GAAE,KAAK,EAAEA,GAAE,KAAK,GAAG,IAAK,IAAG,KAAKA,GAAE,KAAKA,GAAE,KAAKA,GAAE,OAAO,CAAC,KAAK,GAAG,EAAEA,GAAE,QAAQQ,IAAG,GAAGR,GAAE,SAAS,CAAC,KAAK,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,KAAKS,KAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAAC,GAAG,EAAE,GAAGD,MAAK,EAAEC,IAAG,EAAET,GAAE,KAAKA,GAAE,MAAM,EAAE,MAAM,CAAC,GAAQ,IAAL,GAAO,CAAC,IAAI,EAAE,EAAE,EAAES,GAAE,GAAG,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAAC,GAAGD,MAAK,EAAEC,IAAG,EAAMT,GAAE,OAAN,EAAW,CAACF,GAAE,IAAI,4BAA4BE,GAAE,KAAK,GAAG,KAAK,CAAC,EAAEA,GAAE,KAAKA,GAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAEQ,IAAGA,MAAK,EAAEC,IAAG,CAAC,SAAc,IAAL,GAAO,CAAC,IAAI,EAAE,EAAE,EAAEA,GAAE,GAAG,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAACA,IAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAGD,MAAK,IAAIA,MAAK,EAAEC,IAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAEA,GAAE,GAAG,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAACA,IAAG,EAAE,EAAE,EAAE,EAAE,IAAI,KAAKD,MAAK,IAAIA,MAAK,EAAEC,IAAG,CAAC,CAAC,GAAGT,GAAE,KAAK,EAAEA,GAAE,KAAKA,GAAE,MAAM,CAACF,GAAE,IAAI,4BAA4BE,GAAE,KAAK,GAAG,KAAK,CAAC,KAAK,KAAKA,GAAE,KAAKA,GAAE,MAAM,EAAE,CAAC,CAAC,CAAC,GAAQA,GAAE,OAAP,GAAY,MAAM,GAAOA,GAAE,KAAK,GAAG,IAAd,EAAgB,CAACF,GAAE,IAAI,uCAAuCE,GAAE,KAAK,GAAG,KAAK,CAAC,GAAGA,GAAE,QAAQ,EAAE,EAAE,CAAC,KAAKA,GAAE,OAAO,EAAE,EAAE,EAAE,EAAEA,GAAE,KAAK,EAAEA,GAAE,KAAKA,GAAE,QAAQ,EAAEA,GAAE,KAAK,CAAC,EAAEA,GAAE,QAAQ,EAAE,KAAK,EAAE,CAACF,GAAE,IAAI,8BAA8BE,GAAE,KAAK,GAAG,KAAK,CAAC,GAAGA,GAAE,SAAS,EAAEA,GAAE,SAASA,GAAE,QAAQ,EAAE,CAAC,KAAKA,GAAE,QAAQ,EAAE,EAAE,EAAE,EAAEA,GAAE,KAAKA,GAAE,KAAKA,GAAE,MAAMA,GAAE,SAAS,EAAEA,GAAE,KAAK,CAAC,EAAEA,GAAE,SAAS,EAAE,KAAK,EAAE,CAACF,GAAE,IAAI,wBAAwBE,GAAE,KAAK,GAAG,KAAK,CAAC,GAAGA,GAAE,KAAK,GAAOD,KAAJ,EAAM,MAAM,EAAE,IAAK,IAAGC,GAAE,KAAK,GAAG,IAAK,IAAG,GAAG,GAAGM,IAAG,KAAKC,GAAE,CAACT,GAAE,SAASO,GAAEP,GAAE,UAAUS,GAAET,GAAE,QAAQM,GAAEN,GAAE,SAASQ,GAAEN,GAAE,KAAKQ,GAAER,GAAE,KAAKS,GAAE,EAAEX,GAAEG,EAAC,EAAEI,GAAEP,GAAE,SAASK,GAAEL,GAAE,OAAOS,GAAET,GAAE,UAAUM,GAAEN,GAAE,QAAQI,GAAEJ,GAAE,MAAMQ,GAAER,GAAE,SAASU,GAAER,GAAE,KAAKS,GAAET,GAAE,KAAUA,GAAE,OAAP,KAAcA,GAAE,KAAK,IAAI,KAAK,CAAC,IAAIA,GAAE,KAAK,EAAE,GAAG,EAAEA,GAAE,QAAQQ,IAAG,GAAGR,GAAE,SAAS,CAAC,KAAK,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,KAAKS,KAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAAC,GAAG,IAAO,IAAI,IAAR,EAAW,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAET,GAAE,QAAQ,IAAIQ,IAAG,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,KAAKC,KAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAACD,MAAK,EAAEC,IAAG,EAAET,GAAE,MAAM,CAAC,CAAC,GAAGQ,MAAK,EAAEC,IAAG,EAAET,GAAE,MAAM,EAAEA,GAAE,OAAO,EAAM,IAAJ,EAAM,CAACA,GAAE,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,CAACA,GAAE,KAAK,GAAGA,GAAE,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,CAACF,GAAE,IAAI,8BAA8BE,GAAE,KAAK,GAAG,KAAK,CAACA,GAAE,MAAM,GAAG,EAAEA,GAAE,KAAK,GAAG,IAAK,IAAG,GAAGA,GAAE,MAAM,CAAC,IAAI,EAAEA,GAAE,MAAMS,GAAE,GAAG,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAACT,GAAE,QAAQQ,IAAG,GAAGR,GAAE,OAAO,EAAEQ,MAAKR,GAAE,MAAMS,IAAGT,GAAE,MAAMA,GAAE,MAAMA,GAAE,KAAK,CAACA,GAAE,IAAIA,GAAE,OAAOA,GAAE,KAAK,GAAG,IAAK,IAAG,KAAK,GAAG,EAAEA,GAAE,SAASQ,IAAG,GAAGR,GAAE,UAAU,CAAC,KAAK,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,KAAKS,KAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAAC,IAAO,IAAI,IAAR,EAAW,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAET,GAAE,SAAS,IAAIQ,IAAG,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,KAAKC,KAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAACD,MAAK,EAAEC,IAAG,EAAET,GAAE,MAAM,CAAC,CAAC,GAAGQ,MAAK,EAAEC,IAAG,EAAET,GAAE,MAAM,EAAE,GAAG,EAAE,CAACF,GAAE,IAAI,wBAAwBE,GAAE,KAAK,GAAG,KAAK,CAACA,GAAE,OAAO,EAAEA,GAAE,MAAM,GAAG,EAAEA,GAAE,KAAK,GAAG,IAAK,IAAG,GAAGA,GAAE,MAAM,CAAC,IAAI,EAAEA,GAAE,MAAMS,GAAE,GAAG,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAACT,GAAE,QAAQQ,IAAG,GAAGR,GAAE,OAAO,EAAEQ,MAAKR,GAAE,MAAMS,IAAGT,GAAE,MAAMA,GAAE,MAAMA,GAAE,KAAK,CAAC,GAAGA,GAAE,OAAOA,GAAE,KAAK,CAACF,GAAE,IAAI,gCAAgCE,GAAE,KAAK,GAAG,KAAK,CAACA,GAAE,KAAK,GAAG,IAAK,IAAG,GAAOO,KAAJ,EAAM,MAAM,EAAE,GAAG,EAAEN,GAAEM,GAAEP,GAAE,OAAO,EAAE,CAAC,IAAI,EAAEA,GAAE,OAAO,GAAGA,GAAE,OAAOA,GAAE,KAAK,CAACF,GAAE,IAAI,gCAAgCE,GAAE,KAAK,GAAG,KAAK,CAAC,EAAE,EAAEA,GAAE,OAAO,GAAGA,GAAE,MAAMA,GAAE,MAAM,GAAGA,GAAE,MAAM,EAAE,EAAEA,GAAE,SAAS,EAAEA,GAAE,QAAQ,EAAEA,GAAE,MAAM,MAAM,EAAEG,GAAE,EAAEE,GAAEL,GAAE,OAAO,EAAEA,GAAE,OAAO,IAAIO,GAAE,IAAI,EAAEA,IAAGA,IAAG,EAAEP,GAAE,QAAQ,EAAEG,GAAEE,IAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,CAAKL,GAAE,SAAN,IAAeA,GAAE,KAAK,IAAI,MAAM,IAAK,IAAG,GAAOO,KAAJ,EAAM,MAAM,EAAEJ,GAAEE,IAAG,EAAEL,GAAE,OAAOO,KAAIP,GAAE,KAAK,GAAG,MAAM,IAAK,IAAG,GAAGA,GAAE,KAAK,CAAC,KAAKS,GAAE,IAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAAC,GAAGR,IAAGM,GAAET,GAAE,WAAWG,GAAED,GAAE,OAAOC,GAAEA,KAAIH,GAAE,MAAME,GAAE,MAAMA,GAAE,MAAM,EAAEA,GAAE,MAAMG,GAAEF,GAAEI,GAAEJ,EAAC,EAAE,EAAED,GAAE,MAAMG,GAAEF,GAAEI,GAAEJ,EAAC,GAAGA,GAAEM,IAAGP,GAAE,MAAMQ,GAAE,EAAEA,EAAC,KAAKR,GAAE,MAAM,CAACF,GAAE,IAAI,uBAAuBE,GAAE,KAAK,GAAG,KAAK,CAACS,GAAED,GAAE,CAAC,CAACR,GAAE,KAAK,GAAG,IAAK,IAAG,GAAGA,GAAE,MAAMA,GAAE,MAAM,CAAC,KAAKS,GAAE,IAAI,CAAC,GAAOH,KAAJ,EAAM,MAAM,EAAEA,KAAIE,IAAGN,GAAEE,IAAG,GAAGK,GAAEA,IAAG,CAAC,CAAC,GAAGD,MAAK,WAAWR,GAAE,OAAO,CAACF,GAAE,IAAI,yBAAyBE,GAAE,KAAK,GAAG,KAAK,CAACS,GAAED,GAAE,CAAC,CAACR,GAAE,KAAK,GAAG,IAAK,IAAG,EAAE,EAAE,MAAM,EAAE,IAAK,IAAG,EAAE,GAAG,MAAM,EAAE,IAAK,IAAG,MAAM,GAAW,QAAQ,OAAO,CAAC,CAAC,OAAOF,GAAE,SAASO,GAAEP,GAAE,UAAUS,GAAET,GAAE,QAAQM,GAAEN,GAAE,SAASQ,GAAEN,GAAE,KAAKQ,GAAER,GAAE,KAAKS,IAAGT,GAAE,OAAOC,KAAIH,GAAE,WAAWE,GAAE,KAAK,KAAKA,GAAE,KAAK,IAAQD,KAAJ,KAAS,EAAED,GAAEA,GAAE,OAAOA,GAAE,SAASG,GAAEH,GAAE,SAAS,GAAGE,GAAE,KAAK,GAAG,KAAKU,IAAGZ,GAAE,SAASG,IAAGH,GAAE,UAAUA,GAAE,UAAUY,GAAEZ,GAAE,WAAWG,GAAED,GAAE,OAAOC,GAAED,GAAE,MAAMC,KAAIH,GAAE,MAAME,GAAE,MAAMA,GAAE,MAAM,EAAEA,GAAE,MAAMG,GAAEF,GAAEH,GAAE,SAASG,EAAC,EAAE,EAAED,GAAE,MAAMG,GAAEF,GAAEH,GAAE,SAASG,EAAC,GAAGH,GAAE,UAAUE,GAAE,MAAMA,GAAE,KAAK,GAAG,IAASA,GAAE,OAAP,GAAY,IAAI,IAASA,GAAE,OAAP,IAAkBA,GAAE,OAAP,GAAY,IAAI,IAAOU,IAAH,GAAUT,KAAJ,GAAWF,KAAJ,IAAQ,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,SAASD,GAAE,CAAC,GAAG,CAACA,IAAG,CAACA,GAAE,MAAM,OAAO,EAAE,IAAIC,GAAED,GAAE,MAAM,OAAOC,GAAE,SAASA,GAAE,OAAO,MAAMD,GAAE,MAAM,KAAK,CAAC,EAAE,EAAE,iBAAiB,SAASA,GAAEC,GAAE,CAAC,IAAIC,GAAE,OAAOF,IAAGA,GAAE,OAAU,GAAGE,GAAEF,GAAE,OAAO,OAAlB,EAAwB,IAAIE,GAAE,KAAKD,IAAG,KAAK,GAAG,GAAG,CAAC,EAAE,EAAE,qBAAqB,SAASD,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAEH,GAAE,OAAO,OAAOD,IAAGA,GAAE,OAAWE,GAAEF,GAAE,OAAO,OAAhB,GAA2BE,GAAE,OAAP,GAAY,EAAOA,GAAE,OAAP,IAAa,EAAE,EAAED,GAAEG,GAAE,CAAC,IAAIF,GAAE,MAAM,GAAG,EAAEF,GAAEC,GAAEG,GAAEA,EAAC,GAAGF,GAAE,KAAK,GAAG,KAAKA,GAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,YAAY,oCAAoC,EAAE,CAAC,kBAAkB,GAAG,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,QAAQ,SAASF,GAAEC,GAAEC,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAED,GAAEC,GAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,GAAG,GAAG,GAAO,EAAE,CAAC,IAAP,EAAS,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAO,IAAJ,EAAM,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAO,EAAE,CAAC,IAAP,EAAS,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAQF,KAAJ,GAAW,IAAJ,GAAO,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAQC,GAAEC,GAAE,CAAC,IAAT,IAAa,EAAE,EAAED,GAAEC,GAAE,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,EAAMF,KAAJ,GAAO,EAAE,EAAE,EAAE,IAAQA,KAAJ,GAAO,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAMA,KAAJ,GAAO,IAAI,GAAOA,KAAJ,GAAO,IAAI,EAAE,MAAO,GAAE,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAM,IAAJ,GAAO,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAO,IAAJ,GAAO,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAO,EAAE,EAAE,CAAC,GAAR,EAAU,CAAC,GAAG,IAAI,EAAE,MAAM,EAAEC,GAAEC,GAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAAQ,IAAJ,IAAQ,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,GAAG,GAAG,EAAMF,KAAJ,GAAO,IAAI,GAAOA,KAAJ,GAAO,IAAI,EAAE,MAAO,GAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,OAAW,IAAJ,IAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,kBAAkB,EAAE,aAAa,EAAE,GAAG,KAAK,aAAa,KAAK,eAAe,KAAK,aAAa,KAAK,sBAAsB,KAAK,eAAe,KAAK,sBAAsB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAEA,GAAE,CAAC,QAAQC,GAAED,GAAE,OAAO,GAAG,EAAEC,IAAGD,GAAEC,EAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,MAAM,CAAC,EAAE,SAAS,EAAED,GAAEC,GAAEC,GAAEE,GAAEC,GAAE,CAAC,KAAK,YAAYL,GAAE,KAAK,WAAWC,GAAE,KAAK,WAAWC,GAAE,KAAK,MAAME,GAAE,KAAK,WAAWC,GAAE,KAAK,UAAUL,IAAGA,GAAE,MAAM,CAAC,SAAS,EAAEA,GAAEC,GAAE,CAAC,KAAK,SAASD,GAAE,KAAK,SAAS,EAAE,KAAK,UAAUC,EAAC,CAAC,SAAS,EAAED,GAAE,CAAC,OAAOA,GAAE,IAAI,EAAEA,EAAC,EAAE,EAAE,KAAKA,KAAI,EAAE,CAAC,CAAC,SAAS,EAAEA,GAAEC,GAAE,CAACD,GAAE,YAAYA,GAAE,SAAS,EAAE,IAAIC,GAAED,GAAE,YAAYA,GAAE,SAAS,EAAEC,KAAI,EAAE,GAAG,CAAC,SAAS,EAAED,GAAEC,GAAEC,GAAE,CAACF,GAAE,SAAS,EAAEE,IAAGF,GAAE,QAAQC,IAAGD,GAAE,SAAS,MAAM,EAAEA,GAAEA,GAAE,MAAM,EAAEA,GAAE,OAAOC,IAAG,EAAED,GAAE,SAASA,GAAE,UAAUE,GAAE,IAAIF,GAAE,QAAQC,IAAGD,GAAE,SAAS,MAAMA,GAAE,UAAUE,GAAE,CAAC,SAAS,EAAEF,GAAEC,GAAEC,GAAE,CAAC,EAAEF,GAAEE,GAAE,EAAED,EAAC,EAAEC,GAAE,EAAED,GAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAED,GAAEC,GAAE,CAAC,QAAQC,GAAE,EAAEA,IAAG,EAAEF,GAAEA,MAAK,EAAEE,KAAI,EAAE,EAAE,EAAED,IAAG,CAAC,OAAOC,KAAI,CAAC,CAAC,SAAS,EAAEF,GAAEC,GAAEC,GAAE,CAAC,IAAIE,GAAEC,GAAEC,GAAE,IAAI,MAAM,EAAE,CAAC,EAAEC,GAAE,EAAE,IAAIH,GAAE,EAAEA,IAAG,EAAEA,KAAIE,GAAEF,EAAC,EAAEG,GAAEA,GAAEL,GAAEE,GAAE,CAAC,GAAG,EAAE,IAAIC,GAAE,EAAEA,IAAGJ,GAAEI,KAAI,CAAC,IAAIG,GAAER,GAAE,EAAEK,GAAE,CAAC,EAAMG,KAAJ,IAAQR,GAAE,EAAEK,EAAC,EAAE,EAAEC,GAAEE,EAAC,IAAIA,EAAC,EAAE,CAAC,CAAC,SAAS,EAAER,GAAE,CAAC,IAAIC,GAAE,IAAIA,GAAE,EAAEA,GAAE,EAAEA,KAAID,GAAE,UAAU,EAAEC,EAAC,EAAE,EAAE,IAAIA,GAAE,EAAEA,GAAE,EAAEA,KAAID,GAAE,UAAU,EAAEC,EAAC,EAAE,EAAE,IAAIA,GAAE,EAAEA,GAAE,EAAEA,KAAID,GAAE,QAAQ,EAAEC,EAAC,EAAE,EAAED,GAAE,UAAU,EAAE,CAAC,EAAE,EAAEA,GAAE,QAAQA,GAAE,WAAW,EAAEA,GAAE,SAASA,GAAE,QAAQ,CAAC,CAAC,SAAS,EAAEA,GAAE,CAAC,EAAEA,GAAE,SAAS,EAAEA,GAAEA,GAAE,MAAM,EAAE,EAAEA,GAAE,WAAWA,GAAE,YAAYA,GAAE,SAAS,EAAEA,GAAE,QAAQA,GAAE,OAAO,EAAEA,GAAE,SAAS,CAAC,CAAC,SAAS,EAAEA,GAAEC,GAAEC,GAAEE,GAAE,CAAC,IAAIC,GAAE,EAAEJ,GAAEK,GAAE,EAAEJ,GAAE,OAAOF,GAAEK,EAAC,EAAEL,GAAEM,EAAC,GAAGN,GAAEK,EAAC,IAAIL,GAAEM,EAAC,GAAGF,GAAEH,EAAC,GAAGG,GAAEF,EAAC,CAAC,CAAC,SAAS,EAAEF,GAAEC,GAAEC,GAAE,CAAC,QAAQE,GAAEJ,GAAE,KAAKE,EAAC,EAAEG,GAAEH,IAAG,EAAEG,IAAGL,GAAE,WAAWK,GAAEL,GAAE,UAAU,EAAEC,GAAED,GAAE,KAAKK,GAAE,CAAC,EAAEL,GAAE,KAAKK,EAAC,EAAEL,GAAE,KAAK,GAAGK,KAAI,CAAC,EAAEJ,GAAEG,GAAEJ,GAAE,KAAKK,EAAC,EAAEL,GAAE,KAAK,IAAIA,GAAE,KAAKE,EAAC,EAAEF,GAAE,KAAKK,EAAC,EAAEH,GAAEG,GAAEA,KAAI,EAAEL,GAAE,KAAKE,EAAC,EAAEE,EAAC,CAAC,SAAS,EAAEJ,GAAEC,GAAEC,GAAE,CAAC,IAAIE,GAAEC,GAAEC,GAAEC,GAAEC,GAAE,EAAE,GAAOR,GAAE,WAAN,EAAe,KAAKI,GAAEJ,GAAE,YAAYA,GAAE,MAAM,EAAEQ,EAAC,GAAG,EAAER,GAAE,YAAYA,GAAE,MAAM,EAAEQ,GAAE,CAAC,EAAEH,GAAEL,GAAE,YAAYA,GAAE,MAAMQ,EAAC,EAAEA,KAAQJ,KAAJ,EAAM,EAAEJ,GAAEK,GAAEJ,EAAC,GAAG,EAAED,IAAGM,GAAE,EAAED,EAAC,GAAG,EAAE,EAAEJ,EAAC,GAAOM,GAAE,EAAED,EAAC,KAAV,GAAc,EAAEN,GAAEK,IAAG,EAAEC,EAAC,EAAEC,EAAC,EAAE,EAAEP,GAAEM,GAAE,EAAE,EAAEF,EAAC,EAAEF,EAAC,GAAOK,GAAE,EAAED,EAAC,KAAV,GAAc,EAAEN,GAAEI,IAAG,EAAEE,EAAC,EAAEC,EAAC,GAAGC,GAAER,GAAE,UAAU,CAAC,EAAEA,GAAE,EAAEC,EAAC,CAAC,CAAC,SAAS,EAAED,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAEC,GAAEC,GAAEL,GAAE,SAASM,GAAEN,GAAE,UAAU,YAAYO,GAAEP,GAAE,UAAU,UAAUQ,GAAER,GAAE,UAAU,MAAMS,GAAE,GAAG,IAAIV,GAAE,SAAS,EAAEA,GAAE,SAAS,EAAEE,GAAE,EAAEA,GAAEO,GAAEP,KAAQI,GAAE,EAAEJ,EAAC,IAAT,GAAYF,GAAE,KAAK,EAAEA,GAAE,QAAQ,EAAEU,GAAER,GAAEF,GAAE,MAAME,EAAC,EAAE,GAAGI,GAAE,EAAEJ,GAAE,CAAC,EAAE,EAAE,KAAKF,GAAE,SAAS,GAAGM,GAAE,GAAGD,GAAEL,GAAE,KAAK,EAAEA,GAAE,QAAQ,EAAEU,GAAE,EAAE,EAAEA,GAAE,EAAE,EAAE,EAAEV,GAAE,MAAMK,EAAC,EAAE,EAAEL,GAAE,UAAUQ,KAAIR,GAAE,YAAYO,GAAE,EAAEF,GAAE,CAAC,GAAG,IAAIJ,GAAE,SAASS,GAAER,GAAEF,GAAE,UAAU,EAAE,GAAGE,GAAEA,KAAI,EAAEF,GAAEM,GAAEJ,EAAC,EAAE,IAAIG,GAAEI,GAAEP,GAAEF,GAAE,KAAK,CAAC,EAAEA,GAAE,KAAK,CAAC,EAAEA,GAAE,KAAKA,GAAE,UAAU,EAAE,EAAEA,GAAEM,GAAE,CAAC,EAAEF,GAAEJ,GAAE,KAAK,CAAC,EAAEA,GAAE,KAAK,EAAEA,GAAE,QAAQ,EAAEE,GAAEF,GAAE,KAAK,EAAEA,GAAE,QAAQ,EAAEI,GAAEE,GAAE,EAAED,EAAC,EAAEC,GAAE,EAAEJ,EAAC,EAAEI,GAAE,EAAEF,EAAC,EAAEJ,GAAE,MAAMK,EAAC,GAAGL,GAAE,MAAME,EAAC,GAAGF,GAAE,MAAMI,EAAC,EAAEJ,GAAE,MAAME,EAAC,EAAEF,GAAE,MAAMI,EAAC,GAAG,EAAEE,GAAE,EAAEJ,GAAE,CAAC,EAAEI,GAAE,EAAEF,GAAE,CAAC,EAAEC,GAAEL,GAAE,KAAK,CAAC,EAAEK,KAAI,EAAEL,GAAEM,GAAE,CAAC,EAAE,GAAGN,GAAE,UAAU,CAACA,GAAE,KAAK,EAAEA,GAAE,QAAQ,EAAEA,GAAE,KAAK,CAAC,GAAE,SAASA,GAAEC,GAAE,CAAC,IAAIC,GAAEE,GAAEC,GAAEC,GAAEC,GAAEC,GAAEC,GAAER,GAAE,SAASS,GAAET,GAAE,SAASU,GAAEV,GAAE,UAAU,YAAYW,GAAEX,GAAE,UAAU,UAAUE,GAAEF,GAAE,UAAU,WAAWY,GAAEZ,GAAE,UAAU,WAAWa,GAAEb,GAAE,UAAU,WAAWc,GAAE,EAAE,IAAIT,GAAE,EAAEA,IAAG,EAAEA,KAAIN,GAAE,SAASM,EAAC,EAAE,EAAE,IAAIG,GAAE,EAAET,GAAE,KAAKA,GAAE,QAAQ,EAAE,CAAC,EAAE,EAAEE,GAAEF,GAAE,SAAS,EAAEE,GAAE,EAAEA,KAAIY,IAAGR,GAAEG,GAAE,EAAEA,GAAE,GAAGL,GAAEJ,GAAE,KAAKE,EAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAKI,GAAEQ,GAAEC,MAAKN,GAAE,EAAEL,GAAE,CAAC,EAAEE,GAAEI,GAAEN,KAAIJ,GAAE,SAASM,EAAC,IAAIC,GAAE,EAAEM,IAAGT,KAAIG,GAAEJ,GAAEC,GAAES,EAAC,GAAGL,GAAEC,GAAE,EAAEL,EAAC,EAAEJ,GAAE,SAASQ,IAAGF,GAAEC,IAAGK,KAAIZ,GAAE,YAAYQ,IAAGG,GAAE,EAAEP,GAAE,CAAC,EAAEG,MAAK,GAAOQ,KAAJ,EAAM,CAAC,EAAE,CAAC,IAAIT,GAAEQ,GAAE,EAAMd,GAAE,SAASM,EAAC,IAAhB,GAAmBA,KAAIN,GAAE,SAASM,EAAC,IAAIN,GAAE,SAASM,GAAE,CAAC,GAAG,EAAEN,GAAE,SAASc,EAAC,IAAIC,IAAG,CAAC,OAAO,EAAEA,IAAG,IAAIT,GAAEQ,GAAMR,KAAJ,EAAMA,KAAI,IAAIF,GAAEJ,GAAE,SAASM,EAAC,EAAMF,KAAJ,GAAOM,IAAGL,GAAEL,GAAE,KAAK,EAAEE,EAAC,KAAKO,GAAE,EAAEJ,GAAE,CAAC,IAAIC,KAAIN,GAAE,UAAUM,GAAEG,GAAE,EAAEJ,GAAE,CAAC,GAAGI,GAAE,EAAEJ,EAAC,EAAEI,GAAE,EAAEJ,GAAE,CAAC,EAAEC,IAAGF,KAAI,CAAC,GAAEJ,GAAEC,EAAC,EAAE,EAAEK,GAAEI,GAAEV,GAAE,QAAQ,CAAC,CAAC,SAAS,EAAEA,GAAEC,GAAEC,GAAE,CAAC,IAAIE,GAAEC,GAAEC,GAAE,GAAGC,GAAEN,GAAE,CAAC,EAAEO,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAE,IAAQH,KAAJ,IAAQE,GAAE,IAAIC,GAAE,GAAGT,GAAE,GAAGC,GAAE,GAAG,CAAC,EAAE,MAAME,GAAE,EAAEA,IAAGF,GAAEE,KAAIC,GAAEE,GAAEA,GAAEN,GAAE,GAAGG,GAAE,GAAG,CAAC,EAAE,EAAEI,GAAEC,IAAGJ,KAAIE,KAAIC,GAAEE,GAAEV,GAAE,QAAQ,EAAEK,EAAC,GAAGG,GAAMH,KAAJ,GAAOA,KAAIC,IAAGN,GAAE,QAAQ,EAAEK,EAAC,IAAIL,GAAE,QAAQ,EAAE,CAAC,KAAKQ,IAAG,GAAGR,GAAE,QAAQ,EAAE,CAAC,IAAIA,GAAE,QAAQ,EAAE,CAAC,IAAIM,GAAED,GAAEK,IAAGF,GAAE,KAAKD,IAAGE,GAAE,IAAI,GAAGJ,KAAIE,IAAGE,GAAE,EAAE,IAAIA,GAAE,EAAE,GAAG,CAAC,SAAS,EAAET,GAAEC,GAAEC,GAAE,CAAC,IAAIE,GAAEC,GAAEC,GAAE,GAAGC,GAAEN,GAAE,CAAC,EAAEO,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAE,IAAQH,KAAJ,IAAQE,GAAE,IAAIC,GAAE,GAAGN,GAAE,EAAEA,IAAGF,GAAEE,KAAI,GAAGC,GAAEE,GAAEA,GAAEN,GAAE,GAAGG,GAAE,GAAG,CAAC,EAAE,EAAE,EAAEI,GAAEC,IAAGJ,KAAIE,IAAG,CAAC,GAAGC,GAAEE,GAAE,KAAK,EAAEV,GAAEK,GAAEL,GAAE,OAAO,EAAK,EAAEQ,IAAL,GAAQ,MAAUH,KAAJ,GAAOA,KAAIC,KAAI,EAAEN,GAAEK,GAAEL,GAAE,OAAO,EAAEQ,MAAK,EAAER,GAAE,EAAEA,GAAE,OAAO,EAAE,EAAEA,GAAEQ,GAAE,EAAE,CAAC,GAAGA,IAAG,IAAI,EAAER,GAAE,EAAEA,GAAE,OAAO,EAAE,EAAEA,GAAEQ,GAAE,EAAE,CAAC,IAAI,EAAER,GAAE,EAAEA,GAAE,OAAO,EAAE,EAAEA,GAAEQ,GAAE,GAAG,CAAC,GAAGF,GAAED,GAAEK,IAAGF,GAAE,KAAKD,IAAGE,GAAE,IAAI,GAAGJ,KAAIE,IAAGE,GAAE,EAAE,IAAIA,GAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,SAAS,EAAET,GAAEC,GAAEC,GAAEE,GAAE,CAAC,EAAEJ,IAAG,GAAG,IAAII,GAAE,EAAE,GAAG,CAAC,GAAE,SAASJ,GAAEC,GAAEC,GAAEE,GAAE,CAAC,EAAEJ,EAAC,EAAEI,KAAI,EAAEJ,GAAEE,EAAC,EAAE,EAAEF,GAAE,CAACE,EAAC,GAAG,EAAE,SAASF,GAAE,YAAYA,GAAE,OAAOC,GAAEC,GAAEF,GAAE,OAAO,EAAEA,GAAE,SAASE,EAAC,GAAEF,GAAEC,GAAEC,GAAE,EAAE,CAAC,CAAC,EAAE,SAAS,SAASF,GAAE,CAAC,KAAI,UAAU,CAAC,IAAIA,GAAEC,GAAEC,GAAEE,GAAEC,GAAEC,GAAE,IAAI,MAAM,EAAE,CAAC,EAAE,IAAIF,GAAEF,GAAE,EAAEE,GAAE,EAAE,EAAEA,KAAI,IAAI,EAAEA,EAAC,EAAEF,GAAEF,GAAE,EAAEA,GAAE,GAAG,EAAEI,EAAC,EAAEJ,KAAI,EAAEE,IAAG,EAAEE,GAAE,IAAI,EAAEF,GAAE,CAAC,EAAEE,GAAEA,GAAEC,GAAE,EAAED,GAAE,GAAGA,KAAI,IAAI,EAAEA,EAAC,EAAEC,GAAEL,GAAE,EAAEA,GAAE,GAAG,EAAEI,EAAC,EAAEJ,KAAI,EAAEK,IAAG,EAAED,GAAE,IAAIC,KAAI,EAAED,GAAE,EAAEA,KAAI,IAAI,EAAEA,EAAC,EAAEC,IAAG,EAAEL,GAAE,EAAEA,GAAE,GAAG,EAAEI,EAAC,EAAE,EAAEJ,KAAI,EAAE,IAAIK,IAAG,EAAED,GAAE,IAAIH,GAAE,EAAEA,IAAG,EAAEA,KAAIK,GAAEL,EAAC,EAAE,EAAE,IAAID,GAAE,EAAEA,IAAG,KAAK,EAAE,EAAEA,GAAE,CAAC,EAAE,EAAEA,KAAIM,GAAE,CAAC,IAAI,KAAKN,IAAG,KAAK,EAAE,EAAEA,GAAE,CAAC,EAAE,EAAEA,KAAIM,GAAE,CAAC,IAAI,KAAKN,IAAG,KAAK,EAAE,EAAEA,GAAE,CAAC,EAAE,EAAEA,KAAIM,GAAE,CAAC,IAAI,KAAKN,IAAG,KAAK,EAAE,EAAEA,GAAE,CAAC,EAAE,EAAEA,KAAIM,GAAE,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAEA,EAAC,EAAEN,GAAE,EAAEA,GAAE,EAAEA,KAAI,EAAE,EAAEA,GAAE,CAAC,EAAE,EAAE,EAAE,EAAEA,EAAC,EAAE,EAAEA,GAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAE,EAAE,EAAE,IAAIA,GAAE,OAAO,IAAI,EAAEA,GAAE,UAAU,CAAC,EAAEA,GAAE,OAAO,IAAI,EAAEA,GAAE,UAAU,CAAC,EAAEA,GAAE,QAAQ,IAAI,EAAEA,GAAE,QAAQ,CAAC,EAAEA,GAAE,OAAO,EAAEA,GAAE,SAAS,EAAE,EAAEA,EAAC,CAAC,EAAE,EAAE,iBAAiB,EAAE,EAAE,gBAAgB,SAASA,GAAEC,GAAEC,GAAEE,GAAE,CAAC,IAAIC,GAAEC,GAAEC,GAAE,EAAE,EAAEP,GAAE,OAAWA,GAAE,KAAK,YAAX,IAAuBA,GAAE,KAAK,WAAU,SAASA,GAAE,CAAC,IAAIC,GAAEC,GAAE,WAAW,IAAID,GAAE,EAAEA,IAAG,GAAGA,KAAIC,MAAK,EAAE,GAAG,EAAEA,IAAOF,GAAE,UAAU,EAAEC,EAAC,IAAnB,EAAqB,OAAO,EAAE,GAAOD,GAAE,UAAU,EAAE,IAAlB,GAAyBA,GAAE,UAAU,EAAE,IAAlB,GAAyBA,GAAE,UAAU,EAAE,IAAlB,EAAoB,OAAO,EAAE,IAAIC,GAAE,GAAGA,GAAE,EAAEA,KAAI,GAAOD,GAAE,UAAU,EAAEC,EAAC,IAAnB,EAAqB,OAAO,EAAE,OAAO,CAAC,GAAED,EAAC,GAAG,EAAEA,GAAEA,GAAE,MAAM,EAAE,EAAEA,GAAEA,GAAE,MAAM,EAAEO,IAAE,SAASP,GAAE,CAAC,IAAIC,GAAE,IAAI,EAAED,GAAEA,GAAE,UAAUA,GAAE,OAAO,QAAQ,EAAE,EAAEA,GAAEA,GAAE,UAAUA,GAAE,OAAO,QAAQ,EAAE,EAAEA,GAAEA,GAAE,OAAO,EAAEC,GAAE,EAAE,EAAE,GAAGA,IAAOD,GAAE,QAAQ,EAAE,EAAEC,EAAC,EAAE,CAAC,IAAtB,EAAwBA,KAAI,CAAC,OAAOD,GAAE,SAAS,GAAGC,GAAE,GAAG,EAAE,EAAE,EAAEA,EAAC,GAAED,EAAC,EAAEK,GAAEL,GAAE,QAAQ,EAAE,IAAI,GAAGM,GAAEN,GAAE,WAAW,EAAE,IAAI,IAAIK,KAAIA,GAAEC,KAAID,GAAEC,GAAEJ,GAAE,EAAEA,GAAE,GAAGG,IAAQJ,KAAL,GAAO,EAAED,GAAEC,GAAEC,GAAEE,EAAC,EAAMJ,GAAE,WAAN,GAAgBM,KAAID,IAAG,EAAEL,GAAE,GAAGI,GAAE,EAAE,GAAG,CAAC,EAAE,EAAEJ,GAAE,EAAE,CAAC,IAAI,EAAEA,GAAE,GAAGI,GAAE,EAAE,GAAG,CAAC,GAAE,SAASJ,GAAEC,GAAEC,GAAEE,GAAE,CAAC,IAAIC,GAAE,IAAI,EAAEL,GAAEC,GAAE,IAAI,CAAC,EAAE,EAAED,GAAEE,GAAE,EAAE,CAAC,EAAE,EAAEF,GAAEI,GAAE,EAAE,CAAC,EAAEC,GAAE,EAAEA,GAAED,GAAEC,KAAI,EAAEL,GAAEA,GAAE,QAAQ,EAAE,EAAEK,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAEL,GAAEA,GAAE,UAAUC,GAAE,CAAC,EAAE,EAAED,GAAEA,GAAE,UAAUE,GAAE,CAAC,CAAC,GAAEF,GAAEA,GAAE,OAAO,SAAS,EAAEA,GAAE,OAAO,SAAS,EAAEO,GAAE,CAAC,EAAE,EAAEP,GAAEA,GAAE,UAAUA,GAAE,SAAS,GAAG,EAAEA,EAAC,EAAEI,IAAG,EAAEJ,EAAC,CAAC,EAAE,EAAE,UAAU,SAASA,GAAEC,GAAEC,GAAE,CAAC,OAAOF,GAAE,YAAYA,GAAE,MAAM,EAAEA,GAAE,QAAQ,EAAEC,KAAI,EAAE,IAAID,GAAE,YAAYA,GAAE,MAAM,EAAEA,GAAE,SAAS,CAAC,EAAE,IAAIC,GAAED,GAAE,YAAYA,GAAE,MAAMA,GAAE,QAAQ,EAAE,IAAIE,GAAEF,GAAE,WAAeC,KAAJ,EAAMD,GAAE,UAAU,EAAEE,EAAC,KAAKF,GAAE,UAAUC,KAAID,GAAE,UAAU,GAAG,EAAEE,EAAC,EAAE,EAAE,EAAE,IAAIF,GAAE,UAAU,EAAE,EAAEC,EAAC,CAAC,KAAKD,GAAE,WAAWA,GAAE,YAAY,CAAC,EAAE,EAAE,UAAU,SAASA,GAAE,CAAC,EAAEA,GAAE,EAAE,CAAC,EAAE,EAAEA,GAAE,EAAE,CAAC,GAAE,SAASA,GAAE,CAAMA,GAAE,WAAP,IAAiB,EAAEA,GAAEA,GAAE,MAAM,EAAEA,GAAE,OAAO,EAAEA,GAAE,SAAS,GAAG,GAAGA,GAAE,WAAWA,GAAE,YAAYA,GAAE,SAAS,EAAE,IAAIA,GAAE,OAAOA,GAAE,SAAS,EAAEA,GAAE,UAAU,EAAE,GAAEA,EAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,QAAQ,UAAU,CAAC,KAAK,MAAM,KAAK,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,KAAK,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,KAAK,UAAU,EAAE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,SAASA,GAAE,EAAE,SAASE,GAAE,EAAE,CAAC,aAAa,GAAG,CAACA,GAAE,aAAa,CAAC,IAAI,EAAE,EAAED,GAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAEC,GAAE,SAASF,GAAE,OAAO,gBAAgB,OAAO,eAAeE,EAAC,EAAEF,GAAEA,IAAGA,GAAE,WAAWA,GAAEE,GAAE,EAAuB,CAAC,EAAE,SAAS,KAAKA,GAAE,OAAO,IAA/C,mBAAiD,SAASF,GAAE,CAAC,QAAQ,SAAS,UAAU,CAAC,EAAEA,EAAC,CAAC,CAAC,CAAC,GAAE,UAAU,CAAC,GAAGE,GAAE,aAAa,CAACA,GAAE,cAAc,CAAC,IAAIF,GAAE,GAAGC,GAAEC,GAAE,UAAU,OAAOA,GAAE,UAAU,UAAU,CAACF,GAAE,EAAE,EAAEE,GAAE,YAAY,GAAG,GAAG,EAAEA,GAAE,UAAUD,GAAED,EAAC,CAAC,GAAE,GAAG,EAAE,gBAAgB,KAAK,OAAO,EAAE,IAAIE,GAAE,iBAAiBA,GAAE,iBAAiB,UAAU,EAAE,EAAE,EAAEA,GAAE,YAAY,YAAY,CAAC,EAAE,SAASF,GAAE,CAACE,GAAE,YAAY,EAAEF,GAAE,GAAG,CAAC,GAAGE,GAAE,iBAAiBD,GAAE,IAAI,gBAAgB,MAAM,UAAU,SAASD,GAAE,CAAC,EAAEA,GAAE,IAAI,CAAC,EAAE,SAASA,GAAE,CAACC,GAAE,MAAM,YAAYD,EAAC,CAAC,GAAG,GAAG,uBAAuB,EAAE,cAAc,QAAQ,GAAG,EAAE,EAAE,gBAAgB,SAASA,GAAE,CAAC,IAAIC,GAAE,EAAE,cAAc,QAAQ,EAAEA,GAAE,mBAAmB,UAAU,CAAC,EAAED,EAAC,EAAEC,GAAE,mBAAmB,KAAK,EAAE,YAAYA,EAAC,EAAEA,GAAE,IAAI,EAAE,EAAE,YAAYA,EAAC,CAAC,GAAG,SAASD,GAAE,CAAC,WAAW,EAAE,EAAEA,EAAC,CAAC,EAAEA,GAAE,aAAa,SAASA,GAAE,CAAa,OAAOA,IAAnB,aAAuBA,GAAE,IAAI,SAAS,GAAGA,EAAC,GAAG,QAAQC,GAAE,IAAI,MAAM,UAAU,OAAO,CAAC,EAAEC,GAAE,EAAEA,GAAED,GAAE,OAAOC,KAAID,GAAEC,EAAC,EAAE,UAAUA,GAAE,CAAC,EAAE,IAAIE,GAAE,CAAC,SAASJ,GAAE,KAAKC,EAAC,EAAE,OAAO,EAAE,CAAC,EAAEG,GAAE,EAAE,CAAC,EAAE,GAAG,EAAEJ,GAAE,eAAe,CAAC,CAAC,SAAS,EAAEA,GAAE,CAAC,OAAO,EAAEA,EAAC,CAAC,CAAC,SAAS,EAAEA,GAAE,CAAC,GAAG,EAAE,WAAW,EAAE,EAAEA,EAAC,MAAM,CAAC,IAAIC,GAAE,EAAED,EAAC,EAAE,GAAGC,GAAE,CAAC,EAAE,GAAG,GAAG,EAAE,SAASD,GAAE,CAAC,IAAIC,GAAED,GAAE,SAASE,GAAEF,GAAE,KAAK,OAAOE,GAAE,OAAO,CAAC,IAAK,GAAED,GAAE,EAAE,MAAM,IAAK,GAAEA,GAAEC,GAAE,CAAC,CAAC,EAAE,MAAM,IAAK,GAAED,GAAEC,GAAE,CAAC,EAAEA,GAAE,CAAC,CAAC,EAAE,MAAM,IAAK,GAAED,GAAEC,GAAE,CAAC,EAAEA,GAAE,CAAC,EAAEA,GAAE,CAAC,CAAC,EAAE,MAAM,QAAQD,GAAE,MAAM,EAAEC,EAAC,CAAC,CAAC,GAAED,EAAC,CAAC,QAAC,CAAQ,EAAED,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAEA,GAAE,CAACA,GAAE,SAASE,IAAa,OAAOF,GAAE,MAAnB,UAA6BA,GAAE,KAAK,QAAQ,CAAC,IAApB,GAAuB,EAAE,CAACA,GAAE,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAe,OAAO,KAApB,IAAkCA,KAAT,OAAW,KAAKA,GAAE,IAAI,CAAC,GAAG,KAAK,KAAkB,OAAO,OAApB,IAA2B,OAAoB,OAAO,KAApB,IAAyB,KAAkB,OAAO,OAApB,IAA2B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KCZnn+F,+EAoBA,SAAS,UAAU,QAAS,WAAY,EAAG,UAAW,CAClD,SAAS,MAAM,MAAO,CAAE,OAAO,iBAAiB,EAAI,MAAQ,IAAI,EAAE,SAAU,QAAS,CAAE,QAAQ,KAAK,CAAG,CAAC,CAAG,CAC3G,OAAO,IAAK,IAAM,EAAI,UAAU,SAAU,QAAS,OAAQ,CACvD,SAAS,UAAU,MAAO,CAAE,GAAI,CAAE,KAAK,UAAU,KAAK,KAAK,CAAC,CAAG,OAAS,EAAG,CAAE,OAAO,CAAC,CAAG,CAAE,CAC1F,SAAS,SAAS,MAAO,CAAE,GAAI,CAAE,KAAK,UAAU,MAAS,KAAK,CAAC,CAAG,OAAS,EAAG,CAAE,OAAO,CAAC,CAAG,CAAE,CAC7F,SAAS,KAAK,OAAQ,CAAE,OAAO,KAAO,QAAQ,OAAO,KAAK,EAAI,MAAM,OAAO,KAAK,EAAE,KAAK,UAAW,QAAQ,CAAG,CAC7G,MAAM,UAAY,UAAU,MAAM,QAAS,YAAc,CAAC,CAAC,GAAG,KAAK,CAAC,CACxE,CAAC,CACL,CA0lBA,SAAS,oBAAoB,KAAM,MAAO,OAAQ,CAM9C,OAJI,OAAO,MAAS,UAAY,CAAC,MAAM,OAAO,IAAI,CAAC,IAC/C,KAAO,OAAO,IAAI,GAGlB,OAAO,MAAS,UAAY,KAAO,IAC5B,SAAS,IAAI,EAGpB,OAAO,MAAS,UAAY,MAAQ,IAC7B,KAEP,OAAO,MAAS,UAAY,KAAK,SAAS,GAAG,EAElC,KAAK,MADZ,OAAS,QAAU,IACA,WAAW,IAAI,EAAI,IAAO,OAAO,MACpD,OAAS,QAAU,IACA,WAAW,IAAI,EAAI,IAAO,OAAO,OAErC,WAAW,IAAI,EAAI,IAAO,OAAO,KAJS,EAO1D,CACX,CAOA,SAAS,QAAQ,WAAY,CACzB,OAAO,WAAW,QAAQ,QAAS,SAAU,EAAG,CAC5C,IAAM,EAAK,KAAK,OAAO,EAAI,GAAM,EAEjC,OADU,IAAM,IAAM,EAAK,EAAI,EAAO,GAC7B,SAAS,EAAE,CACxB,CAAC,CACL,CAMA,SAAS,kBAAkB,IAAK,CAE5B,OAAI,OAAO,IAAQ,KAAe,KAAO,KAC9B,GACJ,IAAI,SAAS,EAAE,QAAQ,KAAM,OAAO,EAAE,QAAQ,KAAM,MAAM,EAAE,QAAQ,KAAM,MAAM,EAAE,QAAQ,KAAM,QAAQ,EAAE,QAAQ,KAAM,QAAQ,CAC3I,CAMA,SAAS,SAAS,OAAQ,CAGtB,OAAI,OAAO,QAAW,UAAY,OAAS,IAChC,QACP,OAAO,QAAW,WAClB,OAAS,OAAO,OAAO,QAAQ,QAAS,EAAE,CAAC,GACxC,KAAK,MAAM,IAAM,MAAM,EAClC,CAMA,SAAS,SAAS,GAAI,CAClB,IAAM,OAAS,OAAO,EAAE,GAAK,EAC7B,OAAO,MAAM,MAAM,EAAI,EAAI,KAAK,MAAM,OAAS,KAAK,CACxD,CAMA,SAAS,uBAAuB,EAAG,CAC/B,SAAI,GAAK,EACF,KAAK,OAAO,EAAI,IAAM,EAAI,IAAM,GAAK,GAAK,CACrD,CAMA,SAAS,eAAe,EAAG,CACvB,IAAM,IAAM,EAAE,SAAS,EAAE,EACzB,OAAO,IAAI,SAAW,EAAI,IAAM,IAAM,GAC1C,CAQA,SAAS,SAAS,EAAG,EAAG,EAAG,CACvB,OAAQ,eAAe,CAAC,EAAI,eAAe,CAAC,EAAI,eAAe,CAAC,GAAG,YAAY,CACnF,CAcA,SAAS,mBAAmB,SAAU,cAAe,CACjD,IAAI,UAAY,UAAY,IAAI,QAAQ,IAAK,EAAE,EAC3C,CAAC,gBAAgB,KAAK,QAAQ,GAC9B,WAAa,YAAY,aACzB,WAAa,YAAY,aACzB,WAAa,YAAY,OACzB,WAAa,YAAY,OACzB,WAAa,YAAY,SACzB,WAAa,YAAY,SACzB,WAAa,YAAY,SACzB,WAAa,YAAY,SACzB,WAAa,YAAY,SACzB,WAAa,YAAY,UACzB,QAAQ,KAAK,IAAI,QAAQ,8CAA8C,cAAc,wEAAwE,EAC7J,SAAW,gBAEf,IAAM,QAAU,gBAAgB,KAAK,QAAQ,EAAI,UAAY,YACvD,UAAY,SAAW,gBAAgB,KAAK,QAAQ,EAAI,SAAS,YAAY,EAAI,UAAY,IACnG,OAAO,cAAgB,MAAM,OAAO,IAAI,SAAS,IAAI,aAAa,OAAO,OAAO,IAAM,MAAM,OAAO,IAAI,SAAS,IACpH,CAQA,SAAS,kBAAkB,QAAS,SAAU,CAC1C,IAAI,OAAS,GACP,KAAO,OAAO,OAAO,OAAO,OAAO,CAAC,EAAG,QAAQ,EAAG,OAAO,EACzD,KAAO,KAAK,MAAM,KAAK,KAAO,KAAK,EACnC,MAAQ,KAAK,MACb,QAAU,KAAK,MAAM,KAAK,QAAU,GAAM,EAChD,eAAU,gBAAgB,IAAI,KAC9B,QAAU,mBAAmB,MAAO,iBAAiB,OAAO,KAAK,EACjE,QAAU,YACH,MACX,CAMA,SAAS,qBAAqB,MAAO,CACjC,IAAI,SAAW,QACX,SAAW,GACX,iBAAmB,GACnB,QAAU,GACd,OAAI,QACI,OAAO,OAAU,SACjB,SAAW,OAEP,MAAM,OACN,SAAW,MAAM,MACjB,MAAM,QACN,SAAW,MAAM,OACjB,MAAM,QACN,kBAAoB,iBAAiB,KAAK,OAAO,IAAM,MAAM,OAAS,GAAI,CAAC,OAC3E,MAAM,eACN,kBAAoB,iBAAiB,KAAK,OAAO,IAAM,MAAM,cAAgB,GAAI,CAAC,QAElF,WACC,QACD,SAAW,gBAAgB,mBAAmB,SAAU,gBAAgB,CAAC,iBAGzE,SAAW,IAIhB,OACX,CAMA,SAAS,YAAY,OAAQ,CACzB,OAAO,OAAO,MAAM,OAAS,OAAO,WAAW,OAAS,OAAO,WAAW,OAAS,CACvF,CAKA,SAAS,qBAAqB,YAAa,CACvC,GAAI,GAAC,aAAe,OAAO,aAAgB,UAK3C,OAAI,YAAY,OAAS,SAAW,YAAY,OAAS,SAAW,YAAY,OAAS,SACrF,QAAQ,KAAK,8DAA8D,EAC3E,YAAY,KAAO,SAGnB,YAAY,SAER,MAAM,OAAO,YAAY,KAAK,CAAC,GAAK,YAAY,MAAQ,GAAK,YAAY,MAAQ,OACjF,QAAQ,KAAK,yCAAyC,EACtD,YAAY,MAAQ,KAGxB,YAAY,MAAQ,KAAK,MAAM,OAAO,YAAY,KAAK,CAAC,GAGxD,YAAY,WAER,MAAM,OAAO,YAAY,OAAO,CAAC,GAAK,YAAY,QAAU,GAAK,YAAY,QAAU,KACvF,QAAQ,KAAK,yCAAyC,EACtD,YAAY,QAAU,KAG1B,YAAY,QAAU,OAAO,YAAY,OAAO,GAGhD,YAAY,OAER,YAAY,MAAM,WAAW,GAAG,IAChC,QAAQ,KAAK,8EAA8E,EAC3F,YAAY,MAAQ,YAAY,MAAM,QAAQ,IAAK,EAAE,GAGtD,WACX,CAWA,SAAS,iBAAiB,KAAM,SAAU,QAAS,CAC/C,IAAI,GAAI,GAKR,IAAM,KAAO,KAAS,MAAK,KAAK,WAAa,MAAQ,KAAO,SAAkB,GAAG,mBAAsB,KAAK,QAAQ,mBAAqB,GACnI,IAAM,KAAK,MAAO,SAAW,MAAS,GAAG,IAAQ,MAAK,KAAK,WAAa,MAAQ,KAAO,SAAkB,GAAG,SAAY,KAAK,QAAQ,SAAW,eAAiB,MACjK,YAAc,CAAC,EACjB,WAAa,CAAC,EACZ,YAAc,CAAC,EACf,YAAc,CAAC,EA0BjB,KAAK,MAAQ,KAAK,KAAK,SAAS,EAAE,KAAK,EAAE,SAAW,EAEpD,WAAW,KAAK,CAAE,MAAO,mBAAmB,UAAW,KAAM,GAAI,CAAC,EAE7D,OAAO,KAAK,MAAS,UAAY,OAAO,KAAK,MAAS,SAC3D,WAAW,KAAK,CAAE,MAAO,mBAAmB,UAAW,MAAO,KAAK,MAAQ,IAAI,SAAS,EAAE,KAAK,CAAE,CAAC,EAE7F,MAAM,QAAQ,KAAK,IAAI,IAC5B,WAAa,KAAK,MAStB,IAAI,QAAU,CAAC,EACf,kBAAW,QAAQgB,OAAQ,CACvB,IAAIC,IAEA,OAAOD,MAAK,MAAS,WACjBA,MAAK,KAAK,MAAM;AAAA,CAAI,EAAE,OAAS,EAC/BA,MAAK,KAAK,MAAM;AAAA,CAAI,EAAE,QAAQ,UAAY,CACtC,QAAQ,KAAK,CACT,MAAO,mBAAmB,UAC1B,KAAM,SACN,QAAS,OAAO,OAAO,OAAO,OAAO,CAAC,EAAGA,MAAK,OAAO,EAAG,CAAE,UAAW,EAAK,CAAC,CAC/E,CAAC,CACL,CAAC,EAGD,QAAQ,KAAK,CACT,MAAO,mBAAmB,UAC1B,KAAMA,MAAK,KAAK,KAAK,EACrB,QAASA,MAAK,OAClB,CAAC,EAEA,GAAAC,IAAKD,MAAK,WAAa,MAAQC,MAAO,SAAkBA,IAAG,YAC5D,YAAY,KAAK,OAAO,EACxB,QAAU,CAAC,IAIf,QAAQ,OAAS,IACjB,YAAY,KAAK,OAAO,EACxB,QAAU,CAAC,EAEnB,CAAC,EAED,YAAY,QAAQ,MAAQ,CACxB,KAAK,QAAQD,OAAQ,CACjB,IAAM,UAAY,CAAC,EAEb,UADc,OAAOA,MAAK,IAAI,EACN,MAAM,GAAG,EACvC,UAAU,QAAQ,CAAC,KAAM,MAAQ,CAC7B,IAAM,UAAY,OAAO,OAAO,CAAC,EAAGA,MAAK,OAAO,EAEU,WAAU,YAChE,UAAU,UAAY,IAAM,IAAM,UAAU,QAChD,UAAU,KAAK,CAAE,MAAO,mBAAmB,UAAW,KAAM,MAAQ,IAAM,EAAI,UAAU,OAAS,IAAM,IAAK,QAAS,SAAU,CAAC,CACpI,CAAC,EACD,YAAY,KAAK,SAAS,CAC9B,CAAC,CACL,CAAC,EAED,YAAY,QAAQ,MAAQ,CACxB,IAAI,UAAY,CAAC,EACb,YAAc,GAClB,KAAK,QAAQ,MAAQ,CAEb,YAAY,OAAS,KAAK,KAAK,OAAS,MAExC,YAAY,KAAK,SAAS,EAC1B,UAAY,CAAC,EACb,YAAc,IAGlB,UAAU,KAAK,IAAI,EAEnB,aAAe,KAAK,KAAK,SAAS,CACtC,CAAC,EAEG,UAAU,OAAS,GACnB,YAAY,KAAK,SAAS,CAClC,CAAC,EAEM,WACX,CASA,SAAS,sBAAsB,UAAY,CAAC,EAAG,WAAa,CAAC,EAAG,WAAY,YAAa,CACrF,IAAI,eAAiB,oBACjB,aAAe,IAAM,EACrB,aAAe,IAAM,EACrB,YAAc,EACd,QAAU,EACR,eAAiB,CAAC,EAClB,WAAa,oBAAoB,WAAW,EAAG,IAAK,UAAU,EAC9D,WAAa,oBAAoB,WAAW,EAAG,IAAK,UAAU,EAC9D,WAAa,oBAAoB,WAAW,EAAG,IAAK,UAAU,EAC9D,WAAa,oBAAoB,WAAW,EAAG,IAAK,UAAU,EAChE,WAAa,WACjB,SAAS,eAAgB,CACrB,IAAI,UAAY,EACZ,eAAe,SAAW,IAC1B,UAAY,YAAc,SAAS,eAAe,CAAC,CAAC,GACpD,eAAe,OAAS,IACxB,UAAY,SAAS,WAAW,qBAAuB,WAAW,gBAAkB,eAAe,CAAC,CAAC,GACzG,cAAgB,YAAc,WAAW,QAAU,UAAY,SAAS,eAAe,CAAC,CAAC,EAGrF,eAAe,OAAS,IAEpB,OAAO,WAAW,qBAAwB,SAC1C,cAAgB,YAAc,WAAW,QAAU,SAAS,WAAW,oBAAsB,eAAe,CAAC,CAAC,EAEzG,OAAO,WAAW,gBAAmB,SAE1C,cAAgB,YAAc,WAAW,QAAU,SAAS,WAAW,eAAiB,eAAe,CAAC,CAAC,EAEpG,aACL,cAAgB,YAAc,WAAW,QAAU,UAAU,WAAa,IAAM,eAAe,CAAC,EAAI,WAAa,IAAM,eAAe,CAAC,GAAK,eAAe,CAAC,CAAC,EAEzJ,aAAe,aACf,aAAe,aAG/B,CAsEA,GArEI,WAAW,UACX,QAAQ,IAAI,kBAAkB,EAC9B,QAAQ,IAAI,2EAA2E,EACvF,QAAQ,IAAI,0DAA0D,WAAW,MAAQ,KAAK,QAAQ,CAAC,CAAC,EAAE,EAC1G,QAAQ,IAAI,0DAA0D,WAAW,OAAS,KAAK,QAAQ,CAAC,CAAC,EAAE,EAC3G,QAAQ,IAAI,yDAAyD,OAAO,WAAW,GAAM,UAAY,WAAW,EAAI,KAAK,QAAQ,CAAC,EAAI,WAAW,CAAC,EAAE,EACxJ,QAAQ,IAAI,yDAAyD,OAAO,WAAW,GAAM,UAAY,WAAW,EAAI,KAAK,QAAQ,CAAC,EAAI,WAAW,CAAC,EAAE,EACxJ,QAAQ,IAAI,yDAAyD,OAAO,WAAW,GAAM,UAAY,WAAW,EAAI,KAAK,QAAQ,CAAC,EAAI,WAAW,CAAC,EAAE,EACxJ,QAAQ,IAAI,yDAAyD,OAAO,WAAW,GAAM,UAAY,WAAW,EAAI,KAAK,QAAQ,CAAC,EAAI,WAAW,CAAC,EAAE,EACxJ,QAAQ,IAAI,yDAAyD,WAAW,YAAc,OAAO,WAAW,WAAW,EAAI,EAAE,EAAE,EACnI,QAAQ,IAAI,yDAAyD,OAAO,WAAW,MAAM,CAAC,EAAE,EAChG,QAAQ,IAAI,yDAAyD,OAAO,WAAW,IAAI,CAAC,EAAE,EAC9F,QAAQ,IAAI,yDAAyD,WAAW,mBAAmB,EAAE,EACrG,QAAQ,IAAI,yDAAyD,WAAW,kBAAkB,EAAE,EACpG,QAAQ,IAAI,2EAA2E,EACvF,QAAQ,IAAI,yDAAyD,WAAa,GAAG,EAAE,EACvF,QAAQ,IAAI,yDAAyD,WAAa,GAAG,EAAE,EACvF,QAAQ,IAAI,yDAAyD,WAAa,GAAG,EAAE,EACvF,QAAQ,IAAI,yDAAyD,WAAa,GAAG,EAAE,EACvF,QAAQ,IAAI,yDAAyD,WAAa,GAAG,EAAE,GAKnF,CAAC,WAAW,aAAe,WAAW,cAAgB,IACtD,WAAW,YAAc,oBAAoB,CAAC,GAC9C,aAAe,OAAO,YAAY,QAAY,IAC1C,MAAM,QAAQ,YAAY,OAAO,EACjC,eAAiB,YAAY,QACvB,MAAM,OAAO,YAAY,OAAO,CAAC,IACvC,eAAiB,CAAC,OAAO,YAAY,OAAO,EAAG,OAAO,YAAY,OAAO,EAAG,OAAO,YAAY,OAAO,EAAG,OAAO,YAAY,OAAO,CAAC,IAGnI,WAAW,aAAe,WAAW,cAAgB,KACtD,MAAM,QAAQ,WAAW,WAAW,EACpC,eAAiB,WAAW,YACtB,MAAM,WAAW,WAAW,IAClC,eAAiB,CAAC,WAAW,YAAa,WAAW,YAAa,WAAW,YAAa,WAAW,WAAW,IAEpH,WAAW,SACX,QAAQ,IAAI,0DAA0D,eAAe,KAAK,IAAI,CAAC,GAAG,GAMrF,UAAU,CAAC,GAAK,CAAC,GACzB,QAAQ,MAAQ,CAChB,OACD,KAAO,CAAE,MAAO,mBAAmB,SAAU,GACjD,IAAM,SAAW,KAAK,SAAW,KACjC,SAAW,OAA4D,UAAS,QAAW,SAAS,QAAU,CAAC,CACnH,CAAC,EACG,WAAW,SACX,QAAQ,IAAI,yDAAyD,OAAO,EAAE,EAGlF,CAAC,YAAc,WAAW,OAC1B,WAAa,MAAM,QAAQ,WAAW,IAAI,EAAI,WAAW,KAAK,OAAO,CAAC,EAAG,IAAM,EAAI,CAAC,EAAI,IAAM,WAAW,KAAO,SAAW,EACvH,WAAW,SACX,QAAQ,IAAI,yDAAyD,WAAa,GAAG,EAAE,GAI3F,aAAe,YAAc,UAAU,WAAa,WAAa,IAAM,eAAe,CAAC,GAAK,eAAe,CAAC,CAAC,EACzG,WAAW,SACX,QAAQ,IAAI,0DAA0D,aAAe,KAAK,QAAQ,CAAC,CAAC,EAAE,EAG1G,CAAC,WAAW,MAAQ,CAAC,MAAM,QAAQ,WAAW,IAAI,EAClD,GAAI,WAAW,MAAQ,CAAC,MAAM,OAAO,WAAW,IAAI,CAAC,EAAG,CACpD,IAAM,QAAU,CAAC,GACA,UAAU,CAAC,GAAK,CAAC,GACzB,QAAQ,IAAM,QAAQ,KAAK,WAAW,IAAI,CAAC,EACpD,WAAW,KAAO,CAAC,EACnB,QAAQ,QAAQ,KAAO,CACf,MAAM,QAAQ,WAAW,IAAI,GAC7B,WAAW,KAAK,KAAK,GAAG,CAChC,CAAC,CACL,KACK,CAED,WAAW,KAAO,CAAC,EACnB,QAAS,KAAO,EAAG,KAAO,QAAS,OAC/B,WAAW,KAAK,KAAK,aAAe,IAAM,OAAO,CAEzD,CAGJ,IAAI,iBAAmB,CAAE,KAAM,CAAC,CAAE,EAClC,iBAAU,QAAQ,CAAC,IAAK,OAAS,CAE7B,IAAM,aAAe,CAAC,EAClB,iBAAmB,EACnB,iBAAmB,EAEnB,aAAe,CAAC,EACpB,IAAI,QAAQ,MAAQ,CAChB,IAAI,GAAI,GAAI,GAAI,GAChB,aAAa,KAAK,CACd,MAAO,mBAAmB,UAC1B,KAAM,CAAC,EACP,QAAS,KAAK,OAClB,CAAC,EAKG,KAAK,QAAQ,QAAU,KAAK,QAAQ,OAAO,CAAC,GAAK,GAC3C,MAAK,KAAK,WAAa,MAAQ,KAAO,SAAkB,GAAG,QAAW,KAAK,QAAQ,OAAO,CAAC,GAAK,SAAS,KAAK,QAAQ,OAAO,CAAC,CAAC,EAAI,iBACrI,iBAAmB,SAAS,KAAK,QAAQ,OAAO,CAAC,CAAC,EACY,YAAW,QAAW,WAAW,OAAO,CAAC,GAAK,SAAS,WAAW,OAAO,CAAC,CAAC,EAAI,mBAC7I,iBAAmB,SAAS,WAAW,OAAO,CAAC,CAAC,GAC9C,MAAK,KAAK,WAAa,MAAQ,KAAO,SAAkB,GAAG,QAAW,KAAK,QAAQ,OAAO,CAAC,GAAK,SAAS,KAAK,QAAQ,OAAO,CAAC,CAAC,EAAI,iBACrI,iBAAmB,SAAS,KAAK,QAAQ,OAAO,CAAC,CAAC,EACY,YAAW,QAAW,WAAW,OAAO,CAAC,GAAK,SAAS,WAAW,OAAO,CAAC,CAAC,EAAI,mBAC7I,iBAAmB,SAAS,WAAW,OAAO,CAAC,CAAC,KAG9C,MAAK,KAAK,WAAa,MAAQ,KAAO,SAAkB,GAAG,QAAW,KAAK,QAAQ,OAAO,CAAC,GAAK,SAAS,KAAK,QAAQ,OAAO,CAAC,CAAC,EAAI,iBACrI,iBAAmB,SAAS,KAAK,QAAQ,OAAO,CAAC,CAAC,EACY,YAAW,QAAW,WAAW,OAAO,CAAC,GAAK,SAAS,WAAW,OAAO,CAAC,CAAC,EAAI,mBAC7I,iBAAmB,SAAS,WAAW,OAAO,CAAC,CAAC,GAC9C,MAAK,KAAK,WAAa,MAAQ,KAAO,SAAkB,GAAG,QAAW,KAAK,QAAQ,OAAO,CAAC,GAAK,SAAS,KAAK,QAAQ,OAAO,CAAC,CAAC,EAAI,iBACrI,iBAAmB,SAAS,KAAK,QAAQ,OAAO,CAAC,CAAC,EACY,YAAW,QAAW,WAAW,OAAO,CAAC,GAAK,SAAS,WAAW,OAAO,CAAC,CAAC,EAAI,mBAC7I,iBAAmB,SAAS,WAAW,OAAO,CAAC,CAAC,GAE5D,CAAC,EAED,cAAc,EACd,aAAe,iBAAmB,iBAC9B,WAAW,SAAW,OAAS,GAC/B,QAAQ,IAAI,YAAY,eAAe,MAAM,6BAA6B,aAAe,KAAK,QAAQ,CAAC,CAAC,GAAG,EAE/G,IAAI,QAAQ,CAAC,KAAM,QAAU,CACzB,IAAI,GACJ,IAAM,QAAU,CACZ,MAAO,mBAAmB,UAC1B,OAAQ,KACR,YAAa,UAAa,MAAK,KAAK,WAAa,MAAQ,KAAO,SAAkB,GAAG,SAAY,KAAK,QAAQ,SAAW,WAAW,SAAW,WAAW,SAAW,gBAChK,gBAAkB,WAAW,mBAAqB,WAAW,mBAAqB,IACnF,GAAG,EACP,KAAM,CAAC,EACP,QAAS,KAAK,OAClB,EAEI,QAAQ,QAAQ,UAChB,QAAQ,YAAc,GAE1B,QAAQ,QAAQ,mBAAqB,WAAW,mBAAqB,WAAW,mBAAqB,KAErG,IAAI,UAAY,WAAW,KAAK,KAAK,EACjC,KAAK,QAAQ,SAAW,MAAM,QAAQ,WAAW,IAAI,IACrD,UAAY,WAAW,KAAK,OAAO,CAAC,MAAO,MAAQ,KAAO,OAAS,IAAM,IAAM,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAM,OAAS,KAAO,IAAI,GAG3I,QAAQ,OAAS,iBAAiB,KAAM,SAAS,EAEjD,aAAa,KAAK,OAAO,CAC7B,CAAC,EAsCG,WAAW,SACX,QAAQ,IAAI;AAAA,WAAc,eAAe,MAAM,WAAW,IAAI,aAAa,EAC/E,IAAI,YAAc,EACd,YAAc,EACd,OAAS,GACb,KAAO,CAAC,QAAQ,CACZ,IAAM,QAAU,aAAa,WAAW,EACpC,QAAU,aAAa,WAAW,EAEtC,aAAa,QAAQ,MAAQ,CACrB,KAAK,aAAe,cACpB,YAAc,KAAK,YAC3B,CAAC,EAEG,YAAc,YAAc,eACxB,WAAW,UACX,QAAQ,IAAI;AAAA,0EAA6E,EAEzF,QAAQ,IAAI,yDAAyD,YAAc,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,YAAc,KAAK,QAAQ,CAAC,CAAC,MAAM,aAAe,GAAG,EAAE,EACxK,QAAQ,IAAI;AAAA;AAAA,CAA+E,GAG3F,aAAa,OAAS,GAAK,aAAa,IAAI,MAAQ,KAAK,KAAK,MAAM,EAAE,OAAO,CAAC,EAAG,IAAM,EAAI,CAAC,EAAI,GAChG,iBAAiB,KAAK,KAAK,YAAY,EAE3C,eAAe,KAAK,gBAAgB,EAGpC,iBAAmB,CAAE,KADL,CAAC,CACkB,EAEnC,aAAe,CAAC,EAChB,IAAI,QAAQ,MAAQ,aAAa,KAAK,CAAE,MAAO,mBAAmB,UAAW,KAAM,CAAC,EAAG,QAAS,KAAK,OAAQ,CAAC,CAAC,EAE/G,cAAc,EACd,aAAe,iBAAmB,iBAC9B,WAAW,SACX,QAAQ,IAAI,YAAY,eAAe,MAAM,6BAA6B,aAAe,KAAK,QAAQ,CAAC,CAAC,GAAG,EAE/G,YAAc,GAET,WAAW,iBAAmB,WAAW,uBAAyB,WAAW,oBAC9E,WAAW,mBAAmB,QAAQE,MAAO,CACzC,IAAM,WAAa,CAAC,EAChB,cAAgB,EACpBA,KAAI,QAAQ,MAAQ,CAChB,WAAW,KAAK,IAAI,EAChB,KAAK,YAAc,gBACnB,cAAgB,KAAK,YAC7B,CAAC,EACD,iBAAiB,KAAK,KAAK,UAAU,EACrC,aAAe,aACnB,CAAC,EAGL,QAAU,aAAa,WAAW,GAGtC,IAAM,SAAW,QAAQ,OAAO,MAAM,EAElC,MAAM,QAAQ,QAAQ,IAAI,IACtB,SACA,QAAQ,KAAO,QAAQ,KAAK,OAAO,QAAQ,EACtC,QAAQ,KAAK,SAAW,IAC7B,QAAQ,KAAO,QAAQ,KAAK,OAAO,CAAE,MAAO,mBAAmB,UAAW,KAAM,EAAG,CAAC,IAIxF,cAAgB,aAAa,OAAS,IACtC,aAAe,aAEnB,YAAc,YAAc,aAAa,OAAS,EAAI,YAAc,EAAI,EAE1D,aAAa,IAAI,MAAQ,KAAK,OAAO,MAAM,EAAE,OAAO,CAAC,KAAM,OAAS,KAAO,IAAI,IAC/E,IACV,OAAS,GACjB,CAEI,aAAa,OAAS,GACtB,iBAAiB,KAAK,KAAK,YAAY,EACvC,WAAW,SACX,QAAQ,IAAI,YAAY,eAAe,MAAM,WAAW,IAAI,wCAAwC,YAAc,KAAK,QAAQ,CAAC,CAAC,sBAAsB,aAAe,KAAK,QAAQ,CAAC,CAAC,IAAI,CAEjM,CAAC,EAED,eAAe,KAAK,gBAAgB,EAChC,WAAW,UACX,QAAQ,IAAI;AAAA,mDAAsD,EAClE,QAAQ,IAAI,oCAAoC,eAAe,MAAM,EAAE,EACvE,eAAe,QAAQ,OAAS,QAAQ,IAAI,KAAK,CAAC,EAClD,QAAQ,IAAI;AAAA;AAAA,CAAwD,GAGjE,cACX,CAQA,SAAS,iBAAiB,KAAM,SAAU,QAAU,CAAC,EAAG,YAAa,CACjE,IAAM,KAAO,SAAW,CAAC,EACzB,KAAK,YAAc,KAAK,aAAe,KAAK,cAAgB,EAAI,KAAK,YAAc,GACnF,IAAI,aAAe,KAAK,GAAK,KAAK,WAAW,MACvC,kBAAoB,CAAC,EACrB,kBAAoB,CAAC,EACrB,kBAAoB,CAAC,EACrB,QAAU,CAAC,EACX,WAAa,CAAC,EAChB,eAAiB,CAAC,GAAK,GAAK,GAAK,EAAG,EACpC,QAAU,EAEd,GAAI,CAAC,SAAS,eAAe,QAAQ,EACjC,MAAM,IAAI,MAAM,4BAA8B,SAAW,mBAAmB,EAElB,aAAY,SAClE,MAAM,QAAQ,YAAY,OAAO,EACjC,eAAiB,YAAY,QACvB,MAAM,YAAY,OAAO,IAC/B,eAAiB,CAAC,YAAY,QAAS,YAAY,QAAS,YAAY,QAAS,YAAY,OAAO,GACxG,KAAK,YAAc,gBAE8B,MAAK,cAClD,MAAM,QAAQ,KAAK,WAAW,EAC9B,eAAiB,KAAK,YAChB,MAAM,KAAK,WAAW,IAC5B,eAAiB,CAAC,KAAK,YAAa,KAAK,YAAa,KAAK,YAAa,KAAK,WAAW,IAEhG,cAAgB,KAAK,EAAI,SAAS,KAAK,CAAC,EAAI,KAAK,WAAW,OAAS,SAAS,eAAe,CAAC,EAAI,eAAe,CAAC,CAAC,EAC/G,KAAK,UACL,QAAQ,IAAI,kBAAkB,EAC9B,QAAQ,IAAI,2EAA2E,EACvF,QAAQ,IAAI,yDAAyD,KAAK,CAAC,EAAE,EAC7E,QAAQ,IAAI,yDAAyD,KAAK,CAAC,EAAE,EAC7E,QAAQ,IAAI,0DAA0D,KAAK,WAAW,MAAQ,KAAK,QAAQ,CAAC,CAAC,EAAE,EAC/G,QAAQ,IAAI,0DAA0D,KAAK,WAAW,OAAS,KAAK,QAAQ,CAAC,CAAC,EAAE,EAChH,QAAQ,IAAI,0DAA0D,aAAe,KAAK,QAAQ,CAAC,CAAC,EAAE,GAG1G,IAAI,cAAgB,SAAS,iBAAiB,IAAI,QAAQ,oBAAoB,EAC1E,cAAc,SAAW,IACzB,cAAgB,SAAS,iBAAiB,IAAI,QAAQ,oBAAoB,GAC9E,cAAc,QAAS,SAAY,CAC/B,IAAM,KAAO,QACb,GAAI,KAAK,aAAa,SAAS,EAG3B,QAAS,KAAO,EAAG,KAAO,OAAO,KAAK,aAAa,SAAS,CAAC,EAAG,OAC5D,WAAW,KAAK,KAAK,MAAM,KAAK,YAAc,OAAO,KAAK,aAAa,SAAS,CAAC,CAAC,CAAC,OAIvF,WAAW,KAAK,KAAK,WAAW,CAExC,CAAC,EACD,WAAW,QAAQ,MAAQ,CACvB,SAAW,IACf,CAAC,EAED,WAAW,QAAQ,CAAC,KAAM,OAAS,CAC/B,IAAM,aAAe,QAAS,OAAO,YAAY,GAAM,KAAO,QAAW,KAAQ,IAAM,KAAK,QAAQ,CAAC,CAAC,EAClG,YAAc,EACZ,eAAiB,SAAS,cAAc,IAAI,QAAQ,sCAAsC,KAAO,CAAC,GAAG,EACvG,iBACA,YAAc,OAAO,eAAe,aAAa,qBAAqB,CAAC,GAC3E,IAAM,eAAiB,SAAS,cAAc,IAAI,QAAQ,sCAAsC,KAAO,CAAC,GAAG,EACvG,iBACA,YAAc,OAAO,eAAe,aAAa,iBAAiB,CAAC,GACvE,QAAQ,KAAM,YAAc,aAAe,YAAc,YAAa,CAC1E,CAAC,EACG,KAAK,SACL,QAAQ,IAAI,0DAA0D,QAAQ,KAAK,IAAI,CAAC,GAAG,EAI5E,CAAC,QAAS,QAAS,OAAO,EAClC,QAAQ,MAAQ,CACvB,SAAS,iBAAiB,IAAI,QAAQ,IAAI,IAAI,KAAK,EAAE,QAAS,KAAQ,CAClE,IAAM,QAAU,IACV,eAAiB,CAAC,EAmFxB,OAlFA,MAAM,KAAK,QAAQ,KAAK,EAAE,QAAQ,MAAQ,CAEtC,IAAM,QAAU,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,OAAO,EAAE,QAAQ,QAAS,EAAE,EAAE,QAAQ,QAAS,EAAE,EAAE,QAAQ,OAAQ,EAAE,EAAE,QAAQ,IAAK,EAAE,EAAE,MAAM,GAAG,EAC5J,QAAU,OACT,iBAAiB,IAAI,EACrB,iBAAiB,kBAAkB,EACnC,QAAQ,QAAS,EAAE,EACnB,QAAQ,QAAS,EAAE,EACnB,QAAQ,OAAQ,EAAE,EAClB,QAAQ,IAAK,EAAE,EACf,MAAM,GAAG,GAGd,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,kBAAkB,IAAM,oBACnE,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,aAAa,KAC5D,QAAU,CAAC,MAAO,MAAO,KAAK,GAGlC,IAAM,SAAW,CACb,MAAO,KACP,KAAS,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,aAAa,IAAM,QACvE,OAAO,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,aAAa,CAAC,GAAK,IAC7E,OAAQ,KACR,MAAO,SAAS,OAAO,QAAQ,CAAC,CAAC,EAAG,OAAO,QAAQ,CAAC,CAAC,EAAG,OAAO,QAAQ,CAAC,CAAC,CAAC,EAC1E,KAAM,CAAE,MAAO,SAAS,OAAO,QAAQ,CAAC,CAAC,EAAG,OAAO,QAAQ,CAAC,CAAC,EAAG,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAE,EACpF,UAAW,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,aAAa,GAAK,IAAI,MAAM,GAAG,EAAE,CAAC,EAAE,QAAQ,KAAM,EAAE,EAAE,QAAQ,UAAW,EAAE,EAAE,QAAQ,UAAW,EAAE,GACxJ,KACJ,SAAU,OAAO,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,WAAW,EAAE,QAAQ,UAAW,EAAE,CAAC,EACnG,OAAQ,KACR,QAAS,OAAO,KAAK,aAAa,SAAS,CAAC,GAAK,KACjD,QAAS,OAAO,KAAK,aAAa,SAAS,CAAC,GAAK,KACjD,OAAQ,IACZ,EACA,GAAI,CAAC,OAAQ,SAAU,QAAS,QAAS,KAAK,EAAE,SAAS,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,YAAY,CAAC,EAAG,CACpH,IAAM,MAAQ,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,YAAY,EAAE,QAAQ,QAAS,MAAM,EAAE,QAAQ,MAAO,OAAO,EAC1H,SAAS,MAAQ,QAAU,SAAW,SAAW,QAAU,OAAS,OAAS,QAAU,QAAU,QAAU,IAC/G,CACA,GAAI,CAAC,MAAO,SAAU,QAAQ,EAAE,SAAS,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,gBAAgB,CAAC,EAAG,CACxG,IAAM,OAAS,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,gBAAgB,EAC9E,SAAS,OAAS,SAAW,MAAQ,MAAQ,SAAW,SAAW,SAAW,SAAW,SAAW,SAAW,IACnH,CAGI,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,cAAc,IAC7D,SAAS,OAAS,CAAC,EAAG,EAAG,EAAG,CAAC,EACZ,CAAC,cAAe,gBAAiB,iBAAkB,cAAc,EACzE,QAAQ,CAAC,IAAK,OAAS,CAC5B,SAAS,OAAO,IAAI,EAAI,KAAK,MAAM,OAAO,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,GAAG,EAAE,QAAQ,OAAQ,EAAE,CAAC,CAAC,CACtH,CAAC,IAGD,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,kBAAkB,GACjE,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,oBAAoB,GACnE,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,qBAAqB,GACpE,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,mBAAmB,KAClE,SAAS,OAAS,CAAC,KAAM,KAAM,KAAM,IAAI,EACxB,CAAC,MAAO,QAAS,SAAU,MAAM,EACzC,QAAQ,CAAC,IAAK,OAAS,CAC5B,IAAM,WAAa,KAAK,MAAM,OAAO,OAChC,iBAAiB,IAAI,EACrB,iBAAiB,UAAY,IAAM,QAAQ,EAC3C,QAAQ,KAAM,EAAE,CAAC,CAAC,EACnB,OAAS,CAAC,EACd,OAAS,OACJ,iBAAiB,IAAI,EACrB,iBAAiB,UAAY,IAAM,QAAQ,EAC3C,QAAQ,QAAS,EAAE,EACnB,QAAQ,QAAS,EAAE,EACnB,QAAQ,OAAQ,EAAE,EAClB,QAAQ,IAAK,EAAE,EACf,MAAM,GAAG,EACd,IAAM,WAAa,SAAS,OAAO,OAAO,CAAC,CAAC,EAAG,OAAO,OAAO,CAAC,CAAC,EAAG,OAAO,OAAO,CAAC,CAAC,CAAC,EACnF,SAAS,OAAO,IAAI,EAAI,CAAE,GAAI,WAAY,MAAO,UAAW,CAChE,CAAC,GAGL,eAAe,KAAK,CAChB,MAAO,mBAAmB,UAC1B,KAAM,KAAK,UACX,QAAS,QACb,CAAC,CACL,CAAC,EACO,KAAM,CACV,IAAK,QACD,kBAAkB,KAAK,cAAc,EACrC,MACJ,IAAK,QACD,kBAAkB,KAAK,cAAc,EACrC,MACJ,IAAK,QACD,kBAAkB,KAAK,cAAc,EACrC,MACJ,QACI,QAAQ,IAAI,yCAAyC,IAAI,EAAE,EAC3D,KACR,CACJ,CAAC,CACL,CAAC,EAGD,KAAK,mBAAqB,mBAAqB,KAC/C,KAAK,KAAO,QACZ,sBAAsB,CAAC,GAAG,kBAAmB,GAAG,kBAAmB,GAAG,iBAAiB,EAAG,KAAM,KAAK,WAAY,WAAW,EAAE,QAAQ,CAAC,MAAO,QAAU,CAEpJ,IAAM,SAAW,KAAK,SAAS,CAAE,WAAY,KAAK,iBAAmB,IAAK,CAAC,EAEvE,QAAU,IACV,KAAK,EAAI,KAAK,GAAK,eAAe,CAAC,GACnC,MAAQ,IACR,KAAK,EAAI,KAAK,qBAAuB,KAAK,gBAAkB,eAAe,CAAC,GAC5E,KAAK,SACL,QAAQ,IAAI,+BAA+B,KAAK,mBAAmB,yBAAyB,eAAe,CAAC,CAAC,gBAAgB,KAAK,CAAC,EAAE,EAEzI,SAAS,SAAS,MAAM,KAAM,CAAE,EAAG,KAAK,GAAK,eAAe,CAAC,EAAG,EAAG,KAAK,EAAG,EAAG,OAAO,YAAY,EAAI,IAAK,KAAM,QAAS,SAAU,EAAM,CAAC,EAEtI,KAAK,WACL,KAAK,SAAS,QAAU,KAAK,SAAS,SAAW,CAAC,EAC9C,CAAC,KAAK,SAAS,OAAU,CAAC,KAAK,SAAS,MAAM,MAAQ,CAAC,KAAK,SAAS,MAAM,KAC3E,QAAQ,KAAK,kEAAkE,EAG/E,SAAS,SAAS,CACd,KAAM,KAAK,SAAS,MAAM,KAC1B,KAAM,KAAK,SAAS,MAAM,KAC1B,EAAG,KAAK,SAAS,QAAQ,EACzB,EAAG,KAAK,SAAS,QAAQ,EACzB,EAAG,KAAK,SAAS,QAAQ,EACzB,EAAG,KAAK,SAAS,QAAQ,CAC7B,CAAC,GAGL,KAAK,UACL,SAAS,SAAS,KAAK,SAAS,UAAW,KAAK,SAAS,SAAW,CAAC,CAAC,EACtE,KAAK,UACL,SAAS,SAAS,KAAK,SAAS,KAAM,KAAK,SAAS,SAAW,CAAC,CAAC,EACjE,KAAK,SACL,SAAS,QAAQ,KAAK,QAAQ,KAAM,KAAK,QAAQ,SAAW,CAAC,CAAC,CACtE,CAAC,CACL,CAYA,SAAS,kBAAkB,MAAO,OAAQ,CAGlC,MAAM,OACN,OAAO,KAAO,MAAM,MAEpB,MAAM,SAAW,MAAM,QAAQ,MAAM,OAAO,GAAK,MAAM,QAAQ,OAAS,GACxE,MAAM,QAAQ,QAAQ,CAAC,OAAQ,MAAQ,CACnC,IAAM,IAAM,OAAO,KAAK,MAAM,EAAE,CAAC,EAC3B,IAAM,OACR,eAAe,GAAG,GAAK,MAAQ,QAC/B,mBAAmB,IAAK,OAAO,GAAG,EAAE,KAAM,OAAO,GAAG,EAAE,KAAM,OAAO,GAAG,EAAE,IAAI,EACvE,eAAe,GAAG,GAAK,MAAQ,QACpC,mBAAmB,IAAK,OAAO,GAAG,CAAC,EAC9B,eAAe,GAAG,GAAK,MAAQ,OACpC,mBAAmB,IAAK,WAAW,KAAM,OAAO,GAAG,CAAC,EAC/C,eAAe,GAAG,GAAK,MAAQ,OACpC,mBAAmB,IAAK,WAAW,UAAW,OAAO,GAAG,CAAC,EACpD,eAAe,GAAG,GAAK,MAAQ,OACpC,kBAAkB,IAAK,CAAC,CAAE,KAAM,OAAO,GAAG,EAAE,IAAK,CAAC,EAAG,OAAO,GAAG,EAAE,QAAS,EAAK,EAC1E,eAAe,GAAG,GAAK,MAAQ,gBAEpC,OAAO,GAAG,EAAE,QAAQ,YAAc,OAAO,GAAG,EAAE,QAAQ,KACtD,OAAO,OAAO,GAAG,EAAE,QAAQ,KAC3B,OAAO,GAAG,EAAE,QAAQ,iBAAmB,OAAO,GAAG,EAAE,QAAQ,KAC3D,OAAO,OAAO,GAAG,EAAE,QAAQ,KAC3B,OAAO,GAAG,EAAE,QAAQ,gBAAkB,IAAM,IAC5C,kBAAkB,IAAK,CAAC,CAAE,KAAM,OAAO,GAAG,EAAE,IAAK,CAAC,EAAG,OAAO,GAAG,EAAE,QAAS,EAAI,EAgBtF,CAAC,EAGD,MAAM,aAAe,OAAO,MAAM,aAAgB,WAClD,OAAO,kBAAoB,MAAM,YACzC,CA0BA,SAAS,mBAAmB,OAAQ,KAAM,KAAM,IAAK,CACjD,IAAI,GACJ,SAAS,uBAAuB,OAAQ,CAChC,CAAC,QAAU,OAAO,QAAU,SAE5B,OAAO,OAAS,SAAc,MAAM,OAAO,OAAO,IAAI,CAAC,GAAK,OAAO,MAAQ,KAC3E,QAAQ,KAAK,sDAAsD,EACnE,OAAO,OAAO,MAEd,OAAO,OAAS,CAAC,CAAC,QAAS,OAAQ,KAAK,EAAE,SAAS,OAAO,KAAK,IAC/D,QAAQ,KAAK,gEAAgE,EAC7E,OAAO,OAAO,OAEd,OAAO,KAAO,CAAC,CAAC,OAAQ,SAAU,OAAO,EAAE,SAAS,OAAO,GAAG,IAC9D,QAAQ,KAAK,iEAAiE,EAC9E,OAAO,OAAO,KAEtB,CACA,IAAM,QAAU,EAAE,cACZ,aAAe,CACjB,MAAO,KACP,KAAM,KACN,QAAS,KACT,SAAU,IACd,EAII,OAAS,KACT,QAAU,CAAC,EACX,MAAM,QAAQ,IAAI,GAKlB,KAAK,QAAQ,KAAO,CAChB,QAAU,QAAQ,OAAO,IAAI,IAAI,CACrC,CAAC,EACD,OAAS,MAAQ,MAGjB,QAAU,KACV,OAAS,KAEb,QAAQ,QAAQ,CAAC,KAAM,IAAM,CACzB,KAAK,WAAa,EAEd,KAAK,SAAW,QAAa,CAAC,MAAM,QAAQ,KAAK,OAAO,CAAC,CAAC,IAC1D,KAAK,OAAS,CAAC,KAAK,MAAM,EAElC,CAAC,EACD,IAAM,QAAU,QAAU,OAAO,QAAW,SAAW,OAAS,CAAC,EAsKjE,GArJA,QAAQ,MAAQ,KAChB,QAAQ,EAAI,OAAO,QAAQ,EAAM,KAAe,QAAQ,GAAK,MAAQ,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC,EAAI,QAAQ,EAAI,EAC7G,QAAQ,EAAI,OAAO,QAAQ,EAAM,KAAe,QAAQ,GAAK,MAAQ,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC,EAAI,QAAQ,EAAI,EAC7G,QAAQ,EAAI,QAAQ,GAAK,MACzB,QAAQ,EAAI,QAAQ,GAAK,MACzB,QAAQ,WAAa,QAAQ,WACvB,kBAAkB,QAAQ,UAAU,EACpC,SAAS,OAAO,cAAc,OAAO,KAAO,IAAI,QAAU,mBAAmB,KAAK,EAAE,MAAM,GAE3F,CAAC,MAAO,KAAK,EAAE,SAAS,QAAQ,QAAU,EAAE,IAC7C,QAAQ,OAAS,OAGjB,QAAQ,QAAU,WAAW,OACxB,CAAC,UAAW,WAAY,gBAAgB,EAAE,SAAS,QAAQ,aAAe,EAAE,IAC7E,QAAQ,YAAc,aAE1B,QAAQ,QAAU,WAAW,MACxB,CAAC,YAAa,UAAW,gBAAgB,EAAE,SAAS,QAAQ,aAAe,EAAE,IAC9E,QAAQ,YAAc,cAE1B,QAAQ,QAAU,WAAW,QACxB,CAAC,YAAa,UAAW,WAAY,gBAAgB,EAAE,SAAS,QAAQ,aAAe,EAAE,IAC1F,QAAQ,YAAc,aAEzB,MAAK,QAAQ,eAAiB,MAAQ,KAAO,SAAkB,GAAG,SAAS,QAAQ,IAC/E,QAAQ,iBACT,QAAQ,eAAiB,KAI7B,QAAQ,qBACJ,QAAQ,QAAU,WAAW,MAAQ,QAAQ,QAAU,WAAW,OAAS,QAAQ,QAAU,WAAW,UAAY,QAAQ,QAAU,WAAW,QACjJ,OAAO,QAAQ,kBAEf,QAAQ,QAAU,WAAW,MACxB,CAAC,UAAW,MAAO,QAAS,QAAQ,EAAE,SAAS,QAAQ,iBAAiB,GACzE,OAAO,QAAQ,oBAEnB,QAAQ,QAAU,WAAW,QAAU,QAAQ,QAAU,WAAW,UAAY,QAAQ,QAAU,WAAW,MAAQ,QAAQ,QAAU,WAAW,WAC7I,CAAC,IAAK,MAAO,IAAK,IAAK,GAAG,EAAE,SAAS,QAAQ,iBAAiB,GAC/D,OAAO,QAAQ,mBAEnB,QAAQ,QAAU,WAAW,MACxB,CAAC,UAAW,gBAAgB,EAAE,SAAS,QAAQ,aAAe,EAAE,GAC5D,CAAC,MAAO,SAAU,OAAO,EAAE,SAAS,QAAQ,iBAAiB,GAC9D,OAAO,QAAQ,kBAElB,CAAC,WAAW,EAAE,SAAS,QAAQ,aAAe,EAAE,GAC5C,CAAC,MAAO,SAAU,QAAS,QAAQ,EAAE,SAAS,QAAQ,iBAAiB,GACxE,OAAO,QAAQ,oBAI/B,QAAQ,qBAAuB,QAAQ,sBAAwB,CAAC,QAAQ,qBAAuB,QAAQ,qBAAuB,GACzH,CAAC,IAAK,IAAK,IAAK,IAAK,IAAI,EAAE,SAAS,QAAQ,WAAa,EAAE,IAC5D,QAAQ,UAAY,KAEnB,CAAC,OAAQ,YAAa,MAAO,WAAY,UAAW,cAAc,EAAE,SAAS,QAAQ,YAAc,EAAE,IACtG,QAAQ,WAAa,OAGpB,CAAC,SAAU,OAAQ,UAAW,MAAO,OAAQ,SAAU,UAAU,EAAE,SAAS,QAAQ,gBAAkB,EAAE,IACzG,QAAQ,eAAiB,UACxB,CAAC,MAAO,MAAM,EAAE,SAAS,QAAQ,iBAAmB,EAAE,IACvD,QAAQ,gBAAkB,QACzB,CAAC,WAAY,SAAU,QAAQ,EAAE,SAAS,QAAQ,YAAc,EAAE,IACnE,QAAQ,WAAa,YACzB,QAAQ,mBAAqB,QAAQ,oBAAsB,CAAC,MAAM,QAAQ,kBAAkB,EAAI,QAAQ,mBAAqB,EAC7H,QAAQ,uBAAyB,QAAQ,wBAA0B,CAAC,MAAM,QAAQ,sBAAsB,EAAI,SAAS,QAAQ,sBAAsB,EAAI,SAAS,GAAI,EAEhK,QAAQ,QACR,CAAC,IAAK,IAAK,IAAK,GAAG,EAAE,QAAQ,KAAO,CAChC,IAAM,IAAM,QAAQ,OAAO,GAAG,GAC1B,MAAM,OAAO,GAAG,CAAC,GAAK,IAAM,GAAK,IAAM,KACvC,QAAQ,KAAK,yBAA2B,IAAM,kBAAkB,EAChE,OAAO,QAAQ,OAAO,GAAG,EAEjC,CAAC,EAGL,QAAQ,YAAc,QAAQ,cAAgB,QAAQ,QAAU,WAAW,QAAU,CAAE,MAAO,SAAU,KAAM,CAAE,EAAI,CAAE,MAAO,MAAO,GACpI,QAAQ,YAAc,QAAQ,cAAgB,QAAQ,QAAU,WAAW,QAAU,CAAE,MAAO,SAAU,KAAM,CAAE,EAAI,CAAC,GACrH,QAAQ,YAAc,QAAQ,cAAgB,QAAQ,QAAU,WAAW,QAAU,CAAE,MAAO,SAAU,KAAM,CAAE,EAAI,CAAE,MAAO,MAAO,GACpI,uBAAuB,QAAQ,WAAW,EAC1C,uBAAuB,QAAQ,WAAW,EAC1C,uBAAuB,QAAQ,WAAW,EAC1C,qBAAqB,QAAQ,MAAM,EAEnC,QAAQ,cAAgB,QAAQ,eAAiB,CAAC,QAAQ,cAAgB,QAAQ,cAAgB,GAClG,QAAQ,wBAA0B,QAAQ,yBAA2B,CAAC,QAAQ,wBAA0B,QAAQ,wBAA0B,GAC1I,QAAQ,wBAA0B,QAAQ,yBAA2B,CAAC,QAAQ,wBAA0B,QAAQ,wBAA0B,GAC1I,QAAQ,qBAAuB,QAAQ,sBAAwB,CAAC,QAAQ,qBAAuB,QAAQ,qBAAuB,GAC9H,QAAQ,kBAAoB,QAAQ,mBAAqB,CAAC,QAAQ,kBAAoB,QAAQ,kBAAoB,GAClH,QAAQ,UAAY,QAAQ,WAAa,CAAC,QAAQ,UAAY,QAAQ,UAAY,GAClF,QAAQ,WAAa,QAAQ,YAAc,CAAC,QAAQ,WAAa,QAAQ,WAAa,GACtF,QAAQ,YAAc,QAAQ,aAAe,CAAC,QAAQ,YAAc,QAAQ,YAAc,GAC1F,QAAQ,UAAY,QAAQ,WAAa,CAAC,QAAQ,UAAY,QAAQ,UAAY,GAClF,QAAQ,UAAY,QAAQ,WAAa,CAAC,QAAQ,UAAY,QAAQ,UAAY,GAClF,QAAQ,gBAAkB,QAAQ,iBAAmB,CAAC,QAAQ,gBAAkB,QAAQ,gBAAkB,GAC1G,QAAQ,gBAAkB,OAAO,QAAQ,gBAAoB,IAAc,QAAQ,gBAAkB,GACrG,QAAQ,gBAAkB,OAAO,QAAQ,gBAAoB,IAAc,QAAQ,gBAAkB,GACrG,QAAQ,gBAAkB,OAAO,QAAQ,gBAAoB,IAAc,QAAQ,gBAAkB,GACrG,QAAQ,QAAU,CAAC,MAAM,QAAQ,OAAO,GAAK,QAAQ,SAAW,KAAO,QAAQ,SAAW,GAAK,QAAQ,QAAU,GACjH,QAAQ,QAAU,CAAC,MAAM,QAAQ,OAAO,GAAK,QAAQ,SAAW,GAAK,QAAQ,SAAW,IAAM,QAAQ,QAAU,GAChH,QAAQ,UAAY,QAAQ,WAAa,CAAC,QAAQ,UAAY,QAAQ,UAAY,GAClF,QAAQ,eAAiB,CAAC,MAAM,QAAQ,cAAc,GAAK,QAAQ,gBAAkB,GAAK,QAAQ,gBAAkB,IAAM,QAAQ,eAAiB,GAEnJ,QAAQ,eAAiB,CAAC,MAAM,QAAQ,cAAc,GAAK,QAAQ,gBAAkB,GAAK,QAAQ,gBAAkB,IAAO,QAAQ,eAAiB,IACpJ,QAAQ,eAAiB,CAAC,MAAM,QAAQ,cAAc,GAAK,QAAQ,gBAAkB,GAAK,QAAQ,gBAAkB,IAAO,QAAQ,eAAiB,IACpJ,QAAQ,YAAc,MAAM,QAAQ,QAAQ,WAAW,EACjD,QAAQ,YACR,QAAQ,QAAU,WAAW,KAAO,QAAQ,QAAU,WAAW,SAC7D,gBACA,gBACV,QAAQ,mBAAqB,QAAQ,oBAAsB,CAAC,MAAM,QAAQ,kBAAkB,EAAI,QAAQ,mBAAqB,KAE7H,QAAQ,OAAS,QAAQ,QAAU,OAAO,QAAQ,QAAW,SAAW,QAAQ,OAAS,KACrF,QAAQ,SAAW,CAAC,QAAQ,OAAO,IAAM,MAAM,QAAQ,OAAO,EAAE,KAChE,QAAQ,OAAO,GAAK,iBAAiB,IACrC,QAAQ,SAAW,CAAC,QAAQ,OAAO,OAAS,OAAO,QAAQ,OAAO,OAAU,YAC5E,QAAQ,OAAO,MAAQ,iBAAiB,OAE5C,QAAQ,SAAW,QAAQ,UAAY,CAAC,EACxC,QAAQ,SAAS,OAAS,QAAQ,SAAS,QAAU,OAAO,QAAQ,SAAS,QAAW,SAAW,QAAQ,SAAS,OAAS,KACzH,QAAQ,SAAS,SAAW,CAAC,QAAQ,SAAS,OAAO,IAAM,MAAM,QAAQ,SAAS,OAAO,EAAE,KAC3F,QAAQ,SAAS,OAAO,GAAK,iBAAiB,IAC9C,QAAQ,SAAS,SAAW,CAAC,QAAQ,SAAS,OAAO,OAAS,OAAO,QAAQ,SAAS,OAAO,OAAU,YACvG,QAAQ,SAAS,OAAO,MAAQ,iBAAiB,OAEjD,QAAQ,SACR,QAAQ,SAAS,OAAS,QAAQ,QACtC,QAAQ,SAAS,KAAO,QAAQ,SAAS,MAAQ,CAAE,MAAO,KAAM,aAAc,IAAK,EAC/E,QAAQ,OACR,QAAQ,SAAS,KAAK,MAAQ,QAAQ,MAE1C,QAAQ,UAAY,QAAQ,WAAa,CAAC,EAC1C,QAAQ,UAAU,OAAS,QAAQ,UAAU,QAAU,OAAO,QAAQ,UAAU,QAAW,SAAW,QAAQ,UAAU,OAAS,KAC7H,QAAQ,UAAU,SAClB,QAAQ,UAAU,OAAS,CACvB,MAAO,QAAQ,UAAU,OAAO,OAAS,iBAAiB,MAC1D,GAAI,QAAQ,UAAU,OAAO,IAAM,iBAAiB,EACxD,GAEJ,QAAQ,UAAU,eAAiB,OAAO,QAAQ,UAAU,gBAAmB,UAAY,QAAQ,UAAU,eAAiB,GAE9H,QAAQ,WAAa,QAAQ,YAAc,OAAO,QAAQ,YAAe,SAAW,QAAQ,WAAa,KACrG,QAAQ,aAAe,CAAC,QAAQ,WAAW,IAAM,MAAM,QAAQ,WAAW,EAAE,KAC5E,QAAQ,WAAW,GAAK,KACxB,QAAQ,YAAc,QAAQ,WAAW,MAAO,CAChD,IAAM,WAAa,OAAO,QAAQ,WAAW,OAAU,UAAY,QAAQ,WAAW,MAAM,SAAW,GAAK,mBAAmB,KAAK,QAAQ,WAAW,KAAK,EACtJ,cAAgB,OAAO,OAAO,kBAAkB,EAAE,SAAS,QAAQ,WAAW,KAAK,EACrF,CAAC,YAAc,CAAC,gBAChB,QAAQ,WAAW,MAAQ,SAEnC,CAEA,MAAI,CAAC,QAAQ,qBAAuB,QAAQ,QAAU,WAAW,UAC7D,QAAQ,oBAAsB,WAC9B,CAAC,QAAQ,sBAAwB,QAAQ,QAAU,WAAW,KAAO,QAAQ,QAAU,WAAW,YAClG,QAAQ,oBAAsB,QAAQ,YAAc,KAAO,WAE/D,QAAQ,oBAAsB,QAAQ,qBAAuB,OAAO,QAAQ,qBAAwB,SAAW,QAAQ,oBAAsB,QAGzI,CAAC,QAAQ,wBAA0B,QAAQ,QAAU,WAAW,UAChE,QAAQ,uBAAyB,UAErC,QAAQ,SAAW,OAAO,QAAQ,UAAa,SAAW,QAAQ,SAAW,EAC7E,QAAQ,iBAAmB,OAAO,QAAQ,kBAAqB,SAAW,QAAQ,iBAAmB,KACjG,QAAQ,QAAU,WAAW,MAAQ,QAAQ,QAAU,WAAW,KAAO,QAAQ,QAAU,WAAW,OAAS,QAAQ,QAAU,WAAW,KAC5I,QAAQ,wBAA0B,CAAC,CAAC,QAAQ,wBAG5C,OAAO,QAAQ,wBAGnB,aAAa,MAAQ,QACrB,aAAa,QAAU,QACvB,aAAa,SAAW,YAAY,MAAM,EAE1C,OAAO,WAAW,KAAK,CACnB,IAAK,YAAY,MAAM,EACvB,KAAM,QACN,KAAM,QACN,KAAM,QAAQ,MACd,SAAU,QACV,SAAU,QAAQ,OAAO,OACzB,OAAQ,oBAAoB,OAAO,MACvC,CAAC,EACD,OAAO,cAAc,KAAK,YAAY,EAC/B,YACX,CASA,SAAS,mBAAmB,OAAQ,IAAK,CACrC,IAAM,UAAY,CACd,MAAO,KACP,KAAM,KACN,QAAS,KACT,MAAO,KACP,SAAU,KACV,UAAW,IACf,EAEM,QAAU,IAAI,GAAK,EACnB,QAAU,IAAI,GAAK,EACnB,SAAW,IAAI,GAAK,EACpB,UAAY,IAAI,GAAK,EACrB,OAAS,IAAI,QAAU,KACvB,aAAe,IAAI,WAAa,GAChC,aAAe,IAAI,MAAQ,GAC3B,aAAe,IAAI,MAAQ,GAC7B,WAAa,YAAY,MAAM,EAC7B,WAAa,IAAI,WAAa,kBAAkB,IAAI,UAAU,EAAI,SAAS,OAAO,cAAc,OAAO,KAAO,IAAI,QAAU,mBAAmB,KAAK,EAAE,MAAM,GAElK,GAAI,CAAC,cAAgB,CAAC,aAClB,eAAQ,MAAM,+DAAmE,EAC1E,KAEN,GAAI,cAAgB,OAAO,cAAiB,SAC7C,eAAQ,MAAM,wFAAwF,OAAO,YAAY,CAAC,EAAE,EACrH,KAEN,GAAI,cAAgB,OAAO,cAAiB,SAC7C,eAAQ,MAAM,kGAAkG,OAAO,YAAY,CAAC,EAAE,EAC/H,KAEN,GAAI,cAAgB,OAAO,cAAiB,UAAY,CAAC,aAAa,YAAY,EAAE,SAAS,SAAS,EACvG,eAAQ,MAAM,mFAAqF,EAC5F,KAIX,IAAI,YAAc,aACb,UAAU,aAAa,YAAY,GAAG,EAAI,CAAC,EAC3C,MAAM,GAAG,EAAE,CAAC,EACZ,MAAM,GAAG,EACT,IAAI,EACJ,MAAM,GAAG,EAAE,CAAC,GAAK,OAAO,YAAY,EAgCzC,GA9BI,cAAgB,gBAAgB,KAAK,YAAY,GAAK,gBAAgB,KAAK,YAAY,EAAE,OAAS,EAClG,WAAa,gBAAgB,KAAK,YAAY,EAAE,CAAC,EAEgB,cAAa,YAAY,EAAE,SAAS,eAAe,IACpH,WAAa,OAGjB,UAAU,MAAQ,mBAAmB,MACrC,UAAU,MAAQ,cAAgB,iBAKlC,UAAU,QAAU,CAChB,EAAG,SAAW,EACd,EAAG,SAAW,EACd,EAAG,UAAY,EACf,EAAG,WAAa,EAChB,QAAS,IAAI,SAAW,GACxB,SAAU,OAAO,IAAI,UAAa,UAAY,IAAI,SAAW,GAC7D,OACA,YAAa,IAAI,YACjB,OAAQ,IAAI,QAAU,EACtB,MAAO,IAAI,OAAS,GACpB,MAAO,IAAI,OAAS,GACpB,aAAc,IAAI,cAAgB,EAClC,WACA,OAAQ,qBAAqB,IAAI,MAAM,CAC3C,EAEI,aAAe,MAIf,OAAO,WAAW,KAAK,CACnB,KAAM,cAAgB,aAAe,MACrC,KAAM,YACN,KAAM,MACN,KAAM,cAAgB,GACtB,IAAK,WACL,OAAQ,kBAAkB,OAAO,SAAS,IAAI,OAAO,WAAW,OAAS,CAAC,OAC1E,SAAU,GACV,QAAS,CAAE,EAAG,oBAAoB,UAAU,QAAQ,EAAG,IAAK,OAAO,WAAW,EAAG,EAAG,oBAAoB,UAAU,QAAQ,EAAG,IAAK,OAAO,WAAW,CAAE,CAC1J,CAAC,EACD,UAAU,SAAW,WACrB,OAAO,WAAW,KAAK,CACnB,KAAM,cAAgB,aACtB,KAAM,gBACN,KAAM,WACN,KAAM,cAAgB,GACtB,IAAK,WAAa,EAClB,OAAQ,kBAAkB,OAAO,SAAS,IAAI,OAAO,WAAW,OAAS,CAAC,IAAI,UAAU,EAC5F,CAAC,EACD,UAAU,SAAW,WAAa,MAEjC,CAED,IAAM,SAAW,OAAO,WAAW,OAAO,MAAQ,KAAK,MAAQ,KAAK,OAAS,cAAgB,KAAK,OAAS,SAAW,YAAc,CAAC,KAAK,WAAW,EAAE,CAAC,EACxJ,OAAO,WAAW,KAAK,CACnB,KAAM,cAAgB,cAAgB,WACtC,KAAM,SAAW,WACjB,KAAM,WACN,KAAM,cAAgB,GACtB,IAAK,WACL,YAAa,CAAC,CAAsD,UAAS,OAC7E,OAA6D,UAAS,OAAU,SAAS,OAAS,kBAAkB,OAAO,SAAS,IAAI,OAAO,WAAW,OAAS,CAAC,IAAI,UAAU,EACtL,CAAC,EACD,UAAU,SAAW,UACzB,CAEA,GAAI,OAAO,cAAiB,SAAU,CAClC,GAAI,CAAC,aAAa,KAAO,CAAC,aAAa,MACnC,MAAM,IAAI,MAAM,6DAA6D,EAE7E,aACA,OAAO,MAAM,KAAK,CACd,KAAM,mBAAmB,UACzB,KAAM,aAAa,MAAQ,QAAU,QACrC,IAAK,WACL,OAAQ,aAAa,KAAO,aAAa,MAAM,SAAS,CAC5D,CAAC,EACD,aAAa,KAAO,WACpB,UAAU,UAAY,YAE9B,CAEA,OAAO,cAAc,KAAK,SAAS,CACvC,CAMA,SAAS,mBAAmB,OAAQ,IAAK,CACrC,IAAM,QAAU,IAAI,GAAK,EACnB,QAAU,IAAI,GAAK,EACnB,SAAW,IAAI,GAAK,EACpB,SAAW,IAAI,GAAK,EACpB,QAAU,IAAI,MAAQ,GACtB,QAAU,IAAI,MAAQ,GACtB,QAAU,IAAI,MAAQ,GACtB,QAAU,IAAI,MAAQ,QACxB,QAAU,GACR,SAAW,IAAI,OAAS,YACxB,WAAa,IAAI,WAAa,kBAAkB,IAAI,UAAU,EAAI,SAAS,OAAO,cAAc,OAAO,KAAO,IAAI,QAAU,mBAAmB,KAAK,EAAE,MAAM,GAC5J,UAAY,CAAE,MAAO,mBAAmB,KAAM,EAEpD,GAAI,CAAC,SAAW,CAAC,SAAW,UAAY,SACpC,MAAM,IAAI,MAAM,yDAAyD,EAExE,GAAI,SAAW,CAAC,QAAQ,YAAY,EAAE,SAAS,SAAS,EACzD,MAAM,IAAI,MAAM,yFAA2F,EAE1G,GAAI,CAAC,SAAS,YAAY,EAAE,SAAS,SAAS,EAC/C,MAAM,IAAI,MAAM,6FAA+F,EAGnH,GAAI,UAAY,UAAY,CAAC,QACzB,MAAM,IAAI,MAAM,sDAAsD,EAyB1E,GArBA,QAAU,IAAI,OAAS,QAAU,QAAQ,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAI,QAAQ,MAAM,GAAG,EAAE,IAAI,IAAM,MAEpG,UAAU,MAAQ,QAClB,UAAU,MAAQ,SAAW,iBAC7B,UAAU,QAAU,CAAC,EAErB,UAAU,QAAQ,EAAI,QACtB,UAAU,QAAQ,EAAI,QACtB,UAAU,QAAQ,EAAI,SACtB,UAAU,QAAQ,EAAI,SACtB,UAAU,QAAQ,WAAa,WAW3B,UAAY,SAAU,CACtB,IAAM,OAAS,YAAY,MAAM,EAEjC,OAAO,WAAW,KAAK,CACnB,KAAM,SAAW,aAAe,QAChC,KAAM,QACN,KAAM,SACN,KAAM,QACN,IAAK,OACL,OAAQ,OACZ,CAAC,EACD,UAAU,SAAW,OAErB,OAAO,WAAW,KAAK,CACnB,KAAM,iBACN,KAAM,SACN,KAAM,YACN,KAAM,MACN,IAAK,YAAY,MAAM,EACvB,OAAQ,kBAAkB,OAAO,SAAS,IAAI,OAAO,WAAW,OAAS,CAAC,MAC9E,CAAC,CACL,KACK,CAED,IAAM,SAAW,OAAO,WAAW,OAAO,MAAQ,KAAK,MAAQ,KAAK,OAAS,SAAW,KAAK,OAAS,QAAU,IAAM,SAAW,CAAC,KAAK,WAAW,EAAE,CAAC,EAE/I,OAAS,YAAY,MAAM,EACjC,OAAO,WAAW,KAAK,CACnB,KAAM,SAAW,aAAe,QAChC,KAAM,QAAU,IAAM,QACtB,KAAM,QACN,KAAM,SAAW,GACjB,IAAK,OACL,YAAa,CAAC,CAAsD,UAAS,OAC7E,OAA6D,UAAS,OAAU,SAAS,OAAS,kBAAkB,OAAO,SAAS,IAAI,OAAO,WAAW,OAAS,CAAC,IAAI,OAAO,EACnL,CAAC,EACD,UAAU,SAAW,OAErB,OAAO,WAAW,KAAK,CACnB,KAAM,SAAW,aAAe,QAChC,KAAM,QAAU,IAAM,QACtB,KAAM,QACN,KAAM,SAAW,GACjB,IAAK,YAAY,MAAM,EACvB,YAAa,CAAC,CAAsD,UAAS,OAC7E,OAA6D,UAAS,OAAU,SAAS,OAAS,kBAAkB,OAAO,SAAS,IAAI,OAAO,WAAW,OAAS,CAAC,IAAI,OAAO,EACnL,CAAC,EAED,OAAO,WAAW,KAAK,CACnB,KAAM,iBACN,KAAM,YACN,KAAM,MACN,KAAM,SACN,IAAK,YAAY,MAAM,EACvB,OAAQ,kBAAkB,OAAO,SAAS,IAAI,OAAO,WAAW,OAAS,CAAC,MAC9E,CAAC,CACL,CAEA,OAAO,cAAc,KAAK,SAAS,CACvC,CAOA,SAAS,mBAAmB,OAAQ,MAAO,CACvC,OAAO,cAAc,KAAK,CACtB,MAAO,mBAAmB,MAC1B,KAAM,CAAC,CAAE,KAAM,KAAM,CAAC,CAC1B,CAAC,CACL,CAOA,SAAS,mBAAmB,OAAQ,UAAW,KAAM,CACjD,IAAM,QAAU,OAAO,MAAS,SAAW,KAAO,CAAC,EACnD,QAAQ,KAAO,QAAQ,MAAQ,CAAE,KAAM,MAAO,EAC9C,IAAM,UAAY,CACd,MAAO,mBAAmB,KAC1B,MAAO,WAAa,WAAW,UAC/B,QACA,KAAM,IACV,EAEA,GAAI,CAAC,UACD,MAAM,IAAI,MAAM,kGAAkG,EAEtH,IAAM,YAAc,CAChB,KAAM,QAAQ,KAAK,MAAQ,QAC3B,MAAO,QAAQ,KAAK,OAAS,qBAC7B,aAAc,QAAQ,KAAK,cAAgB,EAC3C,MAAO,QAAQ,KAAK,OAAS,EAC7B,SAAU,QAAQ,KAAK,UAAY,QACnC,eAAgB,QAAQ,KAAK,gBAAkB,KAC/C,aAAc,QAAQ,KAAK,cAAgB,IAC/C,EAYA,GAXI,OAAO,QAAQ,MAAS,UAAY,QAAQ,KAAK,OAAS,SAC1D,QAAQ,KAAO,aAEnB,QAAQ,EAAI,QAAQ,IAAM,QAAQ,IAAM,EAAI,EAAI,GAChD,QAAQ,EAAI,QAAQ,IAAM,QAAQ,IAAM,EAAI,EAAI,GAChD,QAAQ,EAAI,QAAQ,IAAM,QAAQ,IAAM,EAAI,EAAI,GAChD,QAAQ,EAAI,QAAQ,IAAM,QAAQ,IAAM,EAAI,EAAI,GAChD,QAAQ,WAAa,QAAQ,WACvB,kBAAkB,QAAQ,UAAU,EACpC,SAAS,OAAO,cAAc,OAAO,KAAO,IAAI,QAAU,mBAAmB,IAAI,EAAE,MAAM,GAE3F,OAAO,QAAQ,MAAS,SAAU,CAClC,IAAM,QAAU,YAChB,QAAQ,MAAQ,OAAO,QAAQ,IAAI,EACnC,QAAQ,KAAO,OACnB,CACI,OAAO,QAAQ,UAAa,WAC5B,QAAQ,KAAK,MAAQ,QAAQ,UAC7B,OAAO,QAAQ,UAAa,WAC5B,QAAQ,KAAK,SAAW,QAAQ,UAChC,OAAO,QAAQ,UAAa,WAC5B,QAAQ,KAAK,eAAiB,QAAQ,UACtC,OAAO,QAAQ,UAAa,WAC5B,QAAQ,KAAK,aAAe,QAAQ,UAExC,oBAAoB,OAAQ,SAAS,EAErC,OAAO,cAAc,KAAK,SAAS,CACvC,CAWA,SAAS,mBAAmB,OAAQ,UAAW,QAAS,YAAa,WAAY,SAAU,SAAU,CACjG,IAAM,OAAS,CAAC,MAAM,EAChB,IAAM,SAAW,OAAO,SAAY,SAAW,QAAU,CAAC,EAChE,IAAI,WAAa,IAAI,WAAa,kBAAkB,IAAI,UAAU,EAAI,SAAS,OAAO,cAAc,OAAO,KAAO,IAAI,QAAU,mBAAmB,KAAK,EAAE,MAAM,GAEhK,CAEI,GAAI,YAAc,MAAQ,UAAU,SAAW,GAAK,CAAC,MAAM,QAAQ,SAAS,EACxE,MAAM,IAAI,MAAM,kIAAoI,EAGxJ,GAAI,CAAC,UAAU,CAAC,GAAK,CAAC,MAAM,QAAQ,UAAU,CAAC,CAAC,EAC5C,MAAM,IAAI,MAAM,0LAAsM,CAS9N,CAGA,IAAM,QAAU,CAAC,EACjB,UAAU,QAAQ,KAAO,CACrB,IAAM,OAAS,CAAC,EACZ,MAAM,QAAQ,GAAG,EACjB,IAAI,QAAS,MAAS,CAElB,IAAM,QAAU,CACZ,MAAO,mBAAmB,UAC1B,KAAM,GACN,QAAS,OAAO,MAAS,UAAY,KAAK,QAAU,KAAK,QAAU,CAAC,CACxE,EAEI,OAAO,MAAS,UAAY,OAAO,MAAS,SAC5C,QAAQ,KAAO,KAAK,SAAS,EACxB,KAAK,OAEN,OAAO,KAAK,MAAS,UAAY,OAAO,KAAK,MAAS,SACtD,QAAQ,KAAO,KAAK,KAAK,SAAS,EAC7B,KAAK,OACV,QAAQ,KAAO,KAAK,MAEpB,KAAK,SAAW,OAAO,KAAK,SAAY,WACxC,QAAQ,QAAU,KAAK,UAG/B,QAAQ,QAAQ,OAAS,QAAQ,QAAQ,QAAU,IAAI,QAAU,CAAC,CAAE,KAAM,MAAO,EAAG,CAAE,KAAM,MAAO,EAAG,CAAE,KAAM,MAAO,EAAG,CAAE,KAAM,MAAO,CAAC,EACxI,IAAM,WAAa,QAAQ,QAAQ,OAE/B,CAAC,MAAM,QAAQ,UAAU,GAAK,OAAO,YAAe,WACpD,QAAQ,QAAQ,OAAS,CAAC,WAAY,WAAY,WAAY,UAAU,GAEvE,QAAQ,QAAQ,OAAO,CAAC,IACzB,QAAQ,QAAQ,OAAO,CAAC,EAAI,CAAE,KAAM,MAAO,GAC1C,QAAQ,QAAQ,OAAO,CAAC,IACzB,QAAQ,QAAQ,OAAO,CAAC,EAAI,CAAE,KAAM,MAAO,GAC1C,QAAQ,QAAQ,OAAO,CAAC,IACzB,QAAQ,QAAQ,OAAO,CAAC,EAAI,CAAE,KAAM,MAAO,GAC1C,QAAQ,QAAQ,OAAO,CAAC,IACzB,QAAQ,QAAQ,OAAO,CAAC,EAAI,CAAE,KAAM,MAAO,GAE9B,CAAC,EAAG,EAAG,EAAG,CAAC,EACnB,QAAQ,KAAO,CACpB,QAAQ,QAAQ,OAAO,GAAG,EAAI,CAC1B,KAAM,QAAQ,QAAQ,OAAO,GAAG,EAAE,MAAQ,gBAAgB,KAC1D,MAAO,QAAQ,QAAQ,OAAO,GAAG,EAAE,OAAS,gBAAgB,MAC5D,GAAI,OAAO,QAAQ,QAAQ,OAAO,GAAG,EAAE,IAAO,SAAW,QAAQ,QAAQ,OAAO,GAAG,EAAE,GAAK,gBAAgB,EAC9G,CACJ,CAAC,EAED,OAAO,KAAK,OAAO,CACvB,CAAC,GAGD,QAAQ,IAAI,qFAAqF,EACjG,QAAQ,IAAI,GAAG,GAEnB,QAAQ,KAAK,MAAM,CACvB,CAAC,EAED,IAAI,EAAI,oBAAoB,IAAI,IAAM,IAAI,IAAM,EAAI,EAAI,IAAM,GAAI,IAAK,UAAU,EACjF,IAAI,EAAI,oBAAoB,IAAI,IAAM,IAAI,IAAM,EAAI,EAAI,IAAM,GAAI,IAAK,UAAU,EAC7E,IAAI,IACJ,IAAI,EAAI,oBAAoB,IAAI,EAAG,IAAK,UAAU,GACtD,IAAI,SAAW,IAAI,UAAY,cAC/B,IAAI,OAAS,IAAI,SAAW,GAAK,IAAI,OAAS,IAAI,OAAS,mBACvD,OAAO,IAAI,QAAW,WACtB,IAAI,OAAS,CAAC,OAAO,IAAI,MAAM,EAAG,OAAO,IAAI,MAAM,EAAG,OAAO,IAAI,MAAM,EAAG,OAAO,IAAI,MAAM,CAAC,GAE5F,KAAK,UAAU,CAAE,OAAiB,CAAC,EAAE,QAAQ,WAAW,IAAM,KACzD,IAAI,QACL,IAAI,MAAQ,IAAI,OAAS,iBAE7B,OAAO,IAAI,QAAW,UACtB,QAAQ,KAAK,2EAA6E,EAC1F,IAAI,OAAS,MAER,MAAM,QAAQ,IAAI,MAAM,GAC7B,CAAC,EAAG,EAAG,EAAG,CAAC,EAAE,QAAQ,KAAO,CACxB,IAAI,OAAO,GAAG,EAAI,IAAI,OAAO,GAAG,EAC1B,CAAE,KAAM,IAAI,OAAO,GAAG,EAAE,MAAQ,gBAAgB,KAAM,MAAO,IAAI,OAAO,GAAG,EAAE,OAAS,gBAAgB,MAAO,GAAI,IAAI,OAAO,GAAG,EAAE,IAAM,gBAAgB,EAAG,EAC1J,CAAE,KAAM,MAAO,CACzB,CAAC,EAEL,IAAI,SAAW,OAAO,IAAI,UAAa,UAAY,IAAI,SAAW,GAClE,IAAI,qBAAuB,OAAO,IAAI,sBAAyB,UAAY,IAAI,qBAAuB,GACtG,IAAI,mBAAqB,OAAO,IAAI,mBAAuB,KAAe,CAAC,MAAM,OAAO,IAAI,kBAAkB,CAAC,EAAI,OAAO,IAAI,kBAAkB,EAAI,EACpJ,IAAI,mBAAqB,OAAO,IAAI,mBAAuB,KAAe,CAAC,MAAM,OAAO,IAAI,kBAAkB,CAAC,EAAI,OAAO,IAAI,kBAAkB,EAAI,EAChJ,IAAI,qBACA,IAAI,mBAAqB,EACzB,IAAI,mBAAqB,EACpB,IAAI,mBAAqB,KAC9B,IAAI,mBAAqB,KAKjC,IAAI,eAAiB,oBAoBrB,GAlBI,aAAe,OAAO,YAAY,QAAY,MAC1C,MAAM,QAAQ,YAAY,OAAO,EACjC,eAAiB,YAAY,QACvB,MAAM,OAAO,YAAY,OAAO,CAAC,IACvC,eAAiB,CAAC,OAAO,YAAY,OAAO,EAAG,OAAO,YAAY,OAAO,EAAG,OAAO,YAAY,OAAO,EAAG,OAAO,YAAY,OAAO,CAAC,IAcxI,IAAI,KAAM,CACV,IAAM,eAAiB,QAAQ,CAAC,EAAE,OAAO,CAAC,SAAU,IAAM,CACtD,IAAI,GACJ,MAAM,MAA2C,GAAE,WAAa,MAAQ,KAAO,SAAkB,GAAG,SAAY,OAAO,EAAE,QAAQ,SAAY,SACzI,UAAY,EAAE,QAAQ,QAGtB,UAAY,EAET,QACX,EAAG,CAAC,EACA,OAAO,IAAI,MAAS,UAAY,OAAO,IAAI,MAAS,UAK/C,IAAI,MAAQ,MAAM,QAAQ,IAAI,IAAI,GAAK,IAAI,KAAK,SAAW,GAAK,eAAiB,GAHtF,IAAI,EAAI,KAAK,MAAM,OAAO,IAAI,IAAI,EAAI,cAAc,EACpD,IAAI,KAAO,MAON,IAAI,MAAQ,MAAM,QAAQ,IAAI,IAAI,GAAK,IAAI,KAAK,SAAW,iBAEhE,QAAQ,KAAK,0GAA0G,EACvH,IAAI,KAAO,KAEnB,MACS,IAAI,EACT,IAAI,EAAI,oBAAoB,IAAI,EAAG,IAAK,UAAU,EAGlD,IAAI,EAAI,KAAK,MAAM,WAAW,OAAS,IAAM,eAAe,CAAC,EAAI,eAAe,CAAC,CAAC,EAGlF,IAAI,GAAK,IAAI,EAAI,KACjB,IAAI,EAAI,SAAS,IAAI,CAAC,GACtB,IAAI,GAAK,IAAI,EAAI,KACjB,IAAI,EAAI,SAAS,IAAI,CAAC,GACtB,IAAI,GAAK,OAAO,IAAI,GAAM,UAAY,IAAI,EAAI,KAC9C,IAAI,EAAI,SAAS,IAAI,CAAC,GACtB,IAAI,GAAK,OAAO,IAAI,GAAM,UAAY,IAAI,EAAI,KAC9C,IAAI,EAAI,SAAS,IAAI,CAAC,GAE1B,QAAQ,QAAQ,KAAO,CACnB,IAAI,QAAQ,CAAC,KAAM,MAAQ,CASnB,OAAO,MAAS,UAAY,OAAO,MAAS,SAE5C,IAAI,GAAG,EAAI,CAAE,MAAO,mBAAmB,UAAW,KAAM,OAAO,IAAI,GAAG,CAAC,EAAG,QAAS,GAAI,EAElF,OAAO,MAAS,WAEjB,OAAO,KAAK,MAAS,SACrB,IAAI,GAAG,EAAE,KAAO,IAAI,GAAG,EAAE,KAAK,SAAS,GAClC,OAAO,KAAK,KAAS,KAAe,KAAK,OAAS,QACvD,IAAI,GAAG,EAAE,KAAO,IAEpB,IAAI,GAAG,EAAE,QAAU,KAAK,SAAW,CAAC,EAEpC,IAAI,GAAG,EAAE,MAAQ,mBAAmB,UAO5C,CAAC,CACL,CAAC,EAED,IAAM,mBAAqB,CAAC,EAG5B,OAAI,KAAO,CAAC,IAAI,UAEZ,oBAAoB,OAAQ,OAAO,EAEnC,OAAO,cAAc,KAAK,CACtB,MAAO,mBAAmB,MAC1B,WAAY,QACZ,QAAS,OAAO,OAAO,CAAC,EAAG,GAAG,CAClC,CAAC,IAGG,IAAI,uBACJ,IAAI,mBAAqB,QAAQ,OAAO,CAAC,KAAM,MAAQ,IAAM,IAAI,kBAAkB,GAEvF,sBAAsB,QAAS,IAAK,WAAY,WAAW,EAAE,QAAQ,CAAC,MAAO,MAAQ,CAE5E,SAAS,OAAO,UAAY,GAAG,GAChC,OAAO,KAAK,SAAS,CAAE,WAAuE,aAAY,OAAU,IAAK,CAAC,CAAC,EAE3H,IAAM,IACN,IAAI,EAAI,SAAS,IAAI,qBAAuB,IAAI,gBAAkB,eAAe,CAAC,CAAC,GAEvF,CACI,IAAM,SAAW,SAAS,OAAO,UAAY,GAAG,EAChD,IAAI,SAAW,GAEf,oBAAoB,SAAU,MAAM,IAAI,EAExC,SAAS,SAAS,MAAM,KAAM,OAAO,OAAO,CAAC,EAAG,GAAG,CAAC,EAEhD,IAAM,GACN,mBAAmB,KAAK,QAAQ,CACxC,CACJ,CAAC,GAEE,kBACX,CASA,SAAS,kBAAkB,OAAQ,KAAM,KAAM,cAAe,CAC1D,IAAM,UAAY,CACd,MAAO,cAAgB,mBAAmB,YAAc,mBAAmB,KAC3E,MAAoD,MAAK,OAAU,WAAW,UAC9E,KAAM,CAAC,MAAQ,KAAK,SAAW,EAAI,CAAC,CAAE,KAAM,GAAI,QAAS,IAAK,CAAC,EAAI,KACnE,QAAS,MAAQ,CAAC,CACtB,EACA,SAAS,UAAU,SAAU,CAEzB,CAUI,GARK,SAAS,cACV,SAAS,MAAQ,SAAS,OAAS,UAAU,QAAQ,OAAS,OAAO,OAAS,iBAG9E,SAAS,aAAe,iBACxB,SAAS,OAAS,SAAS,QAAU,IAGrC,SAAS,aAAe,OAAO,cAAgB,OAAO,aAAa,cAAe,CAClF,IAAM,UAAY,OAAO,aAAa,cAAc,OAAO,MAAQ,KAAK,QAAU,eAAiB,KAAK,SAAW,KAAK,QAAQ,aAAe,KAAK,QAAQ,cAAgB,SAAS,WAAW,EAAE,CAAC,EACzI,WAAU,UAChE,SAAW,OAAO,OAAO,OAAO,OAAO,CAAC,EAAG,QAAQ,EAAG,UAAU,OAAO,EAC/E,CAMA,GAJA,SAAS,WAAa,SAAS,WACzB,kBAAkB,SAAS,UAAU,EACrC,QAAQ,OAAO,cAAc,OAAO,KAAO,IAAI,QAAU,mBAAmB,IAAI,EAAE,MAAM,GAE1F,SAAS,QAAU,WAAW,KAAM,CAEpC,IAAM,YAAc,CAChB,KAAM,SAAS,KAAK,MAAQ,QAC5B,MAAO,SAAS,KAAK,OAAS,qBAC9B,aAAc,SAAS,KAAK,cAAgB,EAC5C,MAAO,SAAS,KAAK,OAAS,EAC9B,SAAU,SAAS,KAAK,UAAY,QACpC,eAAgB,SAAS,KAAK,gBAAkB,KAChD,aAAc,SAAS,KAAK,cAAgB,IAChD,EAIA,GAHI,OAAO,SAAS,MAAS,WACzB,SAAS,KAAO,aAEhB,OAAO,SAAS,MAAS,SAAU,CACnC,IAAM,QAAU,YACZ,OAAO,SAAS,MAAS,WACzB,QAAQ,MAAQ,SAAS,MAE7B,SAAS,KAAO,OACpB,CACI,OAAO,SAAS,UAAa,WAC7B,SAAS,KAAK,MAAQ,SAAS,UAC/B,OAAO,SAAS,UAAa,WAC7B,SAAS,KAAK,SAAW,SAAS,UAClC,OAAO,SAAS,UAAa,WAC7B,SAAS,KAAK,eAAiB,SAAS,UACxC,OAAO,SAAS,UAAa,WAC7B,SAAS,KAAK,aAAe,SAAS,SAC9C,CAEA,SAAS,KAAO,SAAS,MAAQ,CAAC,EAClC,SAAS,YAAc,SAAS,aAAe,CAAC,MAAM,SAAS,WAAW,EAAI,SAAS,YAAc,KACrG,SAAS,oBAAsB,SAAS,qBAAuB,CAAC,MAAM,SAAS,mBAAmB,EAAI,SAAS,oBAAsB,KAErI,SAAS,UAAY,SAAS,WAAa,CAAC,EAC5C,SAAS,UAAU,QAAU,SAAS,SAAW,GACjD,SAAS,UAAU,OAAU,SAAS,YAAgC,KAAlB,YAAY,IAChE,SAAS,UAAU,KAAO,SAAS,MAAQ,KAC3C,SAAS,UAAU,KAAO,OAAO,SAAS,MAAS,UAAY,SAAS,KAAO,IAG1E,SAAS,OAAS,CAAC,MAAM,OAAO,SAAS,KAAK,CAAC,GAAM,SAAS,QAAU,KACzE,SAAS,UAAU,KAAO,SAAS,SAAS,KAAK,EACjD,SAAS,UAAU,KAAO,SAAS,SAAS,KAAK,EACjD,SAAS,UAAU,KAAO,SAAS,SAAS,KAAK,EACjD,SAAS,UAAU,KAAO,SAAS,SAAS,KAAK,GAGjD,OAAO,SAAS,WAAc,WAAa,SAAS,YAAc,KAClE,SAAS,UAAY,CAAE,MAAO,KAAM,EAC5C,CAGI,OAAK,SAAS,OAAS,IAAI,YAAY,EAAE,QAAQ,GAAG,IAAM,EACtD,SAAS,UAAU,MAAQ,YAAY,QACjC,SAAS,OAAS,IAAI,YAAY,EAAE,QAAQ,GAAG,IAAM,EAC3D,SAAS,UAAU,MAAQ,YAAY,MACjC,SAAS,OAAS,IAAI,YAAY,EAAE,QAAQ,GAAG,IAAM,EAC3D,SAAS,UAAU,MAAQ,YAAY,OACjC,SAAS,OAAS,IAAI,YAAY,EAAE,QAAQ,GAAG,IAAM,IAC3D,SAAS,UAAU,MAAQ,YAAY,UACtC,SAAS,QAAU,IAAI,YAAY,EAAE,QAAQ,GAAG,IAAM,EACvD,SAAS,UAAU,OAAS,YAAY,GAClC,SAAS,QAAU,IAAI,YAAY,EAAE,QAAQ,GAAG,IAAM,EAC5D,SAAS,UAAU,OAAS,YAAY,KAClC,SAAS,QAAU,IAAI,YAAY,EAAE,QAAQ,GAAG,IAAM,IAC5D,SAAS,UAAU,OAAS,YAAY,GAGhD,qBAAqB,SAAS,MAAM,EAC7B,QACX,CAEA,UAAU,QAAU,UAAU,UAAU,OAAO,EAE/C,UAAU,KAAK,QAAQ,MAAS,KAAK,QAAU,UAAU,KAAK,SAAW,CAAC,CAAC,CAAE,EAE7E,oBAAoB,OAAQ,UAAU,MAAQ,EAAE,EAEhD,OAAO,cAAc,KAAK,SAAS,CACvC,CAKA,SAAS,8BAA8B,MAAO,EAEzC,MAAM,aAAa,eAAiB,CAAC,GAAG,QAAQ,gBAAkB,CAC3D,eAAe,QAAU,mBAAmB,aAIxC,MAAM,cAAc,OAAO,UAAY,SAAS,SAAW,SAAS,QAAQ,cAAgB,eAAe,QAAQ,WAAW,EAAE,SAAW,GAC3I,kBAAkB,MAAO,CAAC,CAAE,KAAM,EAAG,CAAC,EAAG,eAAe,QAAS,EAAK,CAGlF,CAAC,CACL,CAOA,SAAS,wBAAwB,MAAO,OAAQ,CAC5C,IAAI,GAmBJ,GAjBI,OAAO,OACF,OAAO,aACR,OAAO,WAAa,CAAC,GACrB,OAAO,OAAO,MAAS,SACvB,OAAO,WAAW,MAAQ,OAAO,MAE7B,OAAO,KAAK,OACZ,OAAO,WAAW,KAAO,OAAO,KAAK,MACrC,OAAO,KAAK,OACZ,OAAO,WAAW,KAAO,OAAO,KAAK,MACrC,OAAO,KAAK,MACZ,OAAO,WAAW,KAAO,OAAO,KAAK,OAG5C,MAAK,OAAO,cAAgB,MAAQ,KAAO,SAAkB,GAAG,OACjE,OAAO,WAAW,MAAQ,OAAO,WAAW,MAE5C,QAAU,MAAM,MAAQ,MAAM,MAAO,CAErC,MAAM,KAAO,MAAM,MAAQ,iBAC3B,IAAI,YAAc,MAAM,KAAK,MAAM,GAAG,EAAE,IAAI,GAAK,OAAO,MAAM,GAAG,EAAE,CAAC,EAChE,aAAe,QACf,WAAa,QACjB,OAAO,WAAa,OAAO,YAAc,CAAC,EAC1C,IAAM,QAAU,OAAO,WAAW,OAAS,EAE3C,OAAO,WAAW,KAAK,CACnB,KAAM,MAAM,KACZ,KAAM,mBAAmB,MACzB,KAAM,WACN,KAAM,MAAM,MAAQ,KACpB,IAAK,QACL,OAAQ,aAAa,OAAO,OAAS,IAAI,QAAQ,QAAS,GAAG,CAAC,UAAU,OAAO,WAAW,OAAS,CAAC,IAAI,UAAU,EACtH,CAAC,EACD,OAAO,YAAc,OACzB,CACJ,CAMA,SAAS,oBAAoB,OAAQ,KAAM,QAAS,CAChD,IAAI,SAAW,CAAC,EAEZ,OAAO,MAAS,UAAY,OAAO,MAAS,WAGvC,MAAM,QAAQ,IAAI,EACvB,SAAW,KACN,OAAO,MAAS,WACrB,SAAW,CAAC,IAAI,GACpB,SAAS,QAAQ,CAACC,MAAM,MAAQ,CAK5B,GAHI,SAAW,QAAQ,GAAG,GAAK,QAAQ,GAAG,EAAE,YACxCA,MAAK,QAAU,OAAO,OAAO,OAAO,OAAO,CAAC,EAAGA,MAAK,OAAO,EAAG,QAAQ,GAAG,CAAC,GAE1E,MAAM,QAAQA,KAAI,EAAG,CACrB,IAAM,SAAW,CAAC,EAClBA,MAAK,QAAS,WAAc,CACpB,UAAU,SAAW,CAAC,UAAU,KAAK,SACrC,SAAS,KAAK,UAAU,OAAO,CAEvC,CAAC,EACD,oBAAoB,OAAQA,MAAM,QAAQ,CAC9C,SACS,MAAM,QAAQA,MAAK,IAAI,EAC5B,oBAAoB,OAAQA,MAAK,KAAM,SAAW,QAAQ,GAAG,EAAI,CAAC,QAAQ,GAAG,CAAC,EAAI,MAAS,UAEtFA,OAAQ,OAAOA,OAAS,UAAYA,MAAK,SAAWA,MAAK,QAAQ,WAAa,CAACA,MAAK,QAAQ,UAAU,KAC3G,GAAI,OAAOA,MAAK,QAAQ,WAAc,SAClC,QAAQ,IAAI,kGAAoG,UAE3G,CAACA,MAAK,QAAQ,UAAU,KAAO,CAACA,MAAK,QAAQ,UAAU,MAC5D,QAAQ,IAAI,sDAAwD,MAEnE,CACD,IAAM,MAAQ,YAAY,MAAM,EAChC,OAAO,MAAM,KAAK,CACd,KAAM,mBAAmB,UACzB,KAAMA,MAAK,QAAQ,UAAU,MAAQ,QAAU,QAC/C,IAAK,MACL,OAAQ,kBAAkBA,MAAK,QAAQ,UAAU,GAAG,GAAKA,MAAK,QAAQ,UAAU,MAAM,SAAS,CACnG,CAAC,EACDA,MAAK,QAAQ,UAAU,KAAO,KAClC,MAEKA,OAAQ,OAAOA,OAAS,UAAYA,MAAK,SAAWA,MAAK,QAAQ,WAAaA,MAAK,QAAQ,UAAU,MAEtG,OAAO,MAAM,OAAO,KAAO,IAAI,MAAQA,MAAK,QAAQ,UAAU,IAAI,EAAE,SAAW,GAC/E,OAAO,MAAM,KAAK,CACd,KAAM,mBAAmB,UACzB,KAAMA,MAAK,QAAQ,UAAU,MAAQ,QAAU,QAC/C,IAAKA,MAAK,QAAQ,UAAU,KAC5B,OAAQ,kBAAkBA,MAAK,QAAQ,UAAU,GAAG,GAAKA,MAAK,QAAQ,UAAU,MAAM,SAAS,CACnG,CAAC,CAGb,CAAC,EACL,CAqKA,SAAS,qBAAqB,YAAa,IAAK,CAC5C,OAAO,UAAU,KAAM,OAAQ,OAAQ,WAAa,CAChD,IAAM,KAAO,YAAY,KACzB,OAAO,MAAM,IAAI,QAAQ,CAAC,QAAS,SAAW,CAC1C,IAAI,GAAI,GACR,IAAM,SAAW,IAAI,aAAAC,QACf,eAAiB,KAAK,OAAS,GAAK,EAAI,EACxC,oBAAsB,IAAM,GAAK,KAAK,CAAC,KAAO,MAAQ,KAAO,OAAS,OAAS,GAAG,UAAY,MAAQ,KAAO,OAAS,OAAS,GAAG,QAAU,EAElJ,SAAS,OAAO,OAAO,EACvB,SAAS,OAAO,UAAU,EAC1B,SAAS,OAAO,UAAU,EAC1B,SAAS,OAAO,WAAW,EAC3B,SAAS,OAAO,UAAU,EAC1B,SAAS,OAAO,eAAe,EAC/B,SAAS,OAAO,qBAAqB,EAGjC,SAAS,KAAK,sBAAuB;AAAA,CAWrB,EAChB,SAAS,KAAK,cAAe;AAAA,CAIL,EACxB,SAAS,KAAK,mBAAoB;AAAA,CAOb,EACrB,SAAS,KAAK,oBAAqB,udAI/B,IAAI,KAAK,EAAE,YAAY,EACvB,iEAEA,IAAI,KAAK,EAAE,YAAY,EACvB,yCACsB,EAC1B,SAAS,KAAK,6BAA8B,0rBAMtB,EACtB,SAAS,KAAK,gBAAiB;AAAA,CAEqM,EACpO,SAAS,KAAK,sBAAuB,orNAAomN,EACzoN,SAAS,KAAK,kBAAmB;AAAA,CAOd,EACnB,SAAS,KAAK,sCAAuC;AAAA,CAG7B,EAG5B,CAEI,IAAI,iBAAmB,0DACvB,GAAI,YAAY,KAAK,QAAU,WAAW,QAAU,YAAY,KAAK,QAAU,WAAW,SACtF,kBAAoB,iFAAiF,aAAa,kBAAkB,aAAa,aAE5I,YAAY,KAAK,QAAU,WAAW,QAC3C,kBAAoB,iFAAiF,KAAK,MAAM,kBAAkB,KAAK,MAAM,aAExI,kBAAmB,CACxB,IAAI,SAAW,KAAK,OACpB,KAAK,CAAC,EAAE,OAAO,QAAQ,UAAa,UAAY,SAAS,OAAO,OAAS,OAAS,QAAU,EAAE,EAAE,MAAO,EACvG,kBAAoB,iFAAiF,QAAQ,kBAAkB,QAAQ,KACvI,kBAAoB,eACxB,KACK,CAED,IAAM,SAAW,KAAK,OAAS,KAAK,CAAC,EAAE,OAAO,OAAS,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,OAAS,KAAK,CAAC,EAAE,OAAO,OAE3F,SAAW,KAAK,OAAS,KAAK,CAAC,EAAE,OAAO,OAAS,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,OAAS,EAElF,kBAAoB,iFAAiF,QAAQ,kBAAkB,QAAQ,KAEvI,kBAAoB,uCACxB,CAEI,YAAY,KAAK,QAAU,WAAW,QAAU,YAAY,KAAK,QAAU,WAAW,SACtF,KAAK,QAAQ,CAAC,QAAS,MAAQ,CACvB,MAAQ,EACR,kBAAoB,0BAEpB,kBAAoB,UAAU,kBAAkB,QAAQ,MAAQ,SAAS,GAAG,EAAE,CAAC,YAC/E,kBAAoB,UAAU,kBAAkB,OAAO,GAAG,EAAE,CAAC,YAErE,CAAC,EAGD,KAAK,QAAQ,SAAW,CACpB,kBAAoB,UAAU,mBAAmB,QAAQ,MAAQ,KAAK,QAAQ,SAAU,UAAU,CAAC,CAAC,WACxG,CAAC,EAGD,YAAY,KAAK,QAAU,WAAW,QAAU,YAAY,KAAK,QAAU,WAAW,UAAY,YAAY,KAAK,QAAU,WAAW,SAExI,KAAK,CAAC,EAAE,OACH,MAAM,EACN,QAAQ,EACR,QAAQ,aAAe,CACxB,YACK,OAAO,OAAS,OAAS,QAAU,EAAE,EACrC,QAAQ,OAAS,CAClB,kBAAoB,UAAU,kBAAkB,KAAK,CAAC,WAC1D,CAAC,CACL,CAAC,EAGL,kBAAoB;AAAA,EACpB,SAAS,KAAK,uBAAwB,gBAAgB,CAC1D,CAEA,CACI,IAAI,YAAc,0DAClB,GAAI,YAAY,KAAK,QAAU,WAAW,QAAU,YAAY,KAAK,QAAU,WAAW,SAAU,CAChG,aAAe,8HAA8H,gBAAgB,aAAa,CAAC,GAAG,aAAa,wBAC3L,aAAe,wBAAwB,aAAa,KACpD,IAAI,UAAY,EAChB,KAAK,QAAQ,CAAC,IAAK,MAAQ,CACnB,MAAQ,EACR,aAAe,oBAAoB,IAAM,CAAC,uBAG1C,aAAe,oBAAoB,IAAM,SAAS,WAAW,IAAI,IAAI,MACrE,YACA,aAAe,oBAAoB,IAAM,SAAS,eAAe,GAAG,MAE5E,CAAC,CACL,MACS,YAAY,KAAK,QAAU,WAAW,SAC3C,aAAe,8HAA8H,gBAAgB,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,OAAO,OAAS,CAAC,wBACrM,aAAe,wBAAwB,KAAK,MAAM,KAClD,KAAK,QAAQ,CAAC,KAAM,MAAQ,CACxB,aAAe,oBAAoB,IAAM,CAAC,WAAW,MAAQ,EAAI,WAAa,UAAU,GAAG,GAAG,KAClG,CAAC,IAGD,aAAe,8HAA8H,gBAAgB,KAAK,OAAS,KAAK,CAAC,EAAE,OAAO,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,OAAS,CAAC,yBAChO,aAAe,wBAAwB,KAAK,OAAS,KAAK,CAAC,EAAE,OAAO,MAAM,KAC1E,KAAK,CAAC,EAAE,OAAO,QAAQ,CAAC,aAAc,MAAQ,CAC1C,aAAe,oBAAoB,IAAM,CAAC,iBAAiB,IAAM,CAAC,KACtE,CAAC,EACD,KAAK,QAAQ,CAAC,IAAK,MAAQ,CACvB,aAAe,oBAAoB,IAAM,KAAK,CAAC,EAAE,OAAO,OAAS,CAAC,WAAW,kBAAkB,IAAI,IAAI,CAAC,KAC5G,CAAC,GAEL,aAAe,kBACf,aAAe,oGACf,aAAe,WACf,SAAS,KAAK,uBAAwB,WAAW,CACrD,CAEA,CACI,IAAI,YAAc,0DAclB,GAbA,aACI,oUACA,YAAY,KAAK,QAAU,WAAW,QAAU,YAAY,KAAK,QAAU,WAAW,SACtF,aAAe,sBAAsB,gBAAgB,aAAa,CAAC,GAAG,KAAK,CAAC,EAAE,OAAO,OAAS,CAAC,MAE1F,YAAY,KAAK,QAAU,WAAW,QAC3C,aAAe,sBAAsB,gBAAgB,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,OAAO,OAAS,CAAC,MAG7F,aAAe,sBAAsB,gBAAgB,KAAK,OAAS,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,OAAO,OAAS,CAAC,MAErG,aAAe,6HACf,aAAe,2DACX,YAAY,KAAK,QAAU,WAAW,QAAU,YAAY,KAAK,QAAU,WAAW,SAAU,CAehG,aAAe,cAEf,aAAe,uBAAuB,aAAa,KACnD,aAAe,+BACf,QAAS,IAAM,EAAG,IAAM,cAAe,MACnC,aAAe,SAAS,gBAAgB,IAAM,CAAC,CAAC,eAAe,GAAG,WAEtE,aAAe,SAEf,KAAK,CAAC,EAAE,OAAO,QAAQ,CAAC,IAAK,MAAQ,CAEjC,aAAe,WAAW,IAAM,CAAC,cAAc,aAAa,KAC5D,aAAe,UAAU,IAAM,CAAC,QAAQ,GAAG,WAE3C,IAAI,UAAY,EAChB,QAAS,IAAM,EAAG,IAAM,KAAK,OAAQ,MAEjC,aAAe,SAAS,gBAAgB,SAAS,CAAC,GAAG,IAAM,CAAC,QAAQ,KAAK,GAAG,EAAE,OAAO,GAAG,GAAK,EAAE,WAC/F,YAEA,aAAe,SAAS,gBAAgB,SAAS,CAAC,GAAG,IAAM,CAAC,QAAQ,KAAK,GAAG,EAAE,MAAM,GAAG,GAAK,EAAE,WAC9F,YAEJ,aAAe,QACnB,CAAC,CACL,SACS,YAAY,KAAK,QAAU,WAAW,QAAS,CAoBpD,aAAe,cAEf,aAAe,uBAAuB,KAAK,MAAM,KACjD,QAAS,IAAM,EAAG,IAAM,KAAK,OAAQ,MACjC,aAAe,SAAS,gBAAgB,IAAM,CAAC,CAAC,eAAe,GAAG,WAEtE,aAAe,SAEf,KAAK,CAAC,EAAE,OAAO,QAAQ,CAAC,IAAK,MAAQ,CAEjC,aAAe,WAAW,IAAM,CAAC,cAAc,KAAK,MAAM,KAC1D,aAAe,UAAU,IAAM,CAAC,QAAQ,GAAG,WAE3C,QAAS,IAAM,EAAG,IAAM,KAAK,OAAQ,MACjC,aAAe,SAAS,gBAAgB,IAAM,CAAC,CAAC,GAAG,IAAM,CAAC,QAAQ,KAAK,GAAG,EAAE,OAAO,GAAG,GAAK,KAAK,GAAG,EAAE,OAAO,GAAG,IAAM,EAAI,KAAK,GAAG,EAAE,OAAO,GAAG,EAAI,EAAE,WAEvJ,aAAe,QACnB,CAAC,CACL,SAGI,aAAe,cAkBV,kBAyBA,CAED,aAAe,uBAAuB,KAAK,OAAS,KAAK,CAAC,EAAE,OAAO,MAAM,KACzE,QAAS,IAAM,EAAG,IAAM,KAAK,CAAC,EAAE,OAAO,OAAQ,MAC3C,aAAe,SAAS,gBAAgB,IAAM,CAAC,CAAC,wBAEpD,QAAS,IAAM,KAAK,CAAC,EAAE,OAAO,OAAS,EAAG,IAAM,KAAK,OAAS,KAAK,CAAC,EAAE,OAAO,OAAS,EAAG,MACrF,aAAe,SAAS,gBAAgB,IAAM,KAAK,CAAC,EAAE,OAAO,MAAM,CAAC,eAAe,GAAG,WAE1F,aAAe,SA4Df,IAAM,QAAU,KAAK,OACf,QAAU,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,OAC5B,QAAU,KAAK,CAAC,EAAE,OAAO,OAE/B,QAAS,IAAM,EAAG,IAAM,QAAS,MAAO,CAEpC,aAAe,WAAW,IAAM,CAAC,cAAc,QAAU,OAAO,KAGhE,IAAI,UAAY,QACV,eAAiB,KAAK,CAAC,EAAE,OAAO,MAAM,EAAE,QAAQ,EACtD,eAAe,QAAQ,CAAC,YAAa,MAAQ,CAQzC,GADiB,YAAY,GAAG,EAClB,CACV,IAAM,WAAa,MAAQ,EAAI,EAAI,eAAe,IAAM,CAAC,EAAE,OAAO,OAAS,OAAS,QAAU,EAAE,EAAE,OAClG,WAAa,WACb,aAAe,SAAS,gBAAgB,IAAM,EAAI,GAAG,CAAC,GAAG,IAAM,CAAC,cAAc,SAAS,UAC3F,CACJ,CAAC,EAGD,QAAS,IAAM,EAAG,IAAM,QAAS,MAC7B,aAAe,SAAS,gBAAgB,QAAU,IAAM,CAAC,CAAC,GAAG,IAAM,CAAC,QAAQ,KAAK,GAAG,EAAE,OAAO,GAAG,GAAK,CAAC,WAG1G,aAAe,QACnB,CAGJ,KAjIwB,CAEpB,aAAe,uBAAuB,KAAK,OAAS,KAAK,CAAC,EAAE,OAAO,MAAM,KACzE,KAAK,CAAC,EAAE,OAAO,QAAQ,CAAC,aAAc,MAAQ,CAC1C,aAAe,SAAS,gBAAgB,IAAM,CAAC,CAAC,uBACpD,CAAC,EACD,QAAS,IAAM,EAAG,IAAM,KAAK,OAAQ,MACjC,aAAe,SAAS,gBAAgB,IAAM,EAAI,KAAK,CAAC,EAAE,OAAO,MAAM,CAAC,eAAe,IAAM,CAAC,WAElG,aAAe,SAEf,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAM,MAAQ,CACrC,aAAe,WAAW,IAAM,CAAC,cAAc,KAAK,OAAS,KAAK,CAAC,EAAE,OAAO,MAAM,KAElF,QAAS,KAAO,KAAK,CAAC,EAAE,OAAO,OAAS,EAAG,MAAQ,EAAG,OAClD,aAAe,SAAS,gBAAgB,KAAK,CAAC,EAAE,OAAO,OAAS,IAAI,CAAC,GAAG,IAAM,CAAC,WAC/E,aAAe,MAAM,KAAK,OAAS,IAAM,CAAC,OAC1C,aAAe,OAEnB,QAAS,IAAM,EAAG,IAAM,KAAK,OAAQ,MACjC,aAAe,SAAS,gBAAgB,KAAK,CAAC,EAAE,OAAO,OAAS,IAAM,CAAC,CAAC,GAAG,IAAM,CAAC,QAAQ,KAAK,GAAG,EAAE,OAAO,GAAG,GAAK,EAAE,WAEzH,aAAe,QACnB,CAAC,CACL,CA2GJ,aAAe,eAUf,aAAe,2FAMf,aAAe;AAAA,EACf,SAAS,KAAK,2BAA4B,WAAW,CACzD,CAEA,SACK,cAAc,CAAE,KAAM,QAAS,CAAC,EAChC,KAAK,SAAW,CAEjB,IAAI,KAAK,2CAA2C,YAAY,QAAQ,QAAS,QAAS,CAAE,OAAQ,EAAK,CAAC,EAE1G,IAAI,KAAK,oBAAsB,YAAY,SAAW,QAAS,wSAEkG,YAAY,QAAQ,0BAC/J,EACtB,IAAI,KAAK,cAAc,YAAY,QAAQ,GAAI,cAAc,WAAW,CAAC,EAEzE,QAAQ,EAAE,CACd,CAAC,EACI,MAAM,QAAU,CACjB,OAAO,MAAM,CACjB,CAAC,CACL,CAAC,CACL,CAAC,CACL,CAOA,SAAS,cAAc,IAAK,CACxB,IAAI,GAAI,GAAI,GAAI,GAChB,IAAI,OAAS,0DACT,qBAAuB,GAoE3B,GAhEI,QACI,gOACJ,QAAU,wBACV,QAAU,0BAA0B,IAAI,KAAK,UAAU,eAAiB,IAAM,GAAG,MACjF,QAAU,YAEN,IAAI,KAAK,WACT,QAAU,YAAY,CAClB,MAAO,IAAI,KAAK,OAAS,cACzB,MAAO,IAAI,KAAK,WAChB,SAAU,IAAI,KAAK,cACnB,SAAU,IAAI,KAAK,eAAiB,oBACpC,WAAY,IAAI,KAAK,WACrB,UAAW,IAAI,KAAK,UACpB,SAAU,IAAI,KAAK,SACnB,YAAa,IAAI,KAAK,WAC1B,EAAG,IAAI,KAAK,EAAG,IAAI,KAAK,CAAC,EACzB,QAAU,iCAIV,QAAU,gCAKV,IAAI,KAAK,QAAU,WAAW,QAC9B,QAAU,0BAA0B,IAAI,KAAK,OAAO,mBAAmB,IAAI,KAAK,OAAO,qBAAsB,IAAI,KAAK,UAAgB,EAAJ,CAAK,0BAA0B,IAAI,KAAK,cAAc,kBAE5L,QAAU,eAEN,IAAI,KAAK,QACT,QAAU,aACV,QAAU,oBACV,QAAU,mCACV,QAAU,2BACV,QAAU,2BACV,QAAU,gBAAkB,IAAI,KAAK,OAAO,GAAK,GAAK,OACtD,QAAU,gBAAkB,IAAI,KAAK,OAAO,GAAK,GAAK,OACtD,QAAU,gBAAkB,IAAI,KAAK,OAAO,GAAK,GAAK,OACtD,QAAU,gBAAkB,IAAI,KAAK,OAAO,GAAK,GAAK,OACtD,QAAU,qBACV,QAAU,eAGV,QAAU,cAId,MAAM,QAAQ,IAAI,KAAK,KAAK,EAC5B,IAAI,KAAK,MAAM,QAAQ,MAAQ,CAE3B,IAAM,QAAU,OAAO,OAAO,OAAO,OAAO,CAAC,EAAG,IAAI,IAAI,EAAG,KAAK,OAAO,EAEjE,UAAY,QAAQ,iBAAmB,wBAA0B,sBACjE,UAAY,QAAQ,iBAAmB,2BAA6B,yBAC1E,qBAAuB,sBAAwB,QAAQ,iBACvD,QAAU,cAAc,KAAK,KAAM,KAAK,KAAM,QAAS,UAAW,SAAS,CAC/E,CAAC,EAGD,QAAU,cAAc,IAAI,KAAK,MAAO,IAAI,KAAM,IAAI,KAAM,sBAAuB,wBAAwB,EAG3G,IAAI,KAAK,QAAU,WAAW,KAAO,IAAI,KAAK,QAAU,WAAW,SAAU,CAE7E,GAAI,IAAI,KAAK,SAAW,IAAI,KAAK,QAAQ,OAAS,GAAK,CAAC,qBACpD,MAAM,IAAI,MAAM,2DAA2D,EAE/E,GAAI,IAAI,KAAK,QAAS,CAClB,GAAI,CAAC,IAAI,KAAK,SAAW,IAAI,KAAK,QAAQ,SAAW,IAAI,KAAK,QAAQ,OAClE,MAAM,IAAI,MAAM,2DAA2D,EAE/E,QAAU,YAAY,OAAO,OAAO,OAAO,OAAO,CAAC,EAAG,IAAI,IAAI,EAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,EAAG,yBAA0B,qBAAqB,CAC1I,MAEI,QAAU,YAAY,IAAI,KAAM,yBAA0B,qBAAqB,EAE/E,IAAI,KAAK,SACT,QAAU,YAAY,OAAO,OAAO,OAAO,OAAO,CAAC,EAAG,IAAI,IAAI,EAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,EAAG,qBAAqB,EACxG,IAAI,KAAK,QAAQ,CAAC,IAClB,QAAU,YAAY,OAAO,OAAO,OAAO,OAAO,CAAC,EAAG,IAAI,IAAI,EAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,EAAG,uBAAuB,KAIlH,QAAU,YAAY,IAAI,KAAM,qBAAqB,EAEjD,IAAI,KAAK,QAAU,WAAW,QAC9B,QAAU,YAAY,IAAI,KAAM,uBAAwB,qBAAqB,IAI/E,MAAK,IAAI,QAAU,MAAQ,KAAO,SAAkB,GAAG,UAAc,MAAK,IAAI,QAAU,MAAQ,KAAO,SAAkB,GAAG,QAAQ,CAAC,KACvI,QAAU,YAAY,OAAO,OAAO,OAAO,OAAO,CAAC,EAAG,IAAI,IAAI,EAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,EAAG,2BAA4B,uBAAuB,EAElJ,CAII,OAAI,IAAI,KAAK,gBACT,QAAU,aACV,QAAU,4BAA6B,IAAI,KAAK,wBAA8B,EAAJ,CAAK,MAC/E,QAAU,4BAA6B,IAAI,KAAK,wBAA8B,EAAJ,CAAK,MAC/E,QAAU,4BAA6B,IAAI,KAAK,qBAA2B,EAAJ,CAAK,MAC5E,QAAU,4BAA6B,IAAI,KAAK,kBAAwB,EAAJ,CAAK,MACzE,QAAU,aACV,QAAU,kBACV,QAAU,sLACV,QAAU,qBACV,QAAU,cACV,QAAU,aACV,QAAU,2HACV,QAAU,mBACV,QAAU,WACV,QAAU,uBACV,QAAU,wBAAwB,KAAK,OAAO,IAAI,KAAK,mBAAqB,eAAiB,GAAG,CAAC,qEACjG,QAAU,0HACV,QAAU,wCACV,QAAU,qCACV,QAAU,qCACV,QAAU,qBACV,QAAU,gBACV,QAAU,mCACV,QAAU,YACV,QAAU,aACV,QAAU,eAEd,QAAU,aAEV,QAAY,MAAK,IAAI,KAAK,SAAS,QAAU,MAAQ,KAAO,SAAkB,GAAG,MAAS,qBAAqB,IAAI,KAAK,SAAS,IAAI,EAAI,cAEzI,QAAU,IAAI,KAAK,SAAS,OACtB,YAAY,SAAS,IAAI,KAAK,SAAS,OAAO,EAAE,CAAC,gBAAgB,qBAAqB,IAAI,KAAK,SAAS,OAAO,KAAK,CAAC,UACrH,2BAEN,QAAU,qBACV,QAAU,cACV,QAAU,gBAGN,IAAI,KAAK,aACT,QAAU,aACV,QAAU,qBAAuB,IAAI,KAAK,UAAY,MAEtD,QAAU,wBACN,IAAI,KAAK,gBAAkB,IAAI,KAAK,gBAAkB,IAAI,KAAK,eAC/D,QAAU,WACV,QAAU,gBACV,QAAU,kBACV,QAAU,UACV,QAAU,cACV,QAAU,IAAI,KAAK,eAAiB,iBAAiB,KAAK,MAAM,OAAO,IAAI,KAAK,cAAc,EAAI,GAAG,CAAC,KAAO,aACzG,IAAI,KAAK,cACT,QAAU,qBAAqB,IAAI,KAAK,WAAW,GACnD,IAAI,KAAK,iBACT,QAAU,sBAAwB,IAAI,KAAK,eAAiB,OAC5D,IAAI,KAAK,iBACT,QAAU,sBAAwB,IAAI,KAAK,eAAiB,OAChE,QAAU,oBACV,QAAU,eACV,QAAU,mCACV,QAAU,WACV,QAAU,aAEd,QAAU,eAGlB,QAAU,6BACV,QAAU,0BAA4B,IAAI,KAAK,gBAAkB,MAC7D,IAAI,KAAK,QAAU,WAAW,UAC9B,QAAU,iCACd,QAAU,aAEV,QAAU,WACV,QAAY,MAAK,IAAI,KAAK,UAAU,QAAU,MAAQ,KAAO,SAAkB,GAAG,MAAS,qBAAqB,IAAI,KAAK,UAAU,IAAI,EAAI,cAC3I,QAAU,IAAI,KAAK,UAAU,OACvB,YAAY,SAAS,IAAI,KAAK,UAAU,OAAO,EAAE,CAAC,gBAAgB,qBAAqB,IAAI,KAAK,UAAU,OAAO,KAAK,CAAC,UACvH,2BACN,QAAU,mBACV,QAAU,YAEV,QAAU,uEAEV,QAAU,kBACH,MACX,CAaA,SAAS,cAAc,UAAW,KAAM,KAAM,UAAW,UAAW,iBAAkB,CAGlF,IAAI,WAAa,GACb,UAAY,EACZ,cAAgB,KAChB,OAAS,GACb,OAAQ,UAAW,CACf,KAAK,WAAW,KAChB,KAAK,WAAW,IAChB,KAAK,WAAW,MAChB,KAAK,WAAW,KAChB,KAAK,WAAW,MAEZ,QAAU,MAAM,SAAS,SACrB,YAAc,WAAW,MAAQ,KAAK,cAAgB,YACtD,QAAU,oBAAsB,KAAK,YAAc,QAEnD,YAAc,WAAW,KAAO,YAAc,WAAW,SACzD,QAAU,kBAAoB,KAAK,OAAS,MAC5C,QAAU,qBAAuB,KAAK,aAAe,aAAe,OAEpE,YAAc,WAAW,QACzB,QAAU,sBAAwB,KAAK,WAAa,OAExD,QAAU,0BAoCV,KAAK,QAAQ,KAAO,CAChB,IAAI,GACJ,aACA,QAAU,UACV,QAAU,iBAAiB,IAAI,UAAU,oBAAoB,IAAI,UAAU,MAC3E,QAAU,WACV,QAAU,iBACV,QAAU,sBAAwB,gBAAgB,IAAI,WAAa,IAAI,OAAO,OAAS,CAAC,EAAI,WAC5F,QAAU,4DAA8D,kBAAkB,IAAI,IAAI,EAAI,6BACtG,QAAU,kBACV,QAAU,YAIV,IAAM,YAAc,KAAK,YAAc,KAAK,YAAY,WAAa,KAAK,YAAY,MAAM,EAAI,KAChG,QAAU,aACN,cAAgB,cAChB,QAAU,cAEL,KAAK,mBACV,QAAU,gBAAkB,mBAAmB,YAAa,iBAAiB,KAAK,MAAM,KAAK,mBAAqB,GAAI,CAAC,KAAK,EAAI,iBAGhI,QAAU,gBAAkB,mBAAmB,WAAW,EAAI,iBAE9D,YAAc,WAAW,MAAQ,YAAc,WAAW,MACtD,KAAK,WAAa,EAClB,QAAU,4BAGV,QAAU,YAAY,SAAS,KAAK,QAAQ,CAAC,UAAU,cAAc,KAAK,OAAO,CAAC,kBAAkB,mBAAmB,WAAW,CAAC,iBACnI,QAAU,qBAAuB,KAAK,UAAY,SAAW,wBAG5D,KAAK,aACV,QAAU,YAAY,SAAS,KAAK,WAAW,EAAE,CAAC,UAAU,cAAc,KAAK,OAAO,CAAC,kBAAkB,mBAAmB,KAAK,WAAW,KAAK,CAAC,4DAEtJ,QAAU,oBAAoB,KAAK,OAAQ,gBAAgB,EAC3D,QAAU,cACV,QAAU,kCAGN,YAAc,WAAW,QACzB,QAAU,YACV,QAAU,yBAAyB,kBAAkB,KAAK,mBAAmB,GAAK,SAAS,uBACvF,KAAK,uBACL,QAAU,wBAAwB,mBAAmB,WAAW,CAAC,2BACrE,QAAU,+CACV,QAAU,gBAAgB,KAAK,kBAAoB,EAAI,CAAC,QAAQ,KAAK,oBAAsB,EAAI,CAAC,2BAA2B,KAAK,OAAO,KAAK,mBAAqB,eAAiB,GAAG,CAAC,cACtL,QAAU,gBAAgB,mBAAmB,KAAK,gBAAkB,cAAc,CAAC,iBACnF,QAAU,sBAAsB,KAAK,mBAAqB,OAAO,MACjE,QAAU,qCACN,KAAK,oBACL,QAAU,mBAAmB,KAAK,iBAAiB,OACvD,QAAU,6BACV,QAAU,mBAAmB,KAAK,UAAY,IAAM,GAAG,MACvD,QAAU,+CAA+C,KAAK,YAAc,IAAM,GAAG,yDACrF,QAAU,2BAA2B,KAAK,gBAAkB,IAAM,GAAG,MACrE,QAAU,eAGV,YAAc,WAAW,MAAQ,YAAc,WAAW,SAC1D,QAAU,aACV,QAAU,oBAAsB,KAAK,eAAiB,MAClD,KAAK,qBACL,QAAU,gBAAgB,KAAK,kBAAkB,OACrD,QAAU,aACV,QAAU,oBAAoB,mBAAmB,KAAK,YAAY,IAAI,WAAa,EAAI,KAAK,YAAY,OAAS,KAAK,MAAM,KAAK,OAAO,EAAI,KAAK,YAAY,MAAM,EAAI,IAAI,UAAU,CAAC,CAAC,iBACvL,QAAU,gBAAgB,KAAK,sBAAsB,6BAA6B,mBAAmB,KAAK,yBAA2B,WAAW,CAAC,2DACjJ,QAAU,qBACV,QAAU,cACV,QAAU,gBAKT,YAAc,WAAW,KAAO,YAAc,WAAW,QAC1D,KAAK,SAAW,IACd,KAAK,aAAe,KAAK,cAAgB,iBAAmB,KAAK,YAAY,OAAS,GAAQ,MAAK,KAAK,kBAAoB,MAAQ,KAAO,SAAkB,GAAG,SAElK,IAAI,OAAO,QAAQ,CAAC,MAAO,QAAU,CACjC,IAAM,UAAY,MAAQ,EAAI,KAAK,gBAAkB,KAAK,aAAe,gBAAkB,KAAK,aAAe,CAAC,EAChH,QAAU,YACV,QAAU,mBAAmB,KAAK,MAClC,QAAU,sCACV,QAAU,4BACV,QAAU,eACN,KAAK,WAAa,EAClB,QAAU,2BAEL,YAAc,WAAW,KAC9B,QAAU,gBACV,QAAU,qBAAuB,UAAU,MAAQ,UAAU,MAAM,EAAI,MACvE,QAAU,mBAGV,QAAU,SACV,QAAU,kBACV,QAAU,sBAAwB,UAAU,MAAQ,UAAU,MAAM,EAAI,MACxE,QAAU,mBACV,QAAU,WAEd,QAAU,oBAAoB,KAAK,OAAQ,gBAAgB,EAC3D,QAAU,gBACV,QAAU,YACd,CAAC,EAID,QAAU,UACN,KAAK,oBAEL,QAAU,eACV,QAAU,2BAA2B,IAAI,OAAO,CAAC,EAAE,OAAS,CAAC,SAC7D,QAAU,mBACV,QAAU,wBAA0B,KAAK,oBAAsB,WAAa,kBAC5E,QAAU,yBAAyB,IAAI,OAAO,CAAC,EAAE,MAAM,MACvD,IAAI,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAO,MAAS,QAAU,cAAc,GAAG,UAAU,kBAAkB,KAAK,CAAC,eAAgB,EACpH,QAAU,oBACV,QAAU,kBAGV,QAAU,uBACV,QAAU,yBAAyB,gBAAgB,IAAI,OAAO,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,OAAS,CAAC,SACjG,QAAU,2BACV,QAAU,yBAAyB,IAAI,OAAO,CAAC,EAAE,MAAM,MACvD,IAAI,OAAO,QAAQ,aAAe,CAC9B,QAAU,UACV,YAAY,QAAQ,CAAC,MAAO,MAAS,QAAU,cAAc,GAAG,UAAU,kBAAkB,KAAK,CAAC,eAAgB,EAClH,QAAU,UACd,CAAC,EACD,QAAU,4BACV,QAAU,yBAEd,QAAU,WAIV,QAAU,UACV,QAAU,eACV,QAAU,gBAAgB,gBAAgB,IAAI,WAAa,IAAI,OAAO,OAAS,CAAC,CAAC,OAAO,gBAAgB,IAAI,WAAa,IAAI,OAAO,OAAS,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,OAAS,CAAC,SAC3K,QAAU,mBACV,QAAU,wBAA0B,KAAK,oBAAsB,KAAK,qBAAuB,WAAa,kBACxG,QAAU,yBAAyB,IAAI,OAAO,CAAC,EAAE,MAAM,MACvD,IAAI,OAAO,QAAQ,CAAC,MAAO,MAAS,QAAU,cAAc,GAAG,UAAU,OAAS,QAAU,EAAI,MAAQ,EAAE,eAAgB,EAC1H,QAAU,oBACV,QAAU,gBACV,QAAU,WAGV,YAAc,WAAW,OACzB,QAAU,mBAAqB,KAAK,WAAa,IAAM,KAAO,OAElE,QAAU,UACd,CAAC,EAGG,QAAU,cACV,QAAU,6BAA6B,kBAAkB,KAAK,mBAAmB,GAAK,SAAS,uBAC/F,QAAU,eACV,QAAU,oBACV,QAAU,sBACV,QAAU,qBACV,QAAU,wBAAwB,KAAK,kBAAoB,EAAI,CAAC,QAAQ,KAAK,oBAAsB,EAAI,CAAC,2BAA2B,KAAK,OAAO,KAAK,mBAAqB,eAAiB,GAAG,CAAC,cAC9L,QAAU,0BAA4B,mBAAmB,KAAK,gBAAkB,cAAc,EAAI,iBAClG,QAAU,iCAAmC,KAAK,mBAAqB,SAAW,MAClF,QAAU,sBACV,QAAU,uBACV,QAAU,gBACN,KAAK,oBACL,QAAU,oBAAsB,KAAK,kBAAoB,OAC7D,QAAU,iCACV,QAAU,wBAA0B,KAAK,UAAY,IAAM,KAAO,MAClE,QAAU,+BACV,QAAU,4BAA8B,KAAK,YAAc,IAAM,KAAO,MACxE,QAAU,+BACV,QAAU,kCACV,QAAU,+BAA+B,KAAK,gBAAkB,IAAM,GAAG,MACzE,QAAU,eAGV,YAAc,WAAW,KACzB,QAAU,sBAAsB,KAAK,cAAc,MACnD,QAAU,sBAAsB,KAAK,aAAe,IAAI,SAAS,QAAQ,EAAI,IAAM,KAAK,cAAgB,KAAK,cAAgB,CAAC,OAEzH,YAAc,WAAW,OAC9B,QAAU,sBAAsB,KAAK,cAAc,MACnD,QAAU,sBAAsB,KAAK,cAAc,MACnD,QAAU,mBAAqB,KAAK,WAAa,OAE5C,YAAc,WAAW,OAC9B,QAAU,yBAGd,QAAU,gBAAgB,SAAS,mBAAmB,SAAS,mBAAmB,sBAAsB,MAExG,QAAU,OAAO,SAAS,SAE1B,MACJ,KAAK,WAAW,QASZ,QAAU,MAAQ,UAAY,SAC9B,QAAU,qCACV,QAAU,0BAEV,WAAa,GACb,KAAK,OAAO,CAAC,KAAM,MAAQ,IAAM,CAAC,EAAE,QAAQ,CAAC,IAAK,MAAQ,CACtD,aACA,QAAU,UACV,QAAU,iBAAiB,GAAG,MAC9B,QAAU,mBAAmB,GAAG,MAChC,QAAU,WACV,QAAU,iBACV,QAAU,sBAAsB,gBAAgB,IAAM,CAAC,CAAC,WACxD,QAAU,4DAA8D,kBAAkB,IAAI,IAAI,EAAI,6BACtG,QAAU,kBACV,QAAU,YAEV,QAAU,aACV,CACI,IAAM,YAAc,KAAK,YAAY,WAAa,KAAK,YAAY,MAAM,EACrE,cAAgB,cAChB,QAAU,cAEL,KAAK,mBACV,QAAU,gBAAkB,mBAAmB,YAAa,iBAAmB,KAAK,MAAM,KAAK,mBAAqB,GAAI,EAAE,SAAS,EAAI,KAAK,EAAI,iBAGhJ,QAAU,gBAAkB,mBAAmB,WAAW,EAAI,iBAE9D,KAAK,WAAa,EAClB,QAAU,4BAGV,QAAU,YAAY,SAAS,KAAK,QAAQ,CAAC,UAAU,cAAc,KAAK,OAAO,CAAC,kBAAkB,mBAAmB,WAAW,CAAC,iBACnI,QAAU,oBAAoB,KAAK,UAAY,OAAO,wBAG1D,QAAU,oBAAoB,KAAK,OAAQ,gBAAgB,CAC/D,CAkBA,GAjBA,QAAU,cAGN,QAAU,aACV,QAAU,oBAAsB,KAAK,eAAiB,MAClD,KAAK,qBAEL,QAAU,gBAAgB,KAAK,kBAAkB,OAErD,QAAU,WACV,QAAU,gBAAgB,mBAAmB,KAAK,YAAY,IAAM,EAAI,KAAK,YAAY,OAAS,KAAK,MAAM,KAAK,OAAO,EAAI,KAAK,YAAY,MAAM,EAAI,GAAG,CAAC,CAAC,iBAC7J,QAAU,YAAY,KAAK,sBAAsB,6BAA6B,mBAAmB,KAAK,yBAA2B,KAAK,YAAY,WAAa,KAAK,YAAY,MAAM,CAAC,CAAC,2DACxL,QAAU,iBACV,QAAU,YACV,QAAU,cAGV,KAAK,UAAW,CAChB,IAAM,UAAY,QAAQ,8BAA8B,EACpD,IAAI,OAAO,CAAC,IAAM,KAAK,yBAA2B,UAAY,KAAK,yBAA2B,cAC9F,QAAU,YACV,IAAI,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAOC,OAAQ,EAC9B,KAAK,yBAA2B,UAAY,KAAK,yBAA2B,cAC5E,QAAU,aACV,QAAU,mBAAmBA,IAAG,MAChC,QAAU,aACV,QAAU,iBACV,QAAU,yBACV,QAAU,iCACV,QAAU,0BACV,QAAU,4BACV,QAAU,oBACV,QAAU,0BACV,QAAU,kCACV,QAAU,2BACV,QAAU,sBACV,QAAU,qCAAuC,KAAK,MAAQ,SAAW,gBACzE,QAAU,4BAA8B,kBAAkB,KAAK,EAAI,SACnE,QAAU,uBAIN,KAAK,yBAA2B,YAAc,CAAC,OAAO,KAAK,KAAK,IAChE,QAAU,sBACV,QAAU,mCAAqC,KAAK,MAAQ,SAAW,6BACvE,QAAU,kCACV,QAAU,uBACV,QAAU,6BAA+B,QAAQ,sCAAsC,EAAI,oBAC3F,QAAU,mCAAqC,KAAK,MAAQ,SAAW,mBACvE,QAAU,4BACV,QAAU,oCACV,QAAU,6BACV,QAAU,2BAA6B,kBAAkB,IAAI,IAAI,EAAI,SACrE,QAAU,yBACV,QAAU,sBACV,QAAU,mCAAqC,KAAK,MAAQ,SAAW,6BACvE,QAAU,kCACV,QAAU,uBACV,QAAU,6BAA+B,QAAQ,sCAAsC,EAAI,oBAC3F,QAAU,mCAAqC,KAAK,MAAQ,SAAW,mBACvE,QAAU,4BACV,QAAU,oCACV,QAAU,6BACV,QAAU,2BAA6B,kBAAkB,IAAI,IAAI,EAAI,UACrE,QAAU,yBACV,QAAU,sBACV,QAAU,mCAAqC,KAAK,MAAQ,SAAW,6BACvE,QAAU,iCACV,QAAU,uBACV,QAAU,sCAAwC,KAAK,MAAQ,SAAW,iBAE9E,QAAU,qBACV,QAAU,kBACV,QAAU,cACV,QAAU,eACV,QAAU,sBACV,QAAU,iBACV,QAAU,0BACV,QAAU,kBACV,QAAU,yBACV,QAAU,gBACN,KAAK,oBACL,QAAU,oBAAsB,KAAK,kBAAoB,OAC7D,QAAU,iCACV,QAAU,2BACV,QAAU,+BACV,QAAU,+BACV,QAAU,+BACV,QAAU,kCACV,QAAU,sCACV,QAAU,iBACV,QAAU,iIACV,QAAU,gIACV,QAAU,mCAAmC,WAAW,UAAU,EAAG,GAAKA,KAAM,GAAG,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,GAAGA,KAAM,CAAC,GAAG,SAAS,OACtI,QAAU,iBACV,QAAU,sBACV,QAAU,YAElB,CAAC,EACD,QAAU,cAEV,KAAK,yBAA2B,OAChC,QAAU,YACV,QAAU,eACV,QAAU,sBACV,QAAU,iBACV,QAAU,0BACV,QAAU,kBACV,QAAU,2BACV,QAAU,gBACV,QAAU,eACV,QAAU,qBACV,QAAU,6BACV,QAAU,sBACV,QAAU,wBACV,QAAU,gBACV,QAAU,sBACV,QAAU,8BACV,QAAU,uBACV,QAAU,2CACV,QAAU,iBACV,QAAU,gBACN,KAAK,oBACL,QAAU,oBAAsB,KAAK,kBAAoB,OAC7D,QAAU,iCACV,QAAU,oBAAoB,KAAK,UAAY,IAAM,GAAG,MACxD,QAAU,wBAAwB,KAAK,UAAY,IAAM,GAAG,MAC5D,QAAU,wBAAwB,KAAK,YAAc,IAAM,GAAG,MAC9D,QAAU,+BACV,QAAU,kCACV,QAAU,iBACV,QAAU,kIACV,QAAU,6CACV,QAAU,mBACV,QAAU,kBACV,QAAU,aAElB,CAGI,KAAK,SAAW,GAAK,KAAK,cAAgB,iBAE1C,IAAI,OAAO,QAAQ,CAAC,MAAO,QAAU,CACjC,IAAM,UAAY,MAAQ,EAAI,KAAK,gBAAkB,KAAK,aAAe,gBAAkB,KAAK,aAAe,CAAC,EAChH,QAAU,YACV,QAAU,mBAAmB,KAAK,MAClC,QAAU,sCACV,QAAU,4BACV,QAAU,eACN,KAAK,WAAa,EAClB,QAAU,4BAGV,QAAU,gBACV,QAAU,oBAAsB,UAAU,MAAQ,UAAU,MAAM,EAAI,MACtE,QAAU,kBAEd,QAAU,oBAAoB,KAAK,OAAQ,gBAAgB,EAC3D,QAAU,gBACV,QAAU,YACd,CAAC,EAKD,QAAU,WACV,QAAU,eACV,QAAU,2BAA2B,KAAK,CAAC,EAAE,OAAO,OAAS,CAAC,SAC9D,QAAU,mBACV,QAAU,6CACV,QAAU,yBAAyB,KAAK,CAAC,EAAE,OAAO,MAAM,MACxD,KAAK,CAAC,EAAE,OAAO,QAAQ,CAAC,MAAOA,OAAQ,CACnC,QAAU,cAAcA,IAAG,UAAU,OAAS,QAAU,EAAI,MAAQ,EAAE,eAC1E,CAAC,EACD,QAAU,oBACV,QAAU,gBACV,QAAU,YAEV,QAAU,WACV,QAAU,eACV,QAAU,oBAAoB,gBAAgB,IAAM,CAAC,CAAC,OAAO,gBAAgB,IAAM,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,OAAO,OAAS,CAAC,SAClH,QAAU,mBACV,QAAU,6CAEV,QAAU,yBAAyB,KAAK,CAAC,EAAE,OAAO,MAAM,MACxD,KAAK,CAAC,EAAE,OAAO,QAAQ,CAAC,OAAQA,OAAQ,CACpC,QAAU,cAAcA,IAAG,UAAU,IAAI,OAAOA,IAAG,GAAK,IAAI,OAAOA,IAAG,IAAM,EAAI,IAAI,OAAOA,IAAG,EAAI,EAAE,eACxG,CAAC,EACD,QAAU,oBACV,QAAU,gBACV,QAAU,YAGd,QAAU,mBAAqB,KAAK,WAAa,IAAM,KAAO,MAE9D,QAAU,UACd,CAAC,EAGG,QAAU,cACV,QAAU,6BAA6B,kBAAkB,KAAK,mBAAmB,GAAK,SAAS,uBAC/F,QAAU,eACV,QAAU,oBACV,QAAU,sBACV,QAAU,qBACV,QAAU,wBAAwB,KAAK,kBAAoB,IAAM,GAAG,QAAQ,KAAK,oBAAsB,IAAM,GAAG,2BAA2B,KAAK,OAAO,KAAK,mBAAqB,eAAiB,GAAG,CAAC,cACtM,QAAU,0BAA4B,mBAAmB,KAAK,gBAAkB,cAAc,EAAI,iBAClG,QAAU,iCAAmC,KAAK,mBAAqB,SAAW,MAClF,QAAU,sBACV,QAAU,uBACV,QAAU,gBACN,KAAK,oBACL,QAAU,oBAAsB,KAAK,kBAAoB,OAC7D,QAAU,iCACV,QAAU,wBAA0B,KAAK,UAAY,IAAM,KAAO,MAClE,QAAU,+BACV,QAAU,4BAA8B,KAAK,YAAc,IAAM,KAAO,MACxE,QAAU,+BACV,QAAU,kCACV,QAAU,eAGd,QAAU,gBAAgB,SAAS,mBAAmB,SAAS,MAE/D,QAAU,OAAS,UAAY,SAE/B,MACJ,KAAK,WAAW,OAChB,KAAK,WAAW,SASZ,QAAU,kBACV,QAAU,0BAEV,WAAa,GACb,KAAK,OAAO,CAAC,KAAM,MAAQ,IAAM,CAAC,EAAE,QAAQ,CAAC,IAAK,MAAQ,CACtD,aACA,QAAU,UACV,QAAU,iBAAiB,GAAG,MAC9B,QAAU,mBAAmB,GAAG,MAEhC,QAAU,WACV,QAAU,iBACV,QAAU,sBAAwB,gBAAgB,UAAY,CAAC,EAAI,WACnE,QAAU,4DAA8D,kBAAkB,IAAI,IAAI,EAAI,6BACtG,QAAU,kBACV,QAAU,YAEV,CACI,QAAU,WACV,IAAM,YAAc,KAAK,YAAY,WAAa,KAAK,YAAY,MAAM,EACrE,cAAgB,cAChB,QAAU,cAEL,KAAK,mBACV,QAAU,gBAAgB,mBAAmB,YAAa,iBAAmB,KAAK,MAAM,KAAK,mBAAqB,GAAI,EAAE,SAAS,EAAI,KAAK,CAAC,iBAG3I,QAAU,gBAAkB,mBAAmB,WAAW,EAAI,iBAE9D,KAAK,WAAa,EAClB,QAAU,2BAEL,KAAK,WACV,QAAU,YAAY,SAAS,KAAK,WAAW,EAAE,CAAC,6BAA6B,mBAAmB,KAAK,WAAW,KAAK,CAAC,4DAGxH,QAAU,YAAY,SAAS,KAAK,QAAQ,CAAC,6BAA6B,mBAAmB,WAAW,CAAC,iBACzG,QAAU,oBAAoB,KAAK,UAAY,OAAO,wBAG1D,QAAU,oBAAoB,KAAK,OAAQ,gBAAgB,EAC3D,QAAU,WACd,CAMI,QAAU,WACV,QAAU,eACV,QAAU,2BAA2B,KAAK,CAAC,EAAE,OAAO,OAAS,CAAC,SAC9D,QAAU,mBACV,QAAU,6CACV,QAAU,yBAAyB,KAAK,CAAC,EAAE,OAAO,MAAM,MACxD,KAAK,CAAC,EAAE,OAAO,QAAQ,CAAC,MAAOA,OAAQ,CACnC,QAAU,cAAcA,IAAG,UAAU,OAAS,QAAU,EAAI,MAAQ,EAAE,eAC1E,CAAC,EACD,QAAU,oBACV,QAAU,gBACV,QAAU,YAEV,QAAU,WACV,QAAU,eACV,QAAU,gBAAgB,gBAAgB,UAAY,CAAC,CAAC,OAAO,gBAAgB,UAAY,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,OAAO,OAAS,CAAC,SAC1H,YACA,QAAU,mBACV,QAAU,6CAEV,QAAU,yBAAyB,KAAK,CAAC,EAAE,OAAO,MAAM,MACxD,KAAK,CAAC,EAAE,OAAO,QAAQ,CAAC,OAAQA,OAAQ,CACpC,QAAU,cAAcA,IAAG,UAAU,IAAI,OAAOA,IAAG,GAAK,IAAI,OAAOA,IAAG,IAAM,EAAI,IAAI,OAAOA,IAAG,EAAI,EAAE,eACxG,CAAC,EACD,QAAU,oBACV,QAAU,gBACV,QAAU,YAGd,QAAU,mBACV,QAAU,iBACV,QAAU,gBAAgB,gBAAgB,UAAY,CAAC,CAAC,OAAO,gBAAgB,UAAY,CAAC,CAAC,IAAI,IAAI,MAAM,OAAS,CAAC,SACrH,YACA,QAAU,qBACV,QAAU,+CACV,QAAU,8BAA8B,IAAI,MAAM,MAAM,MACxD,IAAI,MAAM,QAAQ,CAAC,MAAOA,OAAQ,CAC9B,QAAU,cAAcA,IAAG,UAAU,OAAS,EAAE,eACpD,CAAC,EACD,QAAU,sBACV,QAAU,kBACV,QAAU,oBACV,QAAU,uBAAyB,YAAc,WAAW,SAAW,IAAM,KAAO,MAEpF,QAAU,UACd,CAAC,EAGG,QAAU,YACV,QAAU,yBAAyB,kBAAkB,KAAK,mBAAmB,GAAK,SAAS,uBAC3F,QAAU,+CACV,QAAU,gBAAgB,KAAK,kBAAoB,EAAI,CAAC,QAAQ,KAAK,oBAAsB,EAAI,CAAC,2BAA2B,KAAK,MAAM,KAAK,MAAM,KAAK,mBAAqB,aAAa,EAAI,GAAG,CAAC,cAChM,QAAU,gBAAgB,mBAAmB,KAAK,gBAAkB,cAAc,CAAC,iBACnF,QAAU,sBAAsB,KAAK,mBAAqB,OAAO,MACjE,QAAU,qCACN,KAAK,oBACL,QAAU,mBAAmB,KAAK,iBAAiB,OACvD,QAAU,6BACV,QAAU,mBAAmB,KAAK,UAAY,IAAM,GAAG,MACvD,QAAU,+CAA+C,KAAK,YAAc,IAAM,GAAG,yDACrF,QAAU,aACV,QAAU,4HACV,QAAU,kCAAoC,KAAK,gBAAkB,IAAM,KAAO,MAClF,QAAU,aACV,QAAU,cACV,QAAU,aAOd,QAAU,gBAAgB,SAAS,mBAAmB,SAAS,MAE/D,QAAU,mBAEV,MACJ,KAAK,WAAW,SAChB,KAAK,WAAW,IAEZ,cAAgB,KAAK,CAAC,EAWtB,QAAU,MAAQ,UAAY,SAC9B,QAAU,4BACV,QAAU,UACV,QAAU,qBACV,QAAU,uBACV,QAAU,WACV,QAAU,iBACV,QAAU,+BACV,QAAU,qBACV,QAAU,+BACV,QAAU,8BAAgC,kBAAkB,cAAc,IAAI,EAAI,gBAClF,QAAU,sBACV,QAAU,kBACV,QAAU,YACV,QAAU,aACV,QAAU,8DACV,QAAU,+HACN,KAAK,cACL,QAAU,iBAGV,QAAU,oBAAoB,KAAK,OAAQ,gBAAgB,EAE/D,QAAU,cAGV,cAAc,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAQ,MAAQ,CAC7C,QAAU,UACV,QAAU,gBAAgB,GAAG,MAC7B,QAAU,yBACV,QAAU,YACV,QAAU,gBAAgB,mBAAmB,KAAK,YAAY,IAAM,EAAI,KAAK,YAAY,OAAS,KAAK,MAAM,KAAK,OAAO,EAAI,KAAK,YAAY,MAAM,EAAI,GAAG,CAAC,CAAC,iBACzJ,KAAK,aACL,QAAU,YAAY,SAAS,KAAK,WAAW,EAAE,CAAC,6BAA6B,mBAAmB,KAAK,WAAW,KAAK,CAAC,4DAE5H,QAAU,oBAAoB,KAAK,OAAQ,gBAAgB,EAC3D,QAAU,cACV,QAAU,UACd,CAAC,EAED,QAAU,YACV,cAAc,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAQ,MAAQ,CAC7C,QAAU,WACV,QAAU,gBAAgB,GAAG,MAC7B,QAAU,2BAA2B,kBAAkB,KAAK,mBAAmB,GAAK,SAAS,uBAC7F,QAAU,sBACV,QAAU,8BACV,QAAU,kBACV,QAAU,oBAAoB,KAAK,OAAO,KAAK,mBAAqB,eAAiB,GAAG,CAAC,QAAQ,KAAK,kBAAoB,EAAI,CAAC,QAAQ,KAAK,oBAAsB,EAAI,CAAC,gCACvK,QAAU,oBAAsB,mBAAmB,KAAK,gBAAkB,cAAc,EAAI,iBAC5F,QAAU,0BAA0B,KAAK,mBAAqB,OAAO,MACrE,QAAU,iBACV,QAAU,uBACV,QAAU,gBACN,YAAc,WAAW,KAAO,KAAK,oBACrC,QAAU,mBAAmB,KAAK,iBAAiB,OACvD,QAAU,iCACV,QAAU,wBAA0B,KAAK,UAAY,IAAM,KAAO,MAClE,QAAU,4BAA8B,KAAK,UAAY,IAAM,KAAO,MACtE,QAAU,4BAA8B,KAAK,YAAc,IAAM,KAAO,MACxE,QAAU,4BAA8B,KAAK,YAAc,IAAM,KAAO,MACxE,QAAU,kCACV,QAAU,aACd,CAAC,EACD,QAAU,0BAA0B,kBAAkB,KAAK,mBAAmB,GAAK,SAAS,uBAC5F,QAAU,eACV,QAAU,oBACV,QAAU,sBACV,QAAU,cACV,QAAU,kBACV,QAAU,oCAAoC,KAAK,kBAAoB,IAAM,GAAG,QAAQ,KAAK,oBAAsB,IAAM,GAAG,gCAC5H,QAAU,8FACV,QAAU,wBACV,QAAU,mBACV,QAAU,eACV,QAAU,gBACV,QAAU,YAAc,WAAW,IAAM,yBAA2B,GACpE,QAAU,iCACV,QAAU,2BACV,QAAU,+BACV,QAAU,+BACV,QAAU,+BACV,QAAU,kCACV,QAAU,4BAA4B,KAAK,gBAAkB,IAAM,GAAG,MACtE,QAAU,aAEV,QAAU,UACV,QAAU,eACV,QAAU,2BAA2B,cAAc,OAAO,CAAC,EAAE,OAAS,CAAC,SACvE,QAAU,mBACV,QAAU,4BAA4B,cAAc,OAAO,CAAC,EAAE,MAAM,MACpE,cAAc,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAO,MAAQ,CAC5C,QAAU,cAAc,GAAG,UAAU,kBAAkB,KAAK,CAAC,eACjE,CAAC,EACD,QAAU,oBACV,QAAU,gBACV,QAAU,WAEV,QAAU,YACV,QAAU,iBACV,QAAU,6BAA6B,cAAc,OAAO,CAAC,EAAE,OAAS,CAAC,SACzE,QAAU,qBACV,QAAU,8BAA8B,cAAc,OAAO,CAAC,EAAE,MAAM,MACtE,cAAc,OAAO,QAAQ,CAAC,MAAO,MAAQ,CACzC,QAAU,cAAc,GAAG,UAAU,OAAS,QAAU,EAAI,MAAQ,EAAE,eAC1E,CAAC,EACD,QAAU,sBACV,QAAU,kBACV,QAAU,aAEV,QAAU,aACV,QAAU,2BAA2B,KAAK,cAAgB,KAAK,MAAM,KAAK,aAAa,EAAI,CAAC,MACxF,YAAc,WAAW,WACzB,QAAU,oBAAoB,OAAO,KAAK,UAAa,SAAW,KAAK,SAAW,IAAI,OAC1F,QAAU,OAAS,UAAY,SAE/B,MACJ,QACI,QAAU,GACV,KACR,CACA,OAAO,MACX,CAQA,SAAS,YAAY,KAAM,OAAQ,UAAW,CAC1C,IAAI,OAAS,GAGb,OAAI,KAAK,QAAU,WAAW,SAAW,KAAK,QAAU,WAAW,QAAU,KAAK,QAAU,WAAW,SACnG,QAAU,YAGV,QAAU,OAAS,KAAK,mBAAqB,SAAW,SAAW,IAEvE,QAAU,kBAAoB,OAAS,MACvC,QAAU,gBACV,QAAU,wBAA0B,KAAK,qBAAuB,KAAK,SAAW,MAAQ,WAAwB,OAC5G,KAAK,eAAiB,KAAK,gBAAkB,KAC7C,QAAU,eAAe,KAAK,aAAa,QAC3C,KAAK,eAAiB,KAAK,gBAAkB,KAC7C,QAAU,eAAe,KAAK,aAAa,OAC/C,QAAU,eACV,QAAU,qBAAuB,KAAK,cAAgB,IAAM,KAAO,MACnE,QAAU,oBAAsB,KAAK,SAAW,MAAQ,IAAM,KAAO,MACrE,QAAU,KAAK,YAAY,QAAU,OAAS,sBAAsB,KAAK,WAAW,EAAI,GAEpF,KAAK,mBACL,QAAU,YAAY,CAClB,MAAO,KAAK,kBACZ,SAAU,KAAK,qBACf,SAAU,KAAK,qBACf,YAAa,KAAK,mBAClB,MAAO,KAAK,cAAgB,YAChC,CAAC,GAGD,KAAK,QAAU,WAAW,SAAW,KAAK,QAAU,WAAW,QAAU,KAAK,QAAU,WAAW,SACnG,QAAU,4BAA8B,KAAK,uBAAyB,kBAAkB,KAAK,sBAAsB,EAAI,WAAa,uBAGpI,QAAU,4BAA8B,kBAAkB,KAAK,kBAAkB,GAAK,WAAa,uBAEnG,KAAK,QAAU,WAAW,SAC1B,QAAU,kCACV,QAAU,kCACV,QAAU,mCAGV,QAAU,4BAA8B,KAAK,sBAAwB,OAAS,MAC9E,QAAU,4BAA8B,KAAK,sBAAwB,QAAU,MAC/E,QAAU,yBAA2B,KAAK,kBAAoB,KAAK,SAAW,MAAQ,MAAQ,WAAa,OAE/G,QAAU,aACV,QAAU,gBAAgB,KAAK,gBAAkB,SAAS,KAAK,eAAe,EAAI,KAAK,gBACvF,QAAW,KAAK,gBAAkC,gBAAkB,mBAAmB,KAAK,kBAAoB,mBAAmB,KAAK,EAAI,iBAA1G,cAClC,QAAU,2BAA6B,KAAK,kBAAoB,SAAW,MAC3E,QAAU,mBACV,QAAU,cACV,QAAU,cACV,QAAU,aACN,KAAK,mBACL,QAAU,kBAAkB,uBAAuB,KAAK,kBAAkB,CAAC,MAI3E,QAAU,cAEd,QAAU,oBACV,QAAU,YACV,QAAU,cACV,QAAU,uBAAuB,KAAK,OAAO,KAAK,sBAAwB,eAAiB,GAAG,CAAC,QAAQ,KAAK,qBAAuB,EAAI,CAAC,QAAQ,KAAK,uBAAyB,EAAI,CAAC,gCACnL,QAAU,sBAAwB,mBAAmB,KAAK,mBAAqB,cAAc,EAAI,iBACjG,QAAU,6BAA+B,KAAK,sBAAwB,SAAW,MACjF,QAAU,iBACV,QAAU,aACV,QAAU,0BAA4B,KAAK,MAAQ,SAAW,MAC9D,QAAU,WACV,QAAU,aACV,QAAU,oBAAsB,UAAY,MAC5C,QAAU,OAAO,OAAO,KAAK,kBAAqB,SAAW,YAAc,SAAS,SAAS,KAAK,kBAAoB,UAAU,MAChI,QAAU,qBACV,QAAU,0BACV,QAAU,0BAA0B,KAAK,wBAA0B,EAAI,CAAC,MACpE,KAAK,wBACL,QAAU,wBAA0B,KAAK,sBAAwB,QAGjE,KAAK,oBAAsB,KAAK,QAAU,WAAW,SAAW,KAAK,QAAU,WAAW,QAAU,KAAK,QAAU,WAAW,YAC1H,KAAK,qBACL,CAAC,sBAAuB,uBAAwB,sBAAsB,EAAE,QAAQ,KAAO,CAE/E,KAAK,GAAG,IAAM,OAAO,KAAK,GAAG,GAAM,UAAY,CAAC,CAAC,OAAQ,SAAU,OAAO,EAAE,SAAS,KAAK,GAAG,EAAE,YAAY,CAAC,KAC5G,QAAQ,KAAK,IAAI,GAAG,6CAA6C,EACjE,KAAK,GAAG,EAAI,KAEpB,CAAC,EACG,KAAK,sBACL,QAAU,wBAA0B,KAAK,oBAAoB,YAAY,EAAI,OAC7E,KAAK,uBACL,QAAU,yBAA2B,KAAK,qBAAqB,YAAY,EAAI,OAC/E,KAAK,uBACL,QAAU,yBAA2B,KAAK,qBAAqB,YAAY,EAAI,QAEnF,KAAK,mBACL,QAAU,qBAAqB,KAAK,gBAAgB,OACpD,KAAK,mBACL,QAAU,qBAAqB,KAAK,gBAAgB,QAIxD,KAAK,QAAU,WAAW,SAAW,KAAK,QAAU,WAAW,QAAU,KAAK,QAAU,WAAW,SACnG,QAAU,aAGV,QAAU,QAAU,KAAK,mBAAqB,SAAW,SAAW,IAEjE,MACX,CAOA,SAAS,YAAY,KAAM,UAAW,CAClC,IAAI,QAAU,YAAc,sBAAyB,KAAK,SAAW,MAAQ,IAAM,IAAO,KAAK,SAAW,MAAQ,IAAM,IACpH,YAAc,0BACd,QAAU,KACd,IAAM,UAAY,YAAc,sBAAwB,yBAA2B,2BAC/E,OAAS,GACb,eAAU,YACV,QAAU,kBAAoB,UAAY,MAC1C,QAAU,gBACN,KAAK,sBACL,QAAU,mBAAmB,KAAK,mBAAmB,OACzD,QAAU,wBAA0B,KAAK,qBAAuB,KAAK,SAAW,MAAQ,WAAwB,OAC5G,KAAK,eAAiB,KAAK,gBAAkB,KAC7C,QAAU,eAAe,KAAK,aAAa,QAC3C,KAAK,eAAiB,KAAK,gBAAkB,KAC7C,QAAU,eAAe,KAAK,aAAa,OAC/C,QAAU,iBACV,QAAU,oBAAoB,KAAK,cAAgB,EAAI,CAAC,MACxD,QAAU,mBAAqB,QAAU,MACrC,KAAK,YAAY,QAAU,SAC3B,QAAU,sBAAsB,KAAK,WAAW,GAEhD,KAAK,mBACL,QAAU,YAAY,CAClB,MAAO,KAAK,kBACZ,SAAU,KAAK,qBACf,SAAU,KAAK,qBACf,YAAa,KAAK,mBAClB,MAAO,KAAK,cAAgB,YAChC,CAAC,GAEL,QAAU,yBAAyB,KAAK,uBAAyB,kBAAkB,KAAK,sBAAsB,EAAI,SAAS,uBACvH,KAAK,QAAU,WAAW,SAC1B,QAAU,kCACV,QAAU,kCACV,QAAU,mCAGV,QAAU,2BAA6B,KAAK,sBAAwB,OAAS,MAC7E,QAAU,2BAA6B,KAAK,sBAAwB,QAAU,MAC9E,QAAU,wBAA0B,KAAK,kBAAoB,KAAK,SAAW,MAAQ,SAAW,QAAU,OAE9G,QAAU,YACV,QAAU,eAAe,KAAK,gBAAkB,SAAS,KAAK,eAAe,EAAI,KAAK,gBACtF,QAAW,KAAK,gBAAkC,gBAAkB,mBAAmB,KAAK,kBAAoB,mBAAmB,KAAK,EAAI,iBAA1G,cAClC,QAAU,0BAA4B,KAAK,kBAAoB,SAAW,MAC1E,QAAU,kBACV,QAAU,aACV,QAAU,aACV,QAAU,YACV,QAAU,cAAc,KAAK,mBAAsB,SAAW,uBAAuB,KAAK,kBAAkB,EAAE,SAAS,EAAI,IAAO,EAAE,KACpI,QAAU,kBACV,QAAU,UACV,QAAU,cACV,QAAU,uBAAuB,KAAK,OAAO,KAAK,sBAAwB,eAAiB,GAAG,CAAC,QAAQ,KAAK,qBAAuB,EAAI,CAAC,QAAQ,KAAK,uBAAyB,EAAI,CAAC,gCACnL,QAAU,wBAA0B,mBAAmB,KAAK,mBAAqB,cAAc,EAAI,iBACnG,QAAU,+BAAiC,KAAK,sBAAwB,SAAW,MACnF,QAAU,oBACV,QAAU,eACV,QAAU,0BAA4B,KAAK,MAAQ,SAAW,MAC9D,QAAU,WACV,QAAU,aACV,QAAU,oBAAsB,UAAY,MACxC,OAAO,KAAK,kBAAqB,SACjC,QAAU,sBAAsB,KAAK,gBAAgB,MAEhD,OAAO,KAAK,kBAAqB,SACtC,QAAU,oBAAsB,KAAK,iBAAmB,MAKxD,QAAU,qBAFM,UAAY,KAAO,UAAY,IACrB,MAAQ,YACQ,MAE9C,QACI,0BACK,KAAK,QAAU,WAAW,SAAe,MAAM,QAAQ,KAAK,KAAK,GAAK,KAAK,MAAM,OAAO,MAAQ,KAAK,OAAS,WAAW,IAAI,EAAE,OAAS,EAAM,SAAW,WAC1J,MACJ,KAAK,mBACL,QAAU,sBAAsB,KAAK,gBAAgB,OACrD,KAAK,qBACL,QAAU,oCAAoC,KAAK,kBAAkB,MAAM,KAAK,wBAA0B,oBAAsB,EAAE,kBAEtI,QAAU,aACH,MACX,CAQA,SAAS,YAAY,KAAM,OAAQ,UAAW,CAC1C,IAAI,OAAS,GAEb,eAAU,YACV,QAAU,kBAAoB,OAAS,MACvC,QAAU,qCAAuC,KAAK,qBAAuB,KAAK,SAAW,MAAQ,WAAwB,kBAC7H,QAAU,qBAAuB,KAAK,cAAgB,IAAM,KAAO,MACnE,QAAU,oBAAsB,KAAK,SAAW,MAAQ,IAAM,KAAO,MACrE,QAAU,KAAK,YAAY,QAAU,OAAS,sBAAsB,KAAK,WAAW,EAAI,GAEpF,KAAK,mBACL,QAAU,YAAY,CAClB,MAAO,KAAK,kBACZ,SAAU,KAAK,qBACf,SAAU,KAAK,qBACf,YAAa,KAAK,mBAClB,MAAO,KAAK,cAAgB,YAChC,CAAC,GAEL,QAAU,2BAA2B,kBAAkB,KAAK,kBAAkB,GAAK,SAAS,uBAC5F,QAAU,iCACV,QAAU,kCACV,QAAU,wBAAwB,KAAK,iBAAmB,KAAK,SAAW,MAAQ,MAAQ,QAAQ,MAClG,QAAU,aACV,QAAU,kCACV,QAAW,KAAK,gBAAkC,gBAAgB,mBAAmB,KAAK,kBAAoB,mBAAmB,KAAK,CAAC,iBAArG,cAClC,QAAU,kCACV,QAAU,mBACV,QAAU,cACV,QAAU,cACV,QAAU,aACV,QAAU,kBACV,QAAU,oBACV,QAAU,YACV,QAAU,cACV,QAAU,qBAAqB,KAAK,OAAO,KAAK,sBAAwB,eAAiB,GAAG,CAAC,QAAQ,KAAK,qBAAuB,IAAM,GAAG,QAAQ,KAAK,uBAAyB,IAAM,GAAG,gCACzL,QAAU,sBAAsB,mBAAmB,KAAK,mBAAqB,cAAc,CAAC,iBAC5F,QAAU,4BAA4B,KAAK,sBAAwB,OAAO,MAC1E,QAAU,iBACV,QAAU,aACV,QAAU,0BAA4B,KAAK,MAAQ,SAAW,MAC9D,QAAU,WACV,QAAU,aACV,QAAU,oBAAsB,UAAY,MAC5C,QAAU,+BACN,KAAK,wBACL,QAAU,wBAA0B,KAAK,sBAAwB,OAEjE,KAAK,qBACL,CAAC,sBAAuB,uBAAwB,sBAAsB,EAAE,QAAQ,KAAO,CAE/E,KAAK,GAAG,IAAM,OAAO,KAAK,GAAG,GAAM,UAAY,CAAC,CAAC,OAAQ,SAAU,OAAO,EAAE,SAAS,IAAI,YAAY,CAAC,KACtG,QAAQ,KAAK,IAAI,GAAG,6CAA6C,EACjE,KAAK,GAAG,EAAI,KAEpB,CAAC,EACG,KAAK,sBACL,QAAU,0BAA0B,KAAK,oBAAoB,YAAY,CAAC,OAC1E,KAAK,uBACL,QAAU,0BAA0B,KAAK,qBAAqB,YAAY,CAAC,OAC3E,KAAK,uBACL,QAAU,0BAA0B,KAAK,qBAAqB,YAAY,CAAC,OAC3E,KAAK,mBACL,QAAU,sBAAsB,KAAK,gBAAgB,OACrD,KAAK,mBACL,QAAU,sBAAsB,KAAK,gBAAgB,QAG7D,QAAU,aACH,MACX,CAMA,SAAS,YAAY,KAAM,OAAQ,OAAQ,CACvC,IAAM,MAAQ,KAAK,aAAe,QAAU,KAAK,aAAe,QAAU,gBAAgB,KAAK,WAAW,UAAU,EAAG,CAAC,CAAC,KAAO,UAC1H,OAAS,KAAK,YAAc,kBAAkB,uBAAuB,KAAK,WAAW,CAAC,MAAQ,cAC9F,SAAW,KAAK,SAAW,OAAO,KAAK,MAAM,KAAK,SAAW,GAAG,CAAC,IAAM,GACvE,UAAY,KAAK,UAAY,EAAI,EACnC,OAAS,cACb,GAAI,KAAK,UAAY,OAAO,KAAK,SAAS,GAAM,UAAY,OAAO,KAAK,SAAS,GAAM,SAAU,CAE7F,IAAM,OAAS,KAAK,SAAS,EAAI,OAC3B,OAAS,KAAK,SAAS,EAAI,OAC7B,KAAO,SAAW,EAAI,EAAK,QAAU,OAAS,GAAM,GACpD,MAAQ,IACR,KAAO,KAAO,IACd,MAAQ,KACR,KAAO,KAAO,IAClB,IAAI,KAAO,SAAW,EAAI,EAAK,QAAU,OAAS,GAAM,GACpD,MAAQ,IACR,KAAO,KAAO,IACd,MAAQ,KACR,KAAO,KAAO,IAClB,OAAS,iFAAiF,IAAI,gBAAgB,IAAI,iCACtH,CACA,MAAO;AAAA;AAAA;AAAA,YAGC,MAAM;AAAA;AAAA;AAAA,cAGJ,KAAK;AAAA,wBACK,QAAQ,OAAO,SAAS;AAAA,6BACnB,mBAAmB,KAAK,OAAS,cAAc,CAAC;AAAA,mCAC1C,KAAK,UAAY,OAAO;AAAA;AAAA;AAAA;AAAA,qBAItC,QAAQ,OAAO,SAAS;AAAA,6BAChB,mBAAmB,KAAK,OAAS,cAAc,CAAC;AAAA,mCAC1C,KAAK,UAAY,OAAO;AAAA;AAAA,mBAExC,kBAAkB,KAAK,KAAK,GAAK,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,QAK9C,MAAM;AAAA;AAAA,eAGd,CAQA,SAAS,gBAAgB,SAAU,CAC/B,IAAI,OAAS,GACP,OAAS,SAAW,EAC1B,OAAI,QAAU,GAEV,OAAS,QAAQ,MAAM,EAIvB,OAAS,GAAG,QAAQ,KAAK,MAAM,OAAS,QAAQ,OAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,OAAS,QAAQ,MAAM,CAAC,GAE5F,MACX,CASA,SAAS,oBAAoB,QAAS,SAAU,CAC5C,GAAK,SAGA,GAAI,OAAO,SAAY,SACxB,eAAQ,KAAK,mEAAqE,EAC3E,qBAJP,OAAO,iBAMX,IAAI,OAAS,gBACP,KAAO,OAAO,OAAO,OAAO,OAAO,CAAC,EAAG,QAAQ,EAAG,OAAO,EACzD,KAAO,KAAK,MAAQ,QACpB,KAAO,SAAS,KAAK,IAAI,EACzB,OAAS,SAAS,KAAK,MAAM,EAC7B,MAAQ,KAAK,MAAM,KAAK,MAAQ,GAAK,EACrC,MAAQ,KAAK,MACb,QAAU,KAAK,MAAM,KAAK,QAAU,GAAM,EAC1C,SAAW,KAAK,gBAAkB,EAAI,EAC5C,eAAU,MAAM,IAAI,kEAAkE,IAAI,mBAAmB,QAAQ,WAAW,MAAM,UAAU,KAAK,KACrJ,QAAU,mBAAmB,KAAK,KAClC,QAAU,iBAAiB,OAAO,kBAClC,QAAU,OAAO,IAAI,QACrB,QAAU,iBACH,MACX,CAMA,SAAS,sBAAsB,OAAQ,CACnC,IAAI,OAAS,qBACb,eAAU,YACV,QAAU,cAAc,SAAS,OAAO,MAAQ,mBAAmB,IAAI,CAAC,UAAU,cAAc,OAAO,KAAO,mBAAmB,GAAG,CAAC,KACrI,QAAU,mCAAqC,OAAO,OAAS,mBAAmB,OAAS,oBAC3F,QAAU,wBAA0B,OAAO,OAAS,mBAAmB,OAAS,gBAChF,QAAU,YACV,QAAU,aACV,QAAU,sBACH,MACX,CACA,SAAS,cAAc,QAAS,CAC5B,GAAI,CAAC,SAAW,UAAY,OACxB,MAAO,OAEN,GAAI,UAAY,SACjB,MAAO,KAEN,GAAI,UAAY,QACjB,MAAO,MAEN,CACD,IAAM,aAAe,QACrB,MAAM,IAAI,MAAM,2BAA2B,YAAY,EAAE,CAC7D,CACJ,CAUA,SAAS,qBAAqB,OAAQ,CAClC,IAAI,GAAI,GAER,IAAM,OAAS,OAAO,QAAY,KAAe,CAAC,EAAG,MAAK,QAAQ,YAAc,MAAQ,KAAO,SAAkB,GAAG,SAAW,GAAK,QAAQ,WAAa,MAAQ,KAAO,OAAS,OAAS,GAAG,QAAU,OAEnM,GACA,MAEE,aAAe,OACf,IAAM,UAAU,KAAM,OAAQ,OAAQ,WAAa,EAChD,CAAE,QAAS,EAAG,EAAI,KAAM,QAAO,IAAS,GACxC,CAAE,QAAS,KAAM,EAAI,KAAM,QAAO,OAAY,CACnD,CAAC,EACC,IAAM,UAAU,KAAM,OAAQ,OAAQ,WAAa,CAAE,CAAC,EAExD,QACA,aAAa,EAEjB,IAAM,WAAa,CAAC,EAEd,cAAgB,OAAO,WAAW,OAAO,KAAO,IAAI,OAAS,UAAY,CAAC,IAAI,OAAS,CAAC,IAAI,MAAS,IAAI,MAAQ,CAAC,IAAI,KAAK,SAAS,YAAY,EAAG,EAEnJ,SAAW,CAAC,EAClB,qBAAc,QAAQ,KAAO,CACpB,SAAS,SAAS,IAAI,IAAI,EAK3B,IAAI,YAAc,IAJlB,IAAI,YAAc,GAClB,SAAS,KAAK,IAAI,IAAI,EAK9B,CAAC,EAED,cACK,OAAO,KAAO,CAAC,IAAI,WAAW,EAC9B,QAAQ,KAAO,CAChB,WAAW,KAAY,UAAU,KAAM,OAAQ,OAAQ,WAAa,CAIhE,GAHK,QACD,MAAM,aAAa,GAEnB,QAAU,IAAM,IAAI,KAAK,QAAQ,MAAM,IAAM,EAC7C,GAAI,CACA,IAAM,OAAS,GAAG,aAAa,IAAI,IAAI,EACvC,WAAI,KAAO,OAAO,KAAK,MAAM,EAAE,SAAS,QAAQ,EAChD,cACK,OAAO,MAAQ,KAAK,aAAe,KAAK,OAAS,IAAI,IAAI,EACzD,QAAQ,MAAS,KAAK,KAAO,IAAI,IAAK,EACpC,MACX,OACO,GAAI,CACP,UAAI,KAAO,WACX,cACK,OAAO,MAAQ,KAAK,aAAe,KAAK,OAAS,IAAI,IAAI,EACzD,QAAQ,MAAS,KAAK,KAAO,IAAI,IAAK,EACrC,IAAI,MAAM,iCAAiC,IAAI,IAAI;AAAA,EAAM,OAAO,EAAE,CAAC,EAAE,CAC/E,CAGJ,OAAI,QAAU,OAAS,IAAI,KAAK,WAAW,MAAM,EACtC,MAAM,IAAI,QAAQ,CAAC,QAAS,SAAW,CAC1C,MAAM,IAAI,IAAI,KAAM,KAAO,CACvB,IAAI,IAAM,GACV,IAAI,YAAY,QAAQ,EACxB,IAAI,GAAG,OAAQ,OAAU,KAAO,KAAM,EACtC,IAAI,GAAG,MAAO,IAAM,CAChB,IAAI,KAAO,OAAO,KAAK,IAAK,QAAQ,EAAE,SAAS,QAAQ,EACvD,cACK,OAAO,MAAQ,KAAK,aAAe,KAAK,OAAS,IAAI,IAAI,EACzD,QAAQ,MAAS,KAAK,KAAO,IAAI,IAAK,EAC3C,QAAQ,MAAM,CAClB,CAAC,EACD,IAAI,GAAG,QAAS,IAAM,CAClB,IAAI,KAAO,WACX,cACK,OAAO,MAAQ,KAAK,aAAe,KAAK,OAAS,IAAI,IAAI,EACzD,QAAQ,MAAS,KAAK,KAAO,IAAI,IAAK,EAC3C,OAAO,IAAI,MAAM,4CAA4C,IAAI,IAAI,EAAE,CAAC,CAC5E,CAAC,CACL,CAAC,CACL,CAAC,EAGE,MAAM,IAAI,QAAQ,CAAC,QAAS,SAAW,CAE1C,IAAM,IAAM,IAAI,eAChB,IAAI,OAAS,IAAM,CACf,IAAM,OAAS,IAAI,WACnB,OAAO,UAAY,IAAM,CACrB,IAAI,KAAO,OAAO,OAClB,cACK,OAAO,MAAQ,KAAK,aAAe,KAAK,OAAS,IAAI,IAAI,EACzD,QAAQ,MAAS,KAAK,KAAO,IAAI,IAAK,EACtC,IAAI,SAIL,oBAAoB,GAAG,EAClB,KAAK,IAAM,QAAQ,MAAM,CAAC,EAC1B,MAAM,MAAM,EALjB,QAAQ,MAAM,CAOtB,EACA,OAAO,cAAc,IAAI,QAAQ,CACrC,EACA,IAAI,QAAU,IAAM,CAChB,IAAI,KAAO,WACX,cACK,OAAO,MAAQ,KAAK,aAAe,KAAK,OAAS,IAAI,IAAI,EACzD,QAAQ,MAAS,KAAK,KAAO,IAAI,IAAK,EAC3C,OAAO,IAAI,MAAM,8CAA8C,IAAI,IAAI,EAAE,CAAC,CAC9E,EAEA,IAAI,KAAK,MAAO,IAAI,IAAI,EACxB,IAAI,aAAe,OACnB,IAAI,KAAK,CACb,CAAC,CACL,CAAC,CAAI,CACT,CAAC,EAID,OAAO,WACF,OAAO,KAAO,IAAI,UAAY,IAAI,IAAI,EACtC,QAAQ,KAAO,CACT,UAAU,KAAM,OAAQ,OAAQ,WAAa,CAC5C,QAAU,CAAC,KACX,MAAM,aAAa,GACnB,QAAU,IAEV,IAAI,KAAO,WACX,WAAW,KAAK,QAAQ,QAAQ,MAAM,CAAC,GAGvC,WAAW,KAAK,oBAAoB,GAAG,CAAC,CAEhD,CAAC,CACL,CAAC,EACM,UACX,CAMA,SAAS,oBAAoB,IAAK,CAC9B,OAAO,UAAU,KAAM,OAAQ,OAAQ,WAAa,CAChD,OAAO,MAAM,IAAI,QAAQ,CAAC,QAAS,SAAW,CAE1C,IAAM,MAAQ,IAAI,MAElB,MAAM,OAAS,IAAM,CAEb,MAAM,MAAQ,MAAM,SAAW,GAC/B,MAAM,QAAQ,OAAO,EAEzB,IAAI,OAAS,SAAS,cAAc,QAAQ,EACtC,IAAM,OAAO,WAAW,IAAI,EAClC,OAAO,MAAQ,MAAM,MACrB,OAAO,OAAS,MAAM,OACtB,IAAI,UAAU,MAAO,EAAG,CAAC,EAIzB,GAAI,CACA,IAAI,KAAO,OAAO,UAAU,IAAI,IAAI,EACpC,QAAQ,MAAM,CAClB,OACO,GAAI,CACP,MAAM,QAAQ,GAAG,SAAS,CAAC,CAC/B,CACA,OAAS,IACb,EACA,MAAM,QAAU,IAAM,CAClB,IAAI,KAAO,WACX,OAAO,IAAI,MAAM,gDAAgD,IAAI,IAAI,EAAE,CAAC,CAChF,EAEA,MAAM,IAAM,OAAO,IAAI,MAAS,SAAW,IAAI,KAAO,UAC1D,CAAC,CACL,CAAC,CACL,CAiFA,SAAS,iBAAiB,MAAO,CAC7B,IAAI,GACJ,IAAI,YAAc,MAAM,MAAQ,iBAAmB,MAAM,MAAQ,KAAO,WACpE,YAAc,EAElB,OAAI,MAAM,YACN,aAAe,0EAA0E,MAAM,WAAW,iHAEpG,MAAK,MAAM,cAAgB,MAAQ,KAAO,SAAkB,GAAG,MACrE,aAAe,iBAAiB,qBAAqB,MAAM,UAAU,CAAC,mBAEjE,CAAC,MAAM,MAAQ,MAAM,OAAS,MAAM,QAAU,uBAEnD,aAAe,uEAGnB,aAAe,aACf,aAAe,+EACf,aAAe,gEACf,aAAe,sEAEf,MAAM,cAAc,QAAQ,CAAC,aAAc,MAAQ,CAC/C,IAAIJ,IAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAChC,IAAI,EAAI,EACJ,EAAI,EACJ,GAAK,oBAAoB,MAAO,IAAK,MAAM,WAAW,EACtD,GAAK,EACL,eACA,aAAe,GACf,WAAa,KACb,WAAa,KACb,UAAY,EACZ,QAAU,EACV,SAAW,KACX,OAAS,KACP,QAAUA,IAAK,aAAa,WAAa,MAAQA,MAAO,OAAS,OAASA,IAAG,OAC7E,UAAY,GAAK,aAAa,WAAa,MAAQ,KAAO,OAAS,OAAS,GAAG,SACjF,MAAM,eAAiB,QACvB,MAAM,aAAa,gBAAkB,QACrC,aAAa,SACb,aAAa,QAAQ,cACrB,eAAiB,MAAM,aAAa,cAAc,OAAQ,QAAW,OAAO,QAAQ,cAAgB,aAAa,QAAQ,WAAW,EAAE,CAAC,GAG3I,aAAa,QAAU,aAAa,SAAW,CAAC,EAC5C,OAAO,aAAa,QAAQ,EAAM,MAClC,EAAI,oBAAoB,aAAa,QAAQ,EAAG,IAAK,MAAM,WAAW,GACtE,OAAO,aAAa,QAAQ,EAAM,MAClC,EAAI,oBAAoB,aAAa,QAAQ,EAAG,IAAK,MAAM,WAAW,GACtE,OAAO,aAAa,QAAQ,EAAM,MAClC,GAAK,oBAAoB,aAAa,QAAQ,EAAG,IAAK,MAAM,WAAW,GACvE,OAAO,aAAa,QAAQ,EAAM,MAClC,GAAK,oBAAoB,aAAa,QAAQ,EAAG,IAAK,MAAM,WAAW,GAE3E,IAAI,SAAW,GACX,UAAY,GAoBhB,OAlBI,kBACI,eAAe,QAAQ,GAAK,eAAe,QAAQ,IAAM,KACzD,EAAI,oBAAoB,eAAe,QAAQ,EAAG,IAAK,MAAM,WAAW,IACxE,eAAe,QAAQ,GAAK,eAAe,QAAQ,IAAM,KACzD,EAAI,oBAAoB,eAAe,QAAQ,EAAG,IAAK,MAAM,WAAW,IACxE,eAAe,QAAQ,GAAK,eAAe,QAAQ,IAAM,KACzD,GAAK,oBAAoB,eAAe,QAAQ,EAAG,IAAK,MAAM,WAAW,IACzE,eAAe,QAAQ,GAAK,eAAe,QAAQ,IAAM,KACzD,GAAK,oBAAoB,eAAe,QAAQ,EAAG,IAAK,MAAM,WAAW,IAG7E,aAAa,QAAQ,QACrB,cAAgB,cAChB,aAAa,QAAQ,QACrB,cAAgB,cAChB,aAAa,QAAQ,SACrB,cAAgB,SAAS,uBAAuB,aAAa,QAAQ,MAAM,CAAC,KAExE,aAAa,MAAO,CACxB,KAAK,mBAAmB,MA6BpB,GA5BA,WAAa,aAAa,WAC1B,WAAa,aAAa,QAC1B,UAAY,EACZ,QAAU,EAIV,WAAW,CAAC,EAAE,QAAQ,MAAQ,CAC1B,SAAW,KAAK,SAAW,KAC3B,WAAkE,UAAS,QAAW,OAAO,SAAS,OAAO,EAAI,CACrH,CAAC,EAGD,OAAS,oDAAoD,YAAc,MAAM,UAAY,CAAC,WAAW,aAAa,QAAQ,UAAU,MACxI,QACI,ySAGJ,QAAU,qBAAqB,IAAM,IAAM,EAAI,EAAI,IAAI,QAAQ,IAAM,IAAM,EAAI,EAAI,IAAI,iBAAiB,KAAO,KAAO,EAAI,EAAI,IAAI,SAAS,IAAM,GAAG,eACpJ,QAAU,2GASN,MAAM,QAAQ,WAAW,IAAI,EAAG,CAChC,QAAU,cACV,QAAS,IAAM,EAAG,IAAM,UAAW,MAAO,CACtC,IAAI,EAAI,SAAS,WAAW,KAAK,GAAG,CAAC,GACjC,GAAK,MAAQ,MAAM,CAAC,KACpB,GAAK,OAAO,aAAa,QAAQ,GAAM,SAAW,aAAa,QAAQ,EAAI,GAAK,WAEpF,QAAU,iBAAiB,KAAK,MAAM,CAAC,CAAC,KAC5C,CACA,QAAU,cACd,KACK,CACD,QAAU,WAAW,KAAO,WAAW,KAAO,IAC1C,aAAa,QAAQ,GAAK,CAAC,WAAW,OACtC,QAAU,KAAK,OAAO,OAAO,aAAa,QAAQ,GAAM,SAAW,aAAa,QAAQ,EAAI,GAAK,SAAS,GAC9G,QAAU,cACV,QAAS,KAAO,EAAG,KAAO,UAAW,OACjC,QAAU,iBAAiB,OAAO,MAEtC,QAAU,cACd,CAeA,WAAW,QAAQ,OAAS,CACxB,IAAIA,IAAIK,IACR,QAAS,KAAO,EAAG,KAAO,MAAM,QAAS,CACrC,IAAM,KAAO,MAAM,IAAI,EACjB,SAAWL,IAAK,KAAK,WAAa,MAAQA,MAAO,OAAS,OAASA,IAAG,QACtE,SAAWK,IAAK,KAAK,WAAa,MAAQA,MAAO,OAAS,OAASA,IAAG,QAC5E,GAAI,SAAW,QAAU,EAAG,CACxB,IAAM,YAAc,IAAI,MAAM,QAAU,CAAC,EAAE,KAAK,MAAS,EAAE,IAAI,KACpD,CAAE,MAAO,mBAAmB,UAAW,QAAS,CAAE,OAAQ,EAAG,QAAS,EAAK,EACrF,EACD,MAAM,OAAO,KAAO,EAAG,EAAG,GAAG,WAAW,EACxC,MAAQ,OACZ,MAEI,MAAQ,CAEhB,CACJ,CAAC,EAED,WAAW,QAAQ,CAAC,MAAO,OAAS,CAChC,IAAM,QAAU,WAAW,KAAO,CAAC,EAC9B,SAEL,MAAM,QAAQ,CAAC,KAAM,OAAS,CAC1B,IAAIL,IAAIK,IACR,IAAM,QAAU,KAAK,gBAAkBL,IAAK,KAAK,WAAa,MAAQA,MAAO,OAAS,OAASA,IAAG,SAC5F,SAAWK,IAAK,KAAK,WAAa,MAAQA,MAAO,OAAS,OAASA,IAAG,QACtE,QAAU,KAAK,QACrB,GAAI,SAAW,QAAU,EAAG,CACxB,IAAM,WAAa,CAAE,MAAO,mBAAmB,UAAW,QAAS,CAAE,OAAQ,EAAG,aAAc,QAAU,EAAG,QAAS,GAAM,OAAQ,EAClI,QAAQ,OAAO,KAAM,EAAG,UAAU,CACtC,CACJ,CAAC,CACL,CAAC,EAED,WAAW,QAAQ,CAAC,MAAO,OAAS,CAEhC,IAAI,QAAU,EACV,MAAM,QAAQ,WAAW,IAAI,GAAK,WAAW,KAAK,IAAI,EACtD,QAAU,SAAS,OAAO,WAAW,KAAK,IAAI,CAAC,CAAC,EAC3C,WAAW,MAAQ,CAAC,MAAM,OAAO,WAAW,IAAI,CAAC,EACtD,QAAU,SAAS,OAAO,WAAW,IAAI,CAAC,GACrC,aAAa,QAAQ,IAAM,aAAa,QAAQ,KACrD,QAAU,KAAK,OAAO,aAAa,QAAQ,EAAI,SAAS,aAAa,QAAQ,CAAC,EAAI,OAAO,aAAa,QAAQ,IAAO,SAAW,aAAa,QAAQ,GAAK,GACtJ,WAAW,MAAM,GAGzB,QAAU,YAAY,OAAO,KAE7B,MAAM,QAAQ,SAAW,CACrB,IAAIL,IAAIK,IAAIC,IAAIC,IAAIC,IACpB,IAAM,KAAO,QACP,cAAgB,CAClB,UAAWR,IAAK,KAAK,WAAa,MAAQA,MAAO,OAAS,OAASA,IAAG,SAAW,EAAI,KAAK,QAAQ,QAAU,OAC5G,WAAYK,IAAK,KAAK,WAAa,MAAQA,MAAO,OAAS,OAASA,IAAG,SAAW,EAAI,KAAK,QAAQ,QAAU,OAC7G,OAAQ,KAAK,QAAU,EAAI,OAC3B,OAAQ,KAAK,QAAU,EAAI,MAC/B,EACI,gBAAkB,OAAO,KAAK,aAAa,EAC1C,IAAI,GAAK,CAAC,EAAG,cAAc,CAAC,CAAC,CAAC,EAC9B,OAAO,CAAC,CAAC,CAAE,CAAC,IAAM,CAAC,CAAC,CAAC,EACrB,IAAI,CAAC,CAAC,EAAG,CAAC,IAAM,GAAG,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,EAC7C,KAAK,GAAG,EAIb,GAHI,kBACA,gBAAkB,IAAM,iBAExB,KAAK,SAAW,KAAK,QAAS,CAC9B,QAAU,QAAQ,eAAe,oBACjC,MACJ,CAEA,IAAMI,UAAW,KAAK,SAAW,CAAC,EAClC,KAAK,QAAUA,UACf,CAAC,QAAS,OAAQ,SAAU,QAAS,OAAQ,WAAY,WAAY,SAAU,gBAAiB,YAAa,QAAQ,EAAE,QAAQ,MAAQ,CAC/H,WAAW,IAAI,GAAK,CAACA,UAAS,IAAI,GAAKA,UAAS,IAAI,IAAM,IAC1DA,UAAS,IAAI,EAAI,WAAW,IAAI,EACxC,CAAC,EACD,IAAM,WAAaA,UAAS,OACtB,YAAYA,UAAS,OAAO,QAAQ,OAAQ,KAAK,EAAE,QAAQ,OAAQ,KAAK,EAAE,QAAQ,SAAU,KAAK,EAAE,QAAQ,SAAU,KAAK,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,SAAU,GAAG,CAAC,IAC1L,GACA,YAAeA,UAAS,eAAiBA,UAAS,gBAAkB,OAAU,UAAUA,UAAS,aAAa,IAAM,GACtH,UAAc,GAAAF,KAAMD,IAAK,KAAK,WAAa,MAAQA,MAAO,OAAS,OAASA,IAAG,QAAU,MAAQC,MAAO,SAAkBA,IAAG,MAC3H,KAAK,QAAQ,KAAK,MAChB,GAAAC,IAAK,KAAK,WAAa,MAAQA,MAAO,SAAkBA,IAAG,MAAS,OAAO,KAAK,QAAQ,MAAS,SAC/F,KAAK,QAAQ,KACb,GACV,UAAY,WAAaC,UAAS,KAAOA,UAAS,KAAO,GACzD,IAAM,SAAW,UAAY,qBAAqB,SAAS,EAAI,GAC3D,WAAaA,UAAS,SAAW,GAAKA,UAAS,OAASA,UAAS,OAAS,mBAC1E,CAAC,MAAM,QAAQ,UAAU,GAAK,OAAO,YAAe,WACpD,WAAa,CAAC,WAAY,WAAY,WAAY,UAAU,GAKhE,IAAI,cAAgB,GAChB,WAAW,CAAC,GAAK,EACjB,cAAgB,UAAU,SAAS,WAAW,CAAC,CAAC,CAAC,WAAW,SAAS,WAAW,CAAC,CAAC,CAAC,WAAW,SAAS,WAAW,CAAC,CAAC,CAAC,WAAW,SAAS,WAAW,CAAC,CAAC,CAAC,IAGvJ,cAAgB,UAAU,SAAS,WAAW,CAAC,CAAC,CAAC,WAAW,SAAS,WAAW,CAAC,CAAC,CAAC,WAAW,SAAS,WAAW,CAAC,CAAC,CAAC,WAAW,SAAS,WAAW,CAAC,CAAC,CAAC,IAI3J,QAAU,QAAQ,eAAe,IAAI,eAAe,IAAI,CAAC,UAAU,aAAa,GAAG,UAAU,GAAG,WAAW,IAKvGA,UAAS,QAAU,MAAM,QAAQA,UAAS,MAAM,GAEhD,CACI,CAAE,IAAK,EAAG,KAAM,KAAM,EACtB,CAAE,IAAK,EAAG,KAAM,KAAM,EACtB,CAAE,IAAK,EAAG,KAAM,KAAM,EACtB,CAAE,IAAK,EAAG,KAAM,KAAM,CAC1B,EAAE,QAAQ,KAAO,CACTA,UAAS,OAAO,IAAI,GAAG,EAAE,OAAS,QAClC,QAAU,MAAM,IAAI,IAAI,OAAO,SAASA,UAAS,OAAO,IAAI,GAAG,EAAE,EAAE,CAAC,sCACpE,QAAU,gBAAgB,mBAAmBA,UAAS,OAAO,IAAI,GAAG,EAAE,KAAK,CAAC,iBAC5E,QAAU,oBAAoBA,UAAS,OAAO,IAAI,GAAG,EAAE,OAAS,OAAS,UAAY,OAAO,oGAC5F,QAAU,OAAO,IAAI,IAAI,KAGzB,QAAU,MAAM,IAAI,IAAI,0DAA0D,IAAI,IAAI,GAElG,CAAC,EAGL,QAAU,SACV,QAAU,cACV,QAAU,UACd,CAAC,EAED,QAAU,SACd,CAAC,EAED,QAAU,iBACV,QAAU,uBACV,QAAU,iBACV,QAAU,oBAEV,aAAe,OAEf,cACA,MACJ,KAAK,mBAAmB,KACxB,KAAK,mBAAmB,YAsCpB,GApCI,CAAC,aAAa,QAAQ,MAAQ,KAAO,IACrC,GAAK,IAAM,IAEV,aAAa,QAAQ,YACtB,aAAa,QAAQ,UAAY,CAAC,GAClC,aAAa,QAAQ,QAAU,MAAM,QAAQ,aAAa,QAAQ,MAAM,GACxE,aAAa,QAAQ,UAAU,KAAO,SAAS,aAAa,QAAQ,OAAO,CAAC,GAAK,CAAC,EAClF,aAAa,QAAQ,UAAU,KAAO,SAAS,aAAa,QAAQ,OAAO,CAAC,GAAK,CAAC,EAClF,aAAa,QAAQ,UAAU,KAAO,SAAS,aAAa,QAAQ,OAAO,CAAC,GAAK,CAAC,EAClF,aAAa,QAAQ,UAAU,KAAO,SAAS,aAAa,QAAQ,OAAO,CAAC,GAAK,CAAC,GAE7E,OAAO,aAAa,QAAQ,QAAW,WAC5C,aAAa,QAAQ,UAAU,KAAO,SAAS,aAAa,QAAQ,MAAM,EAC1E,aAAa,QAAQ,UAAU,KAAO,SAAS,aAAa,QAAQ,MAAM,EAC1E,aAAa,QAAQ,UAAU,KAAO,SAAS,aAAa,QAAQ,MAAM,EAC1E,aAAa,QAAQ,UAAU,KAAO,SAAS,aAAa,QAAQ,MAAM,GAG9E,aAAe,SAEf,aAAe,0BAA0B,IAAM,CAAC,WAAW,aAAa,QAAQ,UAAU,KAErF,MAAK,aAAa,QAAQ,aAAe,MAAQ,KAAO,SAAkB,GAAG,MAC9E,aAAe,0BAA0B,aAAa,QAAQ,UAAU,IAAI,cAAc,aAAa,QAAQ,UAAU,QAAU,kBAAkB,aAAa,QAAQ,UAAU,OAAO,EAAI,EAAE,OAEhM,MAAK,aAAa,QAAQ,aAAe,MAAQ,KAAO,SAAkB,GAAG,QAC9E,aAAe,0BAA0B,aAAa,QAAQ,UAAU,IAAI,cAAc,aAAa,QAAQ,UAAU,QAAU,kBAAkB,aAAa,QAAQ,UAAU,OAAO,EAAI,EAAE,wCAGrM,aAAe,aACf,aAAe,cAAkB,MAAK,aAAa,WAAa,MAAQ,KAAO,SAAkB,GAAG,UAAa,eAAiB,MAClI,aAAe,WAAW,aAAa,QAAU,cAAgB,kBAAkB,YAAY,EAAI,kBAAkB,cAAc,CAAC,YACpI,aAAe,sBACf,aAAe,UAAU,YAAY,IACrC,aAAe,aAAa,CAAC,QAAQ,CAAC,MACtC,aAAe,cAAc,EAAE,SAAS,EAAE,eACtC,aAAa,QAAU,WACvB,aAAe,0BACf,aAAe,YACf,aAAe,aACf,aAAe,cACf,aAAe,aACf,aAAe,cACf,aAAe,qCACf,aAAe,cACf,aAAe,cAAc,EAAE,QAAQ,EAAE,MACxC,GAAK,aAAa,QAAQ,UAAY,MAAQ,KAAO,QAAkB,GAAG,QAAQ,CAAC,MAAO,IAAM,CAC7F,GAAI,UAAW,MACX,OAAQ,MAAM,MAAM,KAAM,CACtB,IAAK,MACD,aAAe,gBAAgB,oBAAoB,MAAM,MAAM,GAAI,IAAK,MAAM,WAAW,CAAC,SAAS,oBAAoB,MAAM,MAAM,GAAI,IAAK,MAAM,WAAW,CAAC,YAAY,uBAAuB,MAAM,MAAM,KAAK,CAAC,YAAY,uBAAuB,MAAM,MAAM,KAAK,CAAC,OACxQ,MACJ,IAAK,QACD,aAAe;AAAA,oBAC/B,oBAAoB,MAAM,MAAM,GAAI,IAAK,MAAM,WAAW,CAAC,QAAQ,oBAAoB,MAAM,MAAM,GAAI,IAAK,MAAM,WAAW,CAAC;AAAA,oBAC9H,oBAAoB,MAAM,MAAM,GAAI,IAAK,MAAM,WAAW,CAAC,QAAQ,oBAAoB,MAAM,MAAM,GAAI,IAAK,MAAM,WAAW,CAAC;AAAA,oBAC9H,oBAAoB,MAAM,EAAG,IAAK,MAAM,WAAW,CAAC,QAAQ,oBAAoB,MAAM,EAAG,IAAK,MAAM,WAAW,CAAC;AAAA,0BAEhG,MACJ,IAAK,YACD,aAAe;AAAA,oBAC/B,oBAAoB,MAAM,MAAM,GAAI,IAAK,MAAM,WAAW,CAAC,QAAQ,oBAAoB,MAAM,MAAM,GAAI,IAAK,MAAM,WAAW,CAAC;AAAA,oBAC9H,oBAAoB,MAAM,EAAG,IAAK,MAAM,WAAW,CAAC,QAAQ,oBAAoB,MAAM,EAAG,IAAK,MAAM,WAAW,CAAC;AAAA,yBAEhG,KACR,KAEK,UAAW,MAChB,aAAe,cAEV,MAAM,QAAU,IAAM,EAC3B,aAAe,sBAAsB,oBAAoB,MAAM,EAAG,IAAK,MAAM,WAAW,CAAC,QAAQ,oBAAoB,MAAM,EAAG,IAAK,MAAM,WAAW,CAAC,kBAGrJ,aAAe,oBAAoB,oBAAoB,MAAM,EAAG,IAAK,MAAM,WAAW,CAAC,QAAQ,oBAAoB,MAAM,EAAG,IAAK,MAAM,WAAW,CAAC,eAE3J,CAAC,EACD,aAAe,YACf,aAAe,eACf,aAAe,oBAEd,CAED,GADA,aAAe,qBAAuB,aAAa,MAAQ,cACvD,aAAa,QAAQ,WACrB,aAAe,8BAA8B,KAAK,MAAO,aAAa,QAAQ,WAAa,IAAM,IAAU,KAAK,IAAI,GAAI,EAAE,CAAC,CAAC,cAEvH,aAAa,QAAQ,WAAY,CACtC,QAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CACxB,IAAM,MAAQ,aAAa,QAAQ,WAAW,CAAC,EAC/C,aAAe,kBAAkB,EAAI,CAAC,eAAe,uBAAuB,KAAK,CAAC,MACtF,CACI,aAAa,QAAQ,oBACrB,aAAe,+BAA+B,KAAK,MAAM,aAAa,QAAQ,kBAAoB,GAAK,CAAC,OAEhH,CACA,aAAe,yBACnB,CAEA,aAAe,aAAa,QAAQ,KAAO,qBAAqB,aAAa,QAAQ,IAAI,EAAI,cAEzF,aAAa,QAAQ,OACrB,aAAe,aAAa,QAAQ,KAAK,MAAQ,YAAY,SAAS,aAAa,QAAQ,KAAK,KAAK,CAAC,KAAO,SACzG,aAAa,QAAQ,KAAK,QAC1B,aAAe,qBAAqB,aAAa,QAAQ,IAAI,GAC7D,aAAa,QAAQ,KAAK,WAC1B,aAAe,oBAAoB,aAAa,QAAQ,KAAK,QAAQ,OACrE,aAAa,QAAQ,KAAK,iBAC1B,aAAe,oBAAoB,aAAa,QAAQ,KAAK,cAAc,OAC3E,aAAa,QAAQ,KAAK,eAC1B,aAAe,oBAAoB,aAAa,QAAQ,KAAK,YAAY,OAE7E,aAAe,WAGf,aAAa,QAAQ,QAAU,aAAa,QAAQ,OAAO,OAAS,SACpE,aAAa,QAAQ,OAAO,KAAO,aAAa,QAAQ,OAAO,MAAQ,QACvE,aAAa,QAAQ,OAAO,KAAO,SAAS,aAAa,QAAQ,OAAO,MAAQ,CAAC,EACjF,aAAa,QAAQ,OAAO,OAAS,SAAS,aAAa,QAAQ,OAAO,QAAU,CAAC,EACrF,aAAa,QAAQ,OAAO,MAAQ,KAAK,OAAO,aAAa,QAAQ,OAAO,OAAS,KAAO,GAAK,EACjG,aAAa,QAAQ,OAAO,QAAU,KAAK,OAAO,aAAa,QAAQ,OAAO,SAAW,KAAQ,GAAM,EACvG,aAAa,QAAQ,OAAO,MAAQ,aAAa,QAAQ,OAAO,OAAS,gBAAgB,MACzF,aAAe,gBACf,aAAe,OAAO,aAAa,QAAQ,OAAO,IAAI,QAAQ,aAAa,QAAQ,OAAO,OAAS,QAAU,mEAAqE,EAAE,aAAa,aAAa,QAAQ,OAAO,IAAI,WAAW,aAAa,QAAQ,OAAO,MAAM,UAAU,aAAa,QAAQ,OAAO,KAAK,KACzT,aAAe,oBAAoB,aAAa,QAAQ,OAAO,KAAK,KACpE,aAAe,kBAAkB,aAAa,QAAQ,OAAO,OAAO,kBACpE,aAAe,kBACf,aAAe,kBAanB,aAAe,YAEf,aAAe,eAAe,YAAY,EAE1C,aAAe,UACf,MACJ,KAAK,mBAAmB,MAgCpB,GA/BA,aAAe,UACf,aAAe,gBACf,aAAe,gBAAgB,IAAM,CAAC,WAAW,aAAa,QAAQ,UAAU,YAAY,kBAAkB,aAAa,QAAQ,SAAW,aAAa,KAAK,CAAC,KAC5J,MAAK,aAAa,aAAe,MAAQ,KAAO,SAAkB,GAAG,MACtE,aAAe,0BAA0B,aAAa,UAAU,IAAI,cAAc,aAAa,UAAU,QAAU,kBAAkB,aAAa,UAAU,OAAO,EAAI,EAAE,OAExK,MAAK,aAAa,aAAe,MAAQ,KAAO,SAAkB,GAAG,QACtE,aAAe,0BAA0B,aAAa,UAAU,IAAI,cAAc,aAAa,UAAU,QAAU,kBAAkB,aAAa,UAAU,OAAO,EAAI,EAAE,wCAE7K,aAAe,iBACf,aAAe,gEACf,aAAe,eAAiB,kBAAkB,cAAc,EAAI,YACpE,aAAe,iBACf,aAAe,gBAEV,MAAM,YAAc,CAAC,GAAG,OAAO,KAAO,IAAI,MAAQ,aAAa,QAAQ,EAAE,CAAC,IAC1E,MAAM,YAAc,CAAC,GAAG,OAAO,KAAO,IAAI,MAAQ,aAAa,QAAQ,EAAE,CAAC,EAAE,OAAS,OACtF,aAAe,uBAAuB,aAAa,SAAW,CAAC,KAC/D,aAAe,aAAa,QAAQ,aAAe,wBAAwB,KAAK,OAAO,IAAM,aAAa,QAAQ,cAAgB,GAAI,CAAC,MAAQ,GAC/I,aAAe,cACf,aAAe,yDACf,aAAe,uGAAuG,aAAa,QAAQ,MAC3I,aAAe,aACf,aAAe,eACf,aAAe,cAGf,aAAe,uBAAuB,aAAa,QAAQ,KAC3D,aAAe,aAAa,QAAQ,aAAe,uBAAuB,KAAK,OAAO,IAAM,aAAa,QAAQ,cAAgB,GAAI,CAAC,MAAQ,GAC9I,aAAe,aAEiC,QAAO,KAAM,CAC7D,IAAM,KAAO,OAAO,EAAI,oBAAoB,OAAO,EAAG,IAAK,MAAM,WAAW,EAAI,GAC1E,KAAO,OAAO,EAAI,oBAAoB,OAAO,EAAG,IAAK,MAAM,WAAW,EAAI,GAC1E,KAAO,oBAAoB,OAAO,GAAK,EAAG,IAAK,MAAM,WAAW,EAChE,KAAO,oBAAoB,OAAO,GAAK,EAAG,IAAK,MAAM,WAAW,EACtE,aAAe,eAAe,OAAO,IAAI,EAAE,CAAE,EAAG,SAAU,EAAG,SAAU,EAAG,CAAE,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,IAAK,CAAC,EAChH,SAAW,KACX,UAAY,IAChB,MAEI,aAAe,yCAEnB,aAAe,gBACf,aAAe,WACf,aAAe,WAAa,aAAe,IAC3C,aAAe,eAAe,CAAC,QAAQ,CAAC,MACxC,aAAe,gBAAgB,QAAQ,SAAS,SAAS,MACzD,aAAe,aACf,aAAe,sBAAsB,SAAW,UAAY,MAAM,4BAE9D,aAAa,QAAQ,QAAU,aAAa,QAAQ,OAAO,OAAS,SACpE,aAAa,QAAQ,OAAO,KAAO,aAAa,QAAQ,OAAO,MAAQ,QACvE,aAAa,QAAQ,OAAO,KAAO,SAAS,aAAa,QAAQ,OAAO,MAAQ,CAAC,EACjF,aAAa,QAAQ,OAAO,OAAS,SAAS,aAAa,QAAQ,OAAO,QAAU,CAAC,EACrF,aAAa,QAAQ,OAAO,MAAQ,KAAK,OAAO,aAAa,QAAQ,OAAO,OAAS,KAAO,GAAK,EACjG,aAAa,QAAQ,OAAO,QAAU,KAAK,OAAO,aAAa,QAAQ,OAAO,SAAW,KAAQ,GAAM,EACvG,aAAa,QAAQ,OAAO,MAAQ,aAAa,QAAQ,OAAO,OAAS,gBAAgB,MACzF,aAAe,gBACf,aAAe,MAAM,aAAa,QAAQ,OAAO,IAAI,QAAQ,aAAa,QAAQ,OAAO,OAAS,QAAU,mEAAqE,EAAE,aAAa,aAAa,QAAQ,OAAO,IAAI,WAAW,aAAa,QAAQ,OAAO,MAAM,UAAU,aAAa,QAAQ,OAAO,KAAK,KACxT,aAAe,mBAAmB,aAAa,QAAQ,OAAO,KAAK,KACnE,aAAe,iBAAiB,aAAa,QAAQ,OAAO,OAAO,kBACnE,aAAe,OAAO,aAAa,QAAQ,OAAO,IAAI,QACtD,aAAe,kBAEnB,aAAe,YACf,aAAe,WACf,MACJ,KAAK,mBAAmB,MAChB,aAAa,QAAU,UACvB,aAAe,UACf,aAAe,eAEf,aAAe,gBAAgB,aAAa,SAAW,CAAC,WAAW,aAAa,QAAQ,UAAU,MAClG,aAAe,iBACf,aAAe,YACf,aAAe,6BAA6B,aAAa,QAAQ,MACjE,aAAe,aACf,aAAe,gBAEf,aAAe,oCAAoC,aAAa,SAAW,CAAC,uDAC5E,aAAe,YACf,aAAe,YAAY,YAAY,cAAc,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,EAAE,eAC7F,aAAe,oDACf,aAAe,aACf,aAAe,aAGf,aAAe,UACf,aAAe,eAEf,aAAe,gBAAgB,aAAa,SAAW,CAAC,WAAW,aAAa,QAAQ,UAAU,gEAClG,aAAe,6DACf,aAAe,YACf,aAAe,6BAA6B,aAAa,QAAQ,MACjE,aAAe,eACf,aAAe,0DACf,aAAe,mGAAmG,aAAa,SAAW,CAAC,MAC3I,aAAe,cACf,aAAe,gBACf,aAAe,aACf,aAAe,gBACf,aAAe,oCAAoC,aAAa,SAAW,CAAC,uDAC5E,aAAe,YACf,aAAe,YAAY,YAAY,cAAc,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,EAAE,eAC7F,aAAe,oDACf,aAAe,aACf,aAAe,YAEnB,MACJ,KAAK,mBAAmB,MACpB,aAAe,mBACf,aAAe,wBACf,aAAe,mBAAmB,IAAM,CAAC,WAAW,aAAa,QAAQ,UAAU,YAAY,kBAAkB,aAAa,QAAQ,SAAW,EAAE,CAAC,MACpJ,aAAe,4BACf,aAAe,cAAc,kBAAkB,cAAc,CAAC,YAC9D,aAAe,yBACf,aAAe,sBAAsB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,EAAE,eAC7E,aAAe,+EACf,aAAe,iFACf,aAAe,wBAAwB,aAAa,QAAQ,uEAC5D,aAAe,qBACf,aAAe,gBACf,aAAe,oBACf,MACJ,QACI,aAAe,GACf,KACR,CACJ,CAAC,EAEG,MAAM,oBAED,MAAM,kBAAkB,QACzB,MAAM,kBAAkB,MAAQ,QACpC,aAAe,SACf,aAAe,cACf,aAAe,sGACf,aAAe,yEACf,aAAe,eACf,aAAe,YACf,aAAe,qBACE,oBAAoB,MAAM,kBAAkB,EAAG,IAAK,MAAM,WAAW,CAAC,QAAQ,oBAAoB,MAAM,kBAAkB,EAAG,IAAK,MAAM,WAAW,CAAC,iBACnJ,MAAM,kBAAkB,EAAI,oBAAoB,MAAM,kBAAkB,EAAG,IAAK,MAAM,WAAW,EAAI,QAAQ,SAAS,MAAM,kBAAkB,EAAI,oBAAoB,MAAM,kBAAkB,EAAG,IAAK,MAAM,WAAW,EAAI,QAAQ,sQAKrP,aAAe,aACf,aAAe,YACX,MAAM,kBAAkB,QAAU,MAAM,QAAQ,MAAM,kBAAkB,MAAM,GAC9E,aAAe,UAAU,SAAS,MAAM,kBAAkB,OAAO,CAAC,GAAK,CAAC,CAAC,IACzE,aAAe,UAAU,SAAS,MAAM,kBAAkB,OAAO,CAAC,GAAK,CAAC,CAAC,IACzE,aAAe,UAAU,SAAS,MAAM,kBAAkB,OAAO,CAAC,GAAK,CAAC,CAAC,IACzE,aAAe,UAAU,SAAS,MAAM,kBAAkB,OAAO,CAAC,GAAK,CAAC,CAAC,KAEpE,OAAO,MAAM,kBAAkB,QAAW,WAC/C,aAAe,UAAU,SAAS,MAAM,kBAAkB,QAAU,CAAC,CAAC,IACtE,aAAe,UAAU,SAAS,MAAM,kBAAkB,QAAU,CAAC,CAAC,IACtE,aAAe,UAAU,SAAS,MAAM,kBAAkB,QAAU,CAAC,CAAC,IACtE,aAAe,UAAU,SAAS,MAAM,kBAAkB,QAAU,CAAC,CAAC,KAEtE,MAAM,kBAAkB,SACxB,aAAe,YAAY,MAAM,kBAAkB,OAAO,QAAQ,MAAO,GAAG,EAAE,QAAQ,SAAU,KAAK,EAAE,QAAQ,SAAU,GAAG,CAAC,KAEjI,aAAe,KACf,aAAe,6BACX,MAAM,kBAAkB,UAAY,MAAM,kBAAkB,UAAY,MAAM,kBAAkB,SAChG,aAAe,iBAAiB,KAAK,OAAO,MAAM,kBAAkB,UAAY,IAAM,GAAG,CAAC,KACtF,MAAM,kBAAkB,QACxB,aAAe,qBAAqB,MAAM,kBAAkB,KAAK,GACjE,MAAM,kBAAkB,WACxB,aAAe,sBAAsB,MAAM,kBAAkB,QAAQ,sBAAsB,MAAM,kBAAkB,QAAQ,sBAAsB,MAAM,kBAAkB,QAAQ,OAErL,aAAe,eAEnB,aAAe,4BACf,aAAe,QACX,MAAM,kBAAkB,MAAM,WAAW,GAAG,EAC5C,aAAe,oBACV,MAAM,kBAAkB,MAAM,WAAW,GAAG,EACjD,aAAe,sBACV,MAAM,kBAAkB,MAAM,WAAW,GAAG,EACjD,aAAe,oBAEf,aAAe,oBACnB,aAAe,cAAc,WAAW,+BAA+B,MAAM,kBAAkB,KAAO,EAAI,CAAC,mBAC3G,aAAe,QAAQ,MAAM,SAAS,mDACtC,aAAe,sBAGnB,aAAe,cACf,aAAe,YAER,WACX,CASA,SAAS,0BAA0B,MAAO,YAAa,CACnD,IAAI,QAAU,EACV,OAAS,0DAA4D,KAAO,uFAEhF,aAAM,MAAM,QAAS,KAAQ,CACzB,QAAU,KAAK,IAAI,QAAS,IAAI,GAAG,EAC/B,IAAI,KAAK,YAAY,EAAE,SAAS,WAAW,EACvC,IAAI,OAAS,QACb,QAAU,wBAAwB,IAAI,GAAG,mGAAmG,IAAI,MAAM,UAGtJ,QAAU,wBAAwB,IAAI,GAAG,kGAAkG,IAAI,MAAM,4BAGpJ,IAAI,KAAK,YAAY,EAAE,SAAS,YAAY,IACjD,QAAU,wBAAwB,IAAI,GAAG,aAAa,IAAI,MAAM,4FAExE,CAAC,GACA,MAAM,YAAc,CAAC,GAAG,QAAS,KAAQ,CACtC,QAAU,KAAK,IAAI,QAAS,IAAI,GAAG,EACnC,QAAU,wBAAwB,IAAI,GAAG,8FAA8F,IAAI,MAAM,KACrJ,CAAC,GACA,MAAM,YAAc,CAAC,GAAG,QAAS,KAAQ,CACtC,IAAM,OAAS,IAAI,IAAI,SAAS,EAChC,QAAU,KAAK,IAAI,QAAS,IAAI,GAAG,EAC/B,IAAI,KAAK,YAAY,EAAE,SAAS,OAAO,EACvC,QAAU,wBAA0B,OAAS,8FAAgG,IAAI,OAAS,MAErJ,IAAI,KAAK,YAAY,EAAE,SAAS,OAAO,EAExC,OAAO,SAAS,YAAc,IAAI,OAAS,GAAG,EAC9C,QAAU,wBAA0B,OAAS,iFAAmF,IAAI,OAAS,MAG7I,QAAU,wBAA0B,OAAS,8FAAgG,IAAI,OAAS,MAGzJ,IAAI,KAAK,YAAY,EAAE,SAAS,OAAO,EAExC,OAAO,SAAS,YAAc,IAAI,OAAS,GAAG,EAC9C,QAAU,wBAA0B,OAAS,iFAAmF,IAAI,OAAS,MAG7I,QAAU,wBAA0B,OAAS,8FAAgG,IAAI,OAAS,MAGzJ,IAAI,KAAK,YAAY,EAAE,SAAS,QAAQ,IAEzC,OAAO,SAAS,YAAc,IAAI,OAAS,GAAG,EAC9C,QAAU,wBAA0B,OAAS,iFAAmF,IAAI,OAAS,MAG7I,QAAU,wBAA0B,OAAS,aAAe,IAAI,OAAS,6GAGrF,CAAC,EAED,YAAY,QAAQ,CAAC,IAAK,MAAQ,CAC9B,QAAU,wBAAwB,QAAU,IAAM,CAAC,WAAW,IAAI,IAAI,aAAa,IAAI,MAAM,KACjG,CAAC,EACD,QAAU,mBACH,MACX,CAOA,SAAS,0BAA0B,QAAS,UAAW,CACnD,IAAI,GAAI,GACR,IAAI,aAAe,GACf,YAAc,GACd,cAAgB,GAChB,eAAiB,GACf,IAAM,UAAY,YAAc,QAClC,WAAa,SAAS,iBAAiB,EACvC,iBAAmB,IAAI,GAAG,GAAG,QAAQ,QAAQ,QAAU,YAAc,EAAE,GAE3E,CAEI,GAAI,QAAQ,QAAQ,MAChB,OAAQ,QAAQ,QAAQ,MAAO,CAC3B,IAAK,OACD,kBAAoB,YACpB,MACJ,IAAK,QACD,kBAAoB,YACpB,MACJ,IAAK,SACD,kBAAoB,cACpB,MACJ,IAAK,UACD,kBAAoB,eACpB,MACJ,QACI,kBAAoB,GACpB,KACR,CAsBJ,GApBI,QAAQ,QAAQ,YAChB,YAAc,2BAA2B,KAAK,MAAM,QAAQ,QAAQ,YAAc,GAAG,CAAC,gBAEjF,QAAQ,QAAQ,sBACrB,YAAc,2BAA2B,KAAK,MAAM,QAAQ,QAAQ,oBAAsB,GAAM,CAAC,iBAGjG,QAAQ,QAAQ,aAAe,CAAC,MAAM,OAAO,QAAQ,QAAQ,WAAW,CAAC,GAAK,QAAQ,QAAQ,YAAc,IAC5G,kBAAoB,SAAS,QAAQ,QAAQ,WAAW,KAGxD,QAAQ,QAAQ,iBAAmB,CAAC,MAAM,OAAO,QAAQ,QAAQ,eAAe,CAAC,GAAK,QAAQ,QAAQ,gBAAkB,IACxH,eAAiB,4BAA4B,KAAK,MAAM,QAAQ,QAAQ,gBAAkB,GAAG,CAAC,kBAE9F,QAAQ,QAAQ,gBAAkB,CAAC,MAAM,OAAO,QAAQ,QAAQ,cAAc,CAAC,GAAK,QAAQ,QAAQ,eAAiB,IACrH,eAAiB,4BAA4B,KAAK,MAAM,QAAQ,QAAQ,eAAiB,GAAG,CAAC,kBAK7F,OAAO,QAAQ,QAAQ,QAAW,SAGlC,GAFK,OAAM,GAAuD,SAAQ,WAAa,MAAQ,KAAO,OAAS,OAAS,GAAG,UAAY,MAAQ,KAAO,SAAkB,GAAG,SACvK,WAAa,SAAS,QAAQ,QAAQ,OAAO,MAAM,GACnD,QAAQ,QAAQ,OAAO,KACnB,QAAQ,QAAQ,OAAO,KAAK,SAAS,EAAE,YAAY,IAAM,WACzD,kBAAoB,UAAU,QAAQ,QAAQ,aAAe,QAAQ,QAAQ,YAAc,EAAI,WAAa,WAAa,QAAQ,QAAQ,YAAc,UAAU,cAAc,UAAU,IACzL,aAAe,4EAA4E,QAAQ,QAAQ,OAAO,OAAS,cAAc,cAAc,QAAQ,QAAQ,OAAO,eAAiB,QAAQ,QAAQ,OAAO,SAAW,GAAG,eAGnO,QAAQ,QAAQ,OAAO,cAAe,CAC3C,IAAI,WAAa,MAAM,QAAQ,QAAQ,OAAO,aAAa,IAEtD,mBAAmB,KAAK,QAAQ,QAAQ,OAAO,aAAa,IAC7D,QAAQ,KAAK,mFAAmF,EAChG,WAAa,aAAa,SAE9B,kBAAoB,UAAU,QAAQ,QAAQ,aAAe,QAAQ,QAAQ,YAAc,EAAI,WAAa,WAAa,QAAQ,QAAQ,YAAc,UAAU,cAAc,UAAU,IACzL,aAAe,4CAA8C,WAAa,KAC9E,SACS,QAAQ,QAAQ,OAAO,KAAM,CAElC,IAAI,WAAa,MAAM,QAAQ,QAAQ,OAAO,IAAI,IAE7C,mBAAmB,KAAK,QAAQ,QAAQ,OAAO,IAAI,IACpD,QAAQ,KAAK,iEAAiE,EAC9E,WAAa,aAAa,SAE9B,kBAAoB,UAAU,QAAQ,QAAQ,aAAe,QAAQ,QAAQ,YAAc,EAAI,WAAa,WAAa,QAAQ,QAAQ,YAAc,UAAU,cAAc,UAAU,IACzL,aAAe,4CAA8C,WAAa,KAC9E,MAEI,kBAAoB,UAAU,QAAQ,QAAQ,aAAe,QAAQ,QAAQ,YAAc,EAAI,WAAa,WAAa,QAAQ,QAAQ,YAAc,UAAU,cAAc,UAAU,IACzL,aAAe,4CAA4C,aAAa,OAAO,WAG9E,QAAQ,QAAQ,QACrB,kBAAoB,UAAU,QAAQ,QAAQ,aAAe,QAAQ,QAAQ,YAAc,EAAI,WAAa,WAAa,QAAQ,QAAQ,YAAc,UAAU,cAAc,UAAU,IACzL,aAAe,4CAA4C,aAAa,OAAO,OAEzE,QAAQ,QAAQ,SAEtB,kBAAoB,uBACpB,aAAe,eAGf,QAAQ,QAAQ,UAAY,MAAM,QAAQ,QAAQ,QAAQ,QAAQ,IAElE,eAAiB,aADG,QAAQ,QAAQ,SAAS,IAAI,MAAQ,eAAe,SAAS,KAAK,UAAY,CAAC,CAAC,WAAW,KAAK,WAAa,GAAG,KAAK,EAAE,KAAK,EAAE,CACzG,eAI7C,kBAAoB,IAAM,YAAc,cAAgB,aAAe,eACnE,YACA,kBAAoB,wBAAwB,QAAQ,QAAS,EAAI,GACrE,kBAAoB,KAAO,IAAM,GACrC,CACA,OAAO,gBACX,CAOA,SAAS,wBAAwB,KAAM,UAAW,CAC9C,IAAI,GACJ,IAAI,SAAW,GACT,YAAc,UAAY,WAAa,QA+C7C,GA7CA,UAAY,IAAM,YAAc,WAAa,KAAK,KAAO,KAAK,KAAO,SAAW,KAAO,KAAK,KAAO,mBAAqB,IACxH,UAAY,KAAK,SAAW,QAAQ,KAAK,MAAM,KAAK,SAAW,GAAG,CAAC,IAAM,GACzE,UAAyD,MAAK,KAAQ,OAAO,KAAK,KAAO,IAAM,GAAG,IAAM,GACxG,UAAyD,MAAK,OAAU,OAAO,KAAK,OAAS,IAAM,GAAG,IAAM,GAC5G,UAAyD,MAAK,OAAU,YAAY,OAAO,KAAK,QAAW,SAAW,KAAK,OAAS,WAAW,IAAM,GACjJ,OAAO,KAAK,WAAc,WAAc,MAAK,KAAK,aAAe,MAAQ,KAAO,SAAkB,GAAG,OACrG,UAAY,OAAO,KAAK,UAAU,KAAK,IAElC,OAAO,KAAK,WAAc,SAE/B,UAAY,OAAO,OAAO,KAAK,SAAS,CAAC,IAEpC,KAAK,YACV,UAAY,YAEZ,KAAK,SACL,UAAY,cAAc,KAAK,MAAM,KAAK,SAAW,EAAE,CAAC,IAEnD,KAAK,UACV,UAAY,qBAEP,KAAK,cACV,UAAY,qBAEhB,UAAY,KAAK,YAAc,SAAS,KAAK,MAAM,KAAK,YAAc,GAAG,CAAC,aAAe,GACzF,UAAY,eAER,KAAK,OAAS,KAAK,UAAY,KAAK,SAAY,OAAO,KAAK,WAAc,UAAY,KAAK,UAAU,SACjG,KAAK,SAAW,OAAO,KAAK,SAAY,WACxC,UAAY,YAAY,SAAS,KAAK,QAAQ,MAAQ,GAAI,CAAC,KAAK,qBAAqB,KAAK,QAAQ,OAAS,QAAQ,CAAC,WAEpH,KAAK,QACL,UAAY,qBAAqB,CAAE,MAAO,KAAK,MAAO,aAAc,KAAK,YAAa,CAAC,GACvF,KAAK,YACL,UAAY,gBAAgB,mBAAmB,KAAK,SAAS,CAAC,kBAC9D,OAAO,KAAK,WAAc,UAAY,KAAK,UAAU,QACrD,UAAY,YAAY,qBAAqB,KAAK,UAAU,KAAK,CAAC,cAClE,KAAK,OACL,UAAY,gBAAgB,kBAAkB,KAAK,KAAM,aAAa,CAAC,kBACvE,KAAK,WAEL,UAAY,sBAAsB,KAAK,QAAQ,mDAAmD,KAAK,QAAQ,sDAAsD,KAAK,QAAQ,wCAItL,KAAK,UAAW,CAChB,GAAI,OAAO,KAAK,WAAc,SAC1B,MAAM,IAAI,MAAM,iGAAmG,EAClH,GAAI,CAAC,KAAK,UAAU,KAAO,CAAC,KAAK,UAAU,MAC5C,MAAM,IAAI,MAAM,qDAAuD,EAClE,KAAK,UAAU,IAEpB,UAAY,0BAA0B,KAAK,UAAU,IAAI,kDAAkD,KAAK,UAAU,QAAU,kBAAkB,KAAK,UAAU,OAAO,EAAI,EAAE,8CAA8C,KAAK,MAAQ,IAAM,IAAI,GAElP,KAAK,UAAU,QACpB,UAAY,0BAA0B,KAAK,UAAU,IAAI,+CAA+C,KAAK,UAAU,QAAU,kBAAkB,KAAK,UAAU,OAAO,EAAI,EAAE,IAAI,KAAK,MAAQ,IAAM,IAAI,IAE1M,KAAK,QACL,UAAY,cACZ,UAAY,yDACZ,UAAY,4GACZ,UAAY,aACZ,UAAY,eACZ,UAAY,kBAEpB,CAEA,iBAAY,KAAK,WAAW,IACrB,QACX,CAMA,SAAS,cAAc,QAAS,CA6B5B,OAAO,QAAQ,KAAO,QAAQ,wBAAwB,QAAQ,QAAS,EAAK,CAAC,QAAQ,kBAAkB,QAAQ,IAAI,CAAC,eAAiB,EACzI,CAMA,SAAS,qBAAqB,YAAa,CACvC,IAAI,eAAiB,YACrB,OAAI,aAAe,YAAY,QAAU,mBAAmB,MAAQ,YAAY,QAAQ,WAGpF,gBAAkB,YAAY,QAAQ,UAAU,KAAO,iBAAmB,gBAEtE,YAAY,QAAQ,UAAU,MAAQ,YAAY,QAAQ,UAAU,OAAS,KAC7E,gBAAkB,UAAU,YAAY,QAAQ,UAAU,IAAI,MAC9D,YAAY,QAAQ,UAAU,MAAQ,YAAY,QAAQ,UAAU,OAAS,KAC7E,gBAAkB,UAAU,YAAY,QAAQ,UAAU,IAAI,MAC9D,YAAY,QAAQ,UAAU,MAAQ,YAAY,QAAQ,UAAU,OAAS,KAC7E,gBAAkB,UAAU,YAAY,QAAQ,UAAU,IAAI,MAC9D,YAAY,QAAQ,UAAU,MAAQ,YAAY,QAAQ,UAAU,OAAS,KAC7E,gBAAkB,UAAU,YAAY,QAAQ,UAAU,IAAI,KAElE,gBAAkB,cAEd,YAAY,QAAQ,UAAU,SAC9B,gBAAkB,YAAc,YAAY,QAAQ,UAAU,OAAS,KACvE,YAAY,QAAQ,UAAU,OAC9B,gBAAkB,UAAY,YAAY,QAAQ,UAAU,KAAO,KAEvE,gBAAkB,IAMd,YAAY,QAAQ,MAEhB,YAAY,QAAQ,MAAQ,OAC5B,gBAAkB,GAGb,YAAY,QAAQ,MAAQ,SACjC,gBAAkB,mBACb,YAAY,QAAQ,MAAQ,WACjC,gBAAkB,mBAItB,YAAY,QAAQ,aACpB,gBAAkB,oBAKtB,gBAAkB,YAAY,QAAQ,UAAU,QAAU,iBAAmB,GAE7E,gBAAkB,gBAIlB,gBAAkB,6BAClB,gBAAkB,eAGf,YAAY,QAAU,mBAAmB,UAAY,cAAgB,cAChF,CAuBA,SAAS,eAAe,SAAU,CAC9B,IAAM,KAAO,SAAS,SAAW,CAAC,EAC9B,eAAiB,CAAC,EAChB,eAAiB,CAAC,EAExB,GAAI,MAAQ,SAAS,QAAU,mBAAmB,YAAc,OAAO,SAAS,KAAS,KAAe,SAAS,OAAS,MACtH,MAAO,GAEX,IAAI,YAAc,SAAS,QAAU,mBAAmB,UAAY,aAAe,aAI/E,aAAe,qBAAqB,QAAQ,EAIxC,KAAK,IAAM,GAAK,KAAK,MAAQ,KAAK,MAClC,aAAe,iDACV,SAAS,QAAU,cACxB,aAAe,eAAe,0BAA0B,SAAU,EAAI,CAAC,gBAEvE,aAAe,gBAWnB,OAAO,SAAS,MAAS,UAAY,OAAO,SAAS,MAAS,SAE9D,eAAe,KAAK,CAAE,KAAM,SAAS,KAAK,SAAS,EAAG,QAAS,MAAQ,CAAC,CAAE,CAAC,EAEtE,SAAS,MAAQ,CAAC,MAAM,QAAQ,SAAS,IAAI,GAAK,OAAO,SAAS,MAAS,UAAY,OAAO,KAAK,SAAS,IAAI,EAAE,SAAS,MAAM,EAGtI,eAAe,KAAK,CAAE,KAAM,SAAS,MAAQ,GAAI,QAAS,SAAS,SAAW,CAAC,CAAE,CAAC,EAE7E,MAAM,QAAQ,SAAS,IAAI,IAGhC,eAAiB,SAAS,KAAK,IAAI,OAAS,CAAE,KAAM,KAAK,KAAM,QAAS,KAAK,OAAQ,EAAE,GAG3F,eAAe,QAAQ,CAAC,MAAO,MAAQ,CAC9B,MAAM,OACP,MAAM,KAAO,IAEjB,MAAM,QAAU,MAAM,SAAW,MAAQ,CAAC,EACtC,MAAQ,GAAK,MAAM,SAAW,CAAC,MAAM,QAAQ,QAAU,KAAK,SAC5D,MAAM,QAAQ,OAAS,KAAK,SAE5B,OAAO,MAAM,MAAS,UAAY,OAAO,MAAM,MAAS,YAExD,MAAM,KAAO,MAAM,KAAK,SAAS,EAAE,QAAQ,SAAU,IAAI,GAIzD,MAAM,KAAK,SAAS,IAAI,GAAK,MAAM,KAAK,MAAM,MAAM,IAAM,KAC1D,MAAM,KAAK,MAAM,IAAI,EAAE,QAAQ,MAAQ,CACnC,MAAM,QAAQ,UAAY,GAC1B,eAAe,KAAK,CAAE,KAAM,KAAM,QAAS,MAAM,OAAQ,CAAC,CAC9D,CAAC,EAGD,eAAe,KAAK,KAAK,CAEjC,CAAC,EAED,IAAM,SAAW,CAAC,EACd,SAAW,CAAC,EAChB,sBAAe,QAAQ,CAAC,QAAS,MAAQ,CAEjC,SAAS,OAAS,IAAM,QAAQ,QAAQ,OAAS,KAAK,OAElD,QAAQ,QAAQ,QAAU,eAAe,IAAM,CAAC,EAAE,QAAQ,QAC1D,SAAS,KAAK,QAAQ,EACtB,SAAW,CAAC,GAGX,SAAS,OAAS,GAAK,QAAQ,QAAQ,QAAU,SAAS,OAAS,IACxE,SAAS,KAAK,QAAQ,EACtB,SAAW,CAAC,EACZ,QAAQ,QAAQ,UAAY,IAGhC,SAAS,KAAK,OAAO,EAEjB,SAAS,OAAS,GAAK,QAAQ,QAAQ,WAEnC,IAAM,EAAI,eAAe,SACzB,SAAS,KAAK,QAAQ,EACtB,SAAW,CAAC,GAIhB,IAAM,IAAM,eAAe,QAC3B,SAAS,KAAK,QAAQ,CAC9B,CAAC,EAED,SAAS,QAAQ,MAAQ,CACrB,IAAI,GACJ,IAAI,oBAAsB,GAE1B,aAAe,QAEf,IAAI,iBAAmB,UAAY,MAAK,KAAK,CAAC,EAAE,WAAa,MAAQ,KAAO,SAAkB,GAAG,QAAW,YAAc,EAAE,GAE5H,KAAK,QAAQ,CAAC,QAAS,MAAQ,CAE3B,QAAQ,QAAQ,SAAW,IAEvB,IAAM,GAAK,QAAQ,QAAQ,kBAC3B,aAAe,WAGnB,QAAQ,QAAQ,MAAQ,QAAQ,QAAQ,OAAS,KAAK,MACtD,QAAQ,QAAQ,YAAc,QAAQ,QAAQ,aAAe,KAAK,YAClE,QAAQ,QAAQ,oBAAsB,QAAQ,QAAQ,qBAAuB,KAAK,oBAClF,QAAQ,QAAQ,YAAc,QAAQ,QAAQ,aAAe,KAAK,YAClE,QAAQ,QAAQ,gBAAkB,QAAQ,QAAQ,iBAAmB,KAAK,gBAC1E,QAAQ,QAAQ,eAAiB,QAAQ,QAAQ,gBAAkB,KAAK,eACxE,iBAAmB,0BAA0B,QAAS,EAAK,EAC3D,aAAe,iBAAiB,QAAQ,kBAAmB,EAAE,EAK7D,OAAO,QAAQ,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,IAAM,EAAE,QAAQ,QAAQ,WAAa,MAAQ,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAK,GAAG,IAAM,CAGxG,MAAQ,UAAY,CAAC,QAAQ,QAAQ,GAAG,IACxC,QAAQ,QAAQ,GAAG,EAAI,IAC/B,CAAC,EAED,aAAe,cAAc,OAAO,GAE/B,CAAC,QAAQ,MAAQ,KAAK,UAAa,QAAQ,QAAQ,YACpD,oBAAsB,GACtB,KAAK,SAAW,KAAK,UAAY,QAAQ,QAAQ,SAEzD,CAAC,EAIG,SAAS,QAAU,mBAAmB,YAAc,KAAK,UAAY,KAAK,UACtE,KAAK,UACL,aAAe,uBAAuB,KAAK,MAAQ,OAAO,KAAO,KAAK,SAAW,QAAQ,KAAK,MAAM,KAAK,SAAW,GAAG,CAAC,IAAM,IAAM,cACpI,aAAe,sBAAsB,KAAK,QAAQ,kBAClD,aAAe,mBAAmB,KAAK,QAAQ,kBAC/C,aAAe,mBAAmB,KAAK,QAAQ,kBAC/C,aAAe,mBAGf,aAAe,uBAAuB,KAAK,MAAQ,OAAO,KAAO,KAAK,SAAW,QAAQ,KAAK,MAAM,KAAK,SAAW,GAAG,CAAC,IAAM,IAAM,eAGnI,oBAEL,aAAe,uBAAuB,KAAK,MAAQ,OAAO,KAAO,KAAK,SAAW,QAAQ,KAAK,MAAM,KAAK,SAAW,GAAG,CAAC,IAAM,IAAM,eAGpI,aAAe,uBAAuB,KAAK,MAAQ,OAAO,gBAG9D,aAAe,QACnB,CAAC,EASG,YAAY,QAAQ,OAAO,IAAM,KACjC,aAAe,8BAGnB,aAAe,SAAS,QAAU,mBAAmB,UAAY,cAAgB,cAE1E,WACX,CAMA,SAAS,kBAAkB,eAAgB,CACvC,IAAI,GAAI,GACR,GAAI,CAAC,eACD,MAAO,GACX,IAAM,eAAmB,MAAK,eAAe,WAAa,MAAQ,KAAO,SAAkB,GAAG,gBAAmB,eAAe,QAAQ,gBAAkB,GACpJ,eAAmB,MAAK,eAAe,WAAa,MAAQ,KAAO,SAAkB,GAAG,iBAAoB,eAAe,QAAQ,iBAAmB,GACtJ,gBAAkB,gBAAkB,kBAAkB,cAAc,EAAK,kBAAkB,cAAc,EAAG,SAAS,EAAI,GAC/H,MAAO;AAAA,IACP,eAAiB,SAAW,eAAe,SAAS,EAAI,IAAM,EAAE;AAAA,IAChE,iBAAmB,kBAAkB,eAAe,EAAI,UAAU,eAAe,IAAM,EAAE;AAAA,IACzF,eAAe,MAAQ,eAAe,KAAK,OAAS,EAAI,uBAAyB,EAAE;AAAA,KAEvF,CASA,SAAS,iBAAiB,OAAQ,aAAc,YAAa,CACzD,IAAI,OAAS,0DAA4D,KACzE,eAAU,+EACV,QAAU,2DACV,QAAU,qGACV,QAAU,uDACV,QAAU,qDACV,QAAU,yDAEV,QAAU,qDACV,QAAU,qDACV,QAAU,qDACV,QAAU,qDACV,OAAO,QAAQ,OAAS,EACnB,MAAM,YAAc,CAAC,GAAG,QAAQ,KAAO,CAChC,IAAI,OAAS,SAAW,IAAI,OAAS,UAAY,IAAI,OAAS,SAAW,IAAI,OAAS,OAAS,CAAC,OAAO,SAAS,IAAI,IAAI,IACxH,QAAU,uBAAyB,IAAI,KAAO,kBAAoB,IAAI,KAAO,MAErF,CAAC,CACL,CAAC,EACD,QAAU,oGACV,QAAU,8GAEV,QAAU,gJACV,QAAU,uJACV,OAAO,QAAQ,CAAC,MAAO,MAAQ,CAC3B,QAAU,oDAAoD,IAAM,CAAC,qGACrE,QAAU,wCAAwC,IAAM,CAAC,+FAEzD,MAAM,WAAW,QAAQ,KAAO,CAC5B,QAAU,uBAAuB,IAAI,MAAM,qFAC/C,CAAC,CACL,CAAC,EAED,QAAU,qIACV,QAAU,qIACV,QAAU,qHACV,QAAU,yIAEV,aAAa,QAAQ,CAAC,OAAQ,MAAQ,CAClC,QAAU,oDAAoD,IAAM,CAAC,sGACpE,OAAO,YAAc,CAAC,GAAG,QAAQ,KAAO,CACrC,QAAU,wBAA0B,IAAI,OAAS,qFACrD,CAAC,CACL,CAAC,EAED,OAAO,QAAQ,CAAC,OAAQ,MAAQ,CAC5B,QAAU,kDAAkD,IAAM,CAAC,mGACvE,CAAC,EAED,YAAY,WAAW,QAAQ,KAAO,CAClC,QAAU,wBAA0B,IAAI,OAAS,qFACrD,CAAC,EACD,YAAY,WAAW,QAAQ,KAAO,CAC9B,IAAI,OAAS,SAAW,IAAI,OAAS,UAAY,IAAI,OAAS,SAAW,IAAI,OAAS,OAAS,CAAC,OAAO,SAAS,IAAI,IAAI,IACxH,QAAU,wBAA0B,IAAI,KAAO,kBAAoB,IAAI,KAAO,MAEtF,CAAC,EAED,QAAU,sHACV,QAAU,gIACV,QAAU,WACH,MACX,CAKA,SAAS,iBAAkB,CACvB,MAAO,0DAA0D,IAAI;AAAA;AAAA;AAAA;AAAA,mBAKzE,CAOA,SAAS,WAAW,OAAQ,QAAS,CACjC,MAAO,0DAA0D,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAM9D,OAAO,MAAM;AAAA,UACd,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAWC,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA,qBAIhB,OAAO,OAAS,EAAI,CAAC;AAAA;AAAA;AAAA;AAAA,KAIrC,OAAO,IAAI,CAAC,UAAW,MAAQ,mBAAmB,IAAM,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA;AAAA,YAGzE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,eAMnB,CASA,SAAS,YAAY,MAAO,QAAS,OAAQ,SAAU,CACnD,MAAO;AAAA;AAAA,cAEG,kBAAkB,KAAK,CAAC;AAAA,gBACtB,kBAAkB,OAAO,CAAC;AAAA,gBAC1B,kBAAkB,MAAM,CAAC;AAAA,uBAClB,kBAAkB,MAAM,CAAC;AAAA,iBAC/B,QAAQ;AAAA,+CACsB,IAAI,KAAK,EAAE,YAAY,EAAE,QAAQ,YAAa,GAAG,CAAC;AAAA,gDACjD,IAAI,KAAK,EAAE,YAAY,EAAE,QAAQ,YAAa,GAAG,CAAC;AAAA,sBAElG,CAMA,SAAS,wBAAwB,OAAQ,CACrC,IAAI,UAAY,EACZ,OAAS,0DAA4D,KACzE,QAAU,uFACV,QAAU,0JACV,QAAS,IAAM,EAAG,KAAO,OAAO,OAAQ,MACpC,QAAU,wBAAwB,EAAE,SAAS,0GAA0G,GAAG,UAE9J,mBACA,QACI,wBAAwB,UAAY,CAAC,yJACT,UAAY,CAAC,uIACb,UAAY,CAAC,uIACb,UAAY,CAAC,sIACb,UAAY,CAAC,sIAEtC,MACX,CAOA,SAAS,aAAa,MAAO,CACzB,MAAQ,0DAA0D,IAAI,4NAGhB,OAAM,OAAU,YAAc,EAAE,IAC/E,iBAAiB,KAAK,CAAC,0DAElC,CAMA,SAAS,kBAAkB,MAAO,CAC9B,IAAI,UAAY,GAChB,aAAM,cAAc,QAAQ,MAAQ,CAC5B,KAAK,QAAU,mBAAmB,QAClC,WAA0D,MAAK,MAAS,KAAK,KAAK,CAAC,EAAI,KAAK,KAAK,CAAC,EAAE,KAAO,GACnH,CAAC,EACM,UAAU,QAAQ,SAAU,IAAI,CAC3C,CAKA,SAAS,oBAAqB,CAC1B,MAAO,0DAA0D,IAAI,myOACzE,CAMA,SAAS,kBAAkB,MAAO,CAC9B,MAAQ,0DAA0D,IAAI,m4BAAm4B,kBAAkB,kBAAkB,KAAK,CAAC,CAAC,+TAA+T,WAAW,+CAA+C,MAAM,SAAS,0UACh4C,CAMA,SAAS,cAAc,OAAQ,CAC3B,MAAO;AAAA;AAAA,IAEP,iBAAiB,MAAM,CAAC;AAAA,iEAE5B,CAOA,SAAS,cAAc,MAAO,QAAS,CAEnC,IAAM,WAAa,QAAQ,IAAI,CAAC,WAAY,MAAQ,sBAAsB,uBAAyB,GAAG,cAAc,MAAM,MAAM,OAAS,IAAM,CAAC,KAAK,EACjJ,OAAS,0DAA4D,KACzE,eACI,mOACJ,QAAU,iBAAiB,KAAK,EAChC,QACI,oMACJ,QAAU,qBAAuB,WAAW,KAAK,EAAE,EAAI,sBACvD,QAAU,4CACV,QACI,g2NA4BJ,QAAU,iBACH,MACX,CAOA,SAAS,sBAAsB,aAAc,aAAc,CACvD,OAAO,0BAA0B,aAAa,aAAe,CAAC,EAAG,CAC7D,CACI,OAAQ,mCACR,KAAM,iFACV,CACJ,CAAC,CACL,CAQA,SAAS,gBAAgB,OAAQ,aAAc,YAAa,CACxD,OAAO,0BAA0B,OAAO,YAAc,CAAC,EAAG,CACtD,CACI,OAAQ,8BAA8B,qBAAqB,OAAQ,aAAc,WAAW,CAAC,OAC7F,KAAM,iFACV,EACA,CACI,OAAQ,4BAA4B,WAAW,OAC/C,KAAM,gFACV,CACJ,CAAC,CACL,CAMA,SAAS,qBAAqB,YAAa,CACvC,MAAO;AAAA;AAAA;AAAA,qIAG0H,WAAW;AAAA,mBAEhJ,CAOA,SAAS,iBAAiB,YAAa,aAAc,CACjD,IAAM,YAAc,aAAa,IAAI,CAAC,WAAY,OAAS,CACvD,OAAQ,8BAA8B,IAAM,CAAC,OAC7C,KAAM,iFACV,EAAE,EACF,mBAAY,KAAK,CAAE,OAAQ,sBAAuB,KAAM,2EAA4E,CAAC,EAC9H,0BAA0B,YAAa,WAAW,CAC7D,CAKA,SAAS,uBAAwB,CAC7B,MAAO,0DAA0D,IAAI;AAAA;AAAA,mBAGzE,CAQA,SAAS,qBAAqB,OAAQ,aAAc,YAAa,CAC7D,QAAS,EAAI,EAAG,EAAI,aAAa,OAAQ,IACrC,GAAI,aAAa,CAAC,EAAE,QAAU,OAAO,YAAc,CAAC,EAAE,aAAa,MAC/D,OAAO,EAAI,EAKnB,MAAO,EACX,CAMA,SAAS,aAAa,KAAM,CACxB,IAAI,GAAI,GAAI,GAAI,GAChB,IAAM,UAAc,MAAK,KAAK,SAAW,MAAQ,KAAO,SAAkB,GAAG,aAAgB,uBAAuB,GAAK,KAAK,SAAW,MAAQ,KAAO,OAAS,OAAS,GAAG,YAAY,MAAQ,oEAC3L,UAAc,MAAK,KAAK,SAAW,MAAQ,KAAO,SAAkB,GAAG,aAAgB,uBAAuB,GAAK,KAAK,SAAW,MAAQ,KAAO,OAAS,OAAS,GAAG,YAAY,MAAQ,8DACjM,MAAO,4zBAA4zB,SAAS,ivEAAsqE,SAAS,soKAC//F,CAQA,SAAS,oBAAoB,KAAM,CAC/B,IAAI,OAAS,0DAA0D,IAAI,sOAEC,KAAK,QAAU,UAAY,EAAE,iDAEzG,QAAU,oFAEV,QAAU,eACV,KAAK,OAAO,QAAQ,OAAU,QAAU,gBAAgB,MAAM,QAAQ,cAAc,MAAM,IAAI,KAAM,EACpG,QAAU,gBAMV,QAAU,iDAAiD,KAAK,OAAO,OAAS,CAAC,2BAEjF,QAAU,gBAAgB,KAAK,WAAW,KAAK,SAAS,KAAK,WAAW,MAAM,MAC9E,QAAU,kBAAkB,KAAK,WAAW,MAAM,SAAS,KAAK,WAAW,KAAK,MAEhF,QAAU,uBACV,QAAS,IAAM,EAAG,IAAM,GAAI,MACxB,QACI,SAAS,GAAG,cAAc,IAAM,GAAK,MAAM,uQAElB,GAAG,OAEpC,eAAU,wBAEN,KAAK,UAAY,KAAK,SAAS,OAAS,IACxC,QAAU,iEACV,QAAU,wFACV,KAAK,SAAS,QAAQ,MAAQ,CAC1B,QAAU,sBAAsB,kBAAkB,KAAK,KAAK,CAAC,UAAU,QAAQ,sCAAsC,CAAC,oBACtH,KAAK,QAAQ,QAAQ,OAAU,QAAU,kBAAkB,MAAM,QAAQ,KAAM,EAC/E,QAAU,+BACd,CAAC,EACD,QAAU,4BACV,QAAU,sJACV,QAAU,eAGd,QAAU,oBACH,MACX,CAKA,SAAS,kBAAmB,CACxB,MAAO,0DAA0D,IAAI,wOACzE,CAMA,SAAS,oBAAqB,CAC1B,MAAO,0DAA0D,IAAI,+HACzE,CAKA,SAAS,kBAAmB,CACxB,MAAO,0DAA0D,IAAI,yvBACzE,CApmNA,IACA,aAuCM,IACA,MACA,KACA,uBACA,gBACA,eACA,kBACA,gBACA,mBACA,iBACA,mBACA,eACA,cACA,oBACA,gBACA,qBACA,qBACA,iBACA,oBACA,gBACA,cACA,sBACA,wBACA,yBACA,2BACA,uBACA,QACA,gBAkBA,gBAoBF,YAOA,YAME,YAIF,WASA,UAaA,UAyLA,YAaA,OAOA,OAMA,WA4LA,WAaA,mBAaA,eASA,mBAaA,kBAcA,aAQE,WACA,YA67BF,cA8pCE,MA4vEA,eAwsDA,QACA,UAtoNN,2HACA,aAAkB,6BAuCZ,IAAM,OACN,MAAQ,MACR,KAAO;AAAA,EACP,uBAAyB,WACzB,gBAAkB,mBAClB,eAAiB,KACjB,kBAAoB,GACpB,gBAAkB,CAAE,KAAM,QAAS,MAAO,SAAU,GAAI,CAAE,EAC1D,mBAAqB,CAAC,IAAM,GAAK,IAAM,EAAG,EAC1C,iBAAmB,CAAE,MAAO,SAAU,GAAI,CAAE,EAC5C,mBAAqB,CAAE,MAAO,SAAU,MAAO,QAAS,KAAM,EAAG,IAAK,MAAO,EAC7E,eAAiB,SACjB,cAAgB,GAChB,oBAAsB,GACtB,gBAAkB,cAClB,qBAAuB,UACvB,qBAAuB,SACvB,iBAAmB,CAAE,KAAM,QAAS,KAAM,EAAG,OAAQ,KAAQ,MAAO,MAAO,GAAI,MAAO,SAAU,QAAS,IAAM,gBAAiB,EAAK,EACrI,oBAAsB,CAAC,GAAK,GAAK,GAAK,EAAG,EACzC,gBAAkB,CAAE,MAAO,QAAQ,EACnC,cAAgB,CAAE,KAAM,EAAG,MAAO,SAAU,QAAS,GAAK,EAC1D,sBAAwB,aACxB,wBAA0B,aAC1B,yBAA2B,aAC3B,2BAA6B,aAC7B,uBAAyB,aACzB,QAAU,6BAA6B,MAAM,EAAE,EAC/C,gBAAkB,CACpB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACJ,EACM,gBAAkB,CACpB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACJ,GAEC,SAAUC,aAAa,CACpBA,aAAY,KAAU,OACtBA,aAAY,OAAY,SACxBA,aAAY,MAAW,QACvBA,aAAY,QAAa,SAC7B,GAAG,cAAgB,YAAc,CAAC,EAAE,GAEnC,SAAUC,aAAa,CACpBA,aAAY,EAAO,IACnBA,aAAY,IAAS,MACrBA,aAAY,EAAO,GACvB,GAAG,cAAgB,YAAc,CAAC,EAAE,EAC9B,YAAc,0CAKnB,SAAUC,YAAY,CACnBA,YAAW,YAAiB,cAC5BA,YAAW,OAAY,SACvBA,YAAW,aAAkB,eAC7BA,YAAW,KAAU,OACrBA,YAAW,WAAgB,aAC3BA,YAAW,WAAgB,YAC/B,GAAG,aAAe,WAAa,CAAC,EAAE,GAEjC,SAAUC,WAAW,CAClBA,WAAU,KAAU,OACpBA,WAAU,IAAS,MACnBA,WAAU,MAAW,QACrBA,WAAU,OAAY,SACtBA,WAAU,SAAc,WACxBA,WAAU,SAAc,WACxBA,WAAU,KAAU,OACpBA,WAAU,IAAS,MACnBA,WAAU,MAAW,QACrBA,WAAU,QAAa,SAC3B,GAAG,YAAc,UAAY,CAAC,EAAE,GAE/B,SAAUC,WAAW,CAClBA,WAAU,qBAA0B,uBACpCA,WAAU,qBAA0B,uBACpCA,WAAU,qBAA0B,uBACpCA,WAAU,eAAoB,iBAC9BA,WAAU,eAAoB,iBAC9BA,WAAU,eAAoB,iBAC9BA,WAAU,yBAA8B,2BACxCA,WAAU,sBAA2B,wBACrCA,WAAU,kBAAuB,oBACjCA,WAAU,qBAA0B,uBACpCA,WAAU,gBAAqB,kBAC/BA,WAAU,wBAA6B,0BACvCA,WAAU,iBAAsB,mBAChCA,WAAU,iBAAsB,mBAChCA,WAAU,wBAA6B,0BACvCA,WAAU,kBAAuB,oBACjCA,WAAU,mBAAwB,qBAClCA,WAAU,kBAAuB,oBACjCA,WAAU,IAAS,MACnBA,WAAU,UAAe,YACzBA,WAAU,YAAiB,cAC3BA,WAAU,MAAW,QACrBA,WAAU,SAAc,WACxBA,WAAU,eAAoB,iBAC9BA,WAAU,eAAoB,iBAC9BA,WAAU,eAAoB,iBAC9BA,WAAU,UAAe,YACzBA,WAAU,YAAiB,cAC3BA,WAAU,SAAc,WACxBA,WAAU,SAAc,WACxBA,WAAU,SAAc,WACxBA,WAAU,IAAS,MACnBA,WAAU,UAAe,YACzBA,WAAU,UAAe,YACzBA,WAAU,OAAY,SACtBA,WAAU,QAAa,UACvBA,WAAU,MAAW,QACrBA,WAAU,cAAmB,gBAC7BA,WAAU,MAAW,QACrBA,WAAU,aAAkB,eAC5BA,WAAU,OAAY,SACtBA,WAAU,WAAgB,aAC1BA,WAAU,KAAU,OACpBA,WAAU,gBAAqB,kBAC/BA,WAAU,gBAAqB,kBAC/BA,WAAU,iBAAsB,mBAChCA,WAAU,cAAmB,gBAC7BA,WAAU,SAAc,WACxBA,WAAU,QAAa,UACvBA,WAAU,WAAgB,aAC1BA,WAAU,QAAa,UACvBA,WAAU,UAAe,YACzBA,WAAU,MAAW,QACrBA,WAAU,WAAgB,aAC1BA,WAAU,UAAe,YACzBA,WAAU,iBAAsB,mBAChCA,WAAU,QAAa,UACvBA,WAAU,cAAmB,gBAC7BA,WAAU,eAAoB,iBAC9BA,WAAU,0BAA+B,4BACzCA,WAAU,iBAAsB,mBAChCA,WAAU,mBAAwB,qBAClCA,WAAU,kBAAuB,oBACjCA,WAAU,eAAoB,iBAC9BA,WAAU,iBAAsB,mBAChCA,WAAU,kBAAuB,oBACjCA,WAAU,iBAAsB,mBAChCA,WAAU,qBAA0B,uBACpCA,WAAU,yBAA8B,2BACxCA,WAAU,sBAA2B,wBACrCA,WAAU,sBAA2B,wBACrCA,WAAU,sBAA2B,wBACrCA,WAAU,qBAA0B,uBACpCA,WAAU,yBAA8B,2BACxCA,WAAU,eAAoB,iBAC9BA,WAAU,uBAA4B,yBACtCA,WAAU,wBAA6B,0BACvCA,WAAU,0BAA+B,4BACzCA,WAAU,uBAA4B,yBACtCA,WAAU,YAAiB,cAC3BA,WAAU,2BAAgC,6BAC1CA,WAAU,qBAA0B,uBACpCA,WAAU,iBAAsB,mBAChCA,WAAU,qBAA0B,uBACpCA,WAAU,qBAA0B,uBACpCA,WAAU,cAAmB,gBAC7BA,WAAU,yBAA8B,2BACxCA,WAAU,oBAAyB,sBACnCA,WAAU,aAAkB,eAC5BA,WAAU,MAAW,QACrBA,WAAU,OAAY,SACtBA,WAAU,MAAW,QACrBA,WAAU,MAAW,QACrBA,WAAU,UAAe,YACzBA,WAAU,MAAW,QACrBA,WAAU,SAAc,WACxBA,WAAU,QAAa,UACvBA,WAAU,UAAe,YACzBA,WAAU,iBAAsB,mBAChCA,WAAU,eAAoB,iBAC9BA,WAAU,eAAoB,iBAC9BA,WAAU,UAAe,YACzBA,WAAU,iBAAsB,mBAChCA,WAAU,UAAe,YACzBA,WAAU,YAAiB,cAC3BA,WAAU,kBAAuB,oBACjCA,WAAU,eAAoB,iBAC9BA,WAAU,sBAA2B,wBACrCA,WAAU,uBAA4B,yBACtCA,WAAU,gBAAqB,kBAC/BA,WAAU,iBAAsB,mBAChCA,WAAU,YAAiB,cAC3BA,WAAU,cAAmB,gBAC7BA,WAAU,KAAU,OACpBA,WAAU,QAAa,UACvBA,WAAU,WAAgB,aAC1BA,WAAU,UAAe,YACzBA,WAAU,UAAe,YACzBA,WAAU,aAAkB,eAC5BA,WAAU,aAAkB,eAC5BA,WAAU,SAAc,WACxBA,WAAU,KAAU,OACpBA,WAAU,UAAe,YACzBA,WAAU,sBAA2B,wBACrCA,WAAU,kBAAuB,oBACjCA,WAAU,QAAa,UACvBA,WAAU,cAAmB,gBAC7BA,WAAU,SAAc,WACxBA,WAAU,IAAS,MACnBA,WAAU,SAAc,WACxBA,WAAU,OAAY,SACtBA,WAAU,WAAgB,aAC1BA,WAAU,KAAU,OACpBA,WAAU,UAAe,YACzBA,WAAU,iBAAsB,mBAChCA,WAAU,KAAU,OACpBA,WAAU,OAAY,SACtBA,WAAU,QAAa,UACvBA,WAAU,WAAgB,aAC1BA,WAAU,kBAAuB,oBACjCA,WAAU,WAAgB,aAC1BA,WAAU,aAAkB,eAC5BA,WAAU,WAAgB,aAC1BA,WAAU,eAAoB,iBAC9BA,WAAU,eAAoB,iBAC9BA,WAAU,UAAe,YACzBA,WAAU,WAAgB,aAC1BA,WAAU,WAAgB,aAC1BA,WAAU,UAAe,YACzBA,WAAU,cAAmB,gBAC7BA,WAAU,cAAmB,gBAC7BA,WAAU,cAAmB,gBAC7BA,WAAU,WAAgB,aAC1BA,WAAU,OAAY,SACtBA,WAAU,OAAY,SACtBA,WAAU,OAAY,SACtBA,WAAU,OAAY,SACtBA,WAAU,OAAY,SACtBA,WAAU,MAAW,QACrBA,WAAU,MAAW,QACrBA,WAAU,MAAW,QACrBA,WAAU,MAAW,QACrBA,WAAU,MAAW,QACrBA,WAAU,kBAAuB,oBACjCA,WAAU,IAAS,MACnBA,WAAU,YAAiB,cAC3BA,WAAU,SAAc,WACxBA,WAAU,UAAe,YACzBA,WAAU,SAAc,WACxBA,WAAU,QAAa,UACvBA,WAAU,eAAoB,iBAC9BA,WAAU,YAAiB,cAC3BA,WAAU,mBAAwB,qBAClCA,WAAU,WAAgB,aAC1BA,WAAU,eAAoB,iBAC9BA,WAAU,KAAU,OACpBA,WAAU,oBAAyB,sBACnCA,WAAU,iBAAsB,mBAChCA,WAAU,sBAA2B,uBACzC,GAAG,YAAc,UAAY,CAAC,EAAE,GAK/B,SAAUC,aAAa,CACpBA,aAAY,MAAW,MACvBA,aAAY,MAAW,MACvBA,aAAY,YAAiB,MAC7BA,aAAY,YAAiB,MAC7BA,aAAY,QAAa,UACzBA,aAAY,QAAa,UACzBA,aAAY,QAAa,UACzBA,aAAY,QAAa,UACzBA,aAAY,QAAa,UACzBA,aAAY,QAAa,SAC7B,GAAG,cAAgB,YAAc,CAAC,EAAE,GAEnC,SAAUC,QAAQ,CACfA,QAAO,KAAU,OACjBA,QAAO,OAAY,SACnBA,QAAO,MAAW,QAClBA,QAAO,QAAa,SACxB,GAAG,SAAW,OAAS,CAAC,EAAE,GAEzB,SAAUC,QAAQ,CACfA,QAAO,IAAS,MAChBA,QAAO,OAAY,SACnBA,QAAO,OAAY,QACvB,GAAG,SAAW,OAAS,CAAC,EAAE,GAEzB,SAAUC,YAAY,CACnBA,YAAW,+BAAoC,2BAC/CA,YAAW,wBAA6B,wBACxCA,YAAW,qBAA0B,oBACrCA,YAAW,uBAA4B,uBACvCA,YAAW,kBAAuB,kBAClCA,YAAW,8BAAmC,0BAC9CA,YAAW,mBAAwB,mBACnCA,YAAW,mBAAwB,mBACnCA,YAAW,0BAA+B,0BAC1CA,YAAW,oBAAyB,oBACpCA,YAAW,qBAA0B,qBACrCA,YAAW,oBAAyB,oBACpCA,YAAW,IAAS,MACpBA,YAAW,QAAa,wBACxBA,YAAW,WAAgB,YAC3BA,YAAW,cAAmB,cAC9BA,YAAW,MAAW,QACtBA,YAAW,UAAe,WAC1BA,YAAW,IAAS,MACpBA,YAAW,WAAgB,YAC3BA,YAAW,WAAgB,YAC3BA,YAAW,QAAa,SACxBA,YAAW,QAAa,UACxBA,YAAW,MAAW,QACtBA,YAAW,eAAoB,gBAC/BA,YAAW,MAAW,QACtBA,YAAW,cAAmB,eAC9BA,YAAW,OAAY,SACvBA,YAAW,YAAiB,aAC5BA,YAAW,MAAW,OACtBA,YAAW,KAAU,OACrBA,YAAW,kBAAuB,kBAClCA,YAAW,mBAAwB,gBACnCA,YAAW,kBAAuB,kBAClCA,YAAW,mBAAwB,mBACnCA,YAAW,gBAAqB,gBAChCA,YAAW,iBAAsB,iBACjCA,YAAW,gBAAqB,WAChCA,YAAW,QAAa,UACxBA,YAAW,gBAAqB,aAChCA,YAAW,QAAa,UACxBA,YAAW,UAAe,YAC1BA,YAAW,MAAW,QACtBA,YAAW,aAAkB,YAC7BA,YAAW,eAAoB,cAC/BA,YAAW,YAAiB,aAC5BA,YAAW,WAAgB,YAC3BA,YAAW,mBAAwB,mBACnCA,YAAW,YAAiB,SAC5BA,YAAW,WAAgB,iBAC3BA,YAAW,WAAgB,iBAC3BA,YAAW,4BAAiC,4BAC5CA,YAAW,eAAoB,uBAC/BA,YAAW,kBAAuB,mBAClCA,YAAW,oBAAyB,qBACpCA,YAAW,eAAoB,uBAC/BA,YAAW,mBAAwB,oBACnCA,YAAW,gBAAqB,iBAChCA,YAAW,gCAAqC,wBAChDA,YAAW,kBAAuB,mBAClCA,YAAW,mBAAwB,oBACnCA,YAAW,kBAAuB,mBAClCA,YAAW,2BAAgC,2BAC3CA,YAAW,wBAA6B,wBACxCA,YAAW,uBAA4B,uBACvCA,YAAW,2BAAgC,2BAC3CA,YAAW,gBAAqB,iBAChCA,YAAW,wBAA6B,yBACxCA,YAAW,0BAA+B,0BAC1CA,YAAW,4BAAiC,4BAC5CA,YAAW,aAAkB,cAC7BA,YAAW,6BAAkC,6BAC7CA,YAAW,sBAA2B,uBACtCA,YAAW,kBAAuB,mBAClCA,YAAW,uBAA4B,uBACvCA,YAAW,oCAAyC,wBACpDA,YAAW,eAAoB,gBAC/BA,YAAW,sBAA2B,yBACtCA,YAAW,2BAAgC,2BAC3CA,YAAW,qBAA0B,sBACrCA,YAAW,cAAmB,eAC9BA,YAAW,MAAW,QACtBA,YAAW,OAAY,SACvBA,YAAW,OAAY,QACvBA,YAAW,OAAY,QACvBA,YAAW,WAAgB,YAC3BA,YAAW,MAAW,QACtBA,YAAW,SAAc,WACzBA,YAAW,QAAa,UACxBA,YAAW,kBAAuB,mBAClCA,YAAW,mBAAwB,WACnCA,YAAW,WAAgB,YAC3BA,YAAW,mBAAwB,mBACnCA,YAAW,WAAgB,YAC3BA,YAAW,aAAkB,cAC7BA,YAAW,oBAAyB,oBACpCA,YAAW,iBAAsB,iBACjCA,YAAW,yBAA8B,wBACzCA,YAAW,0BAA+B,yBAC1CA,YAAW,kBAAuB,kBAClCA,YAAW,oBAAyB,mBACpCA,YAAW,cAAmB,cAC9BA,YAAW,eAAoB,gBAC/BA,YAAW,eAAoB,iBAC/BA,YAAW,0BAA+B,iBAC1CA,YAAW,qCAA0C,uBACrDA,YAAW,yBAA8B,WACzCA,YAAW,eAAoB,iBAC/BA,YAAW,0BAA+B,iBAC1CA,YAAW,qCAA0C,uBACrDA,YAAW,yBAA8B,WACzCA,YAAW,eAAoB,iBAC/BA,YAAW,0BAA+B,iBAC1CA,YAAW,qCAA0C,uBACrDA,YAAW,yBAA8B,WACzCA,YAAW,eAAoB,iBAC/BA,YAAW,0BAA+B,mBAC1CA,YAAW,qCAA0C,uBACrDA,YAAW,yBAA8B,WACzCA,YAAW,KAAU,OACrBA,YAAW,aAAkB,UAC7BA,YAAW,YAAiB,aAC5BA,YAAW,WAAgB,YAC3BA,YAAW,WAAgB,YAC3BA,YAAW,cAAmB,eAC9BA,YAAW,eAAoB,eAC/BA,YAAW,UAAe,WAC1BA,YAAW,KAAU,OACrBA,YAAW,wBAA6B,wBACxCA,YAAW,oBAAyB,oBACpCA,YAAW,UAAe,YAC1BA,YAAW,QAAa,UACxBA,YAAW,KAAU,UACrBA,YAAW,aAAkB,sBAC7BA,YAAW,cAAmB,gBAC9BA,YAAW,SAAc,YACzBA,YAAW,IAAS,MACpBA,YAAW,UAAe,WAC1BA,YAAW,OAAY,SACvBA,YAAW,YAAiB,aAC5BA,YAAW,WAAgB,YAC3BA,YAAW,mBAAwB,mBACnCA,YAAW,UAAe,OAC1BA,YAAW,oBAAyB,mBACpCA,YAAW,iBAAsB,WACjCA,YAAW,YAAiB,aAC5BA,YAAW,oBAAyB,oBACpCA,YAAW,YAAiB,aAC5BA,YAAW,cAAmB,eAC9BA,YAAW,eAAoB,aAC/BA,YAAW,kBAAuB,YAElCA,YAAW,4BAAiC,wBAC5CA,YAAW,kBAAuB,aAClCA,YAAW,uBAA4B,iBACvCA,YAAW,uBAA4B,iBACvCA,YAAW,YAAiB,aAC5BA,YAAW,iBAAsB,YACjCA,YAAW,sBAA2B,gBACtCA,YAAW,sBAA2B,gBACtCA,YAAW,qBAA0B,gBACrCA,YAAW,YAAiB,aAC5BA,YAAW,cAAmB,SAC9BA,YAAW,cAAmB,SAC9BA,YAAW,cAAmB,SAC9BA,YAAW,cAAmB,SAC9BA,YAAW,cAAmB,SAC9BA,YAAW,aAAkB,QAC7BA,YAAW,aAAkB,QAC7BA,YAAW,aAAkB,QAC7BA,YAAW,aAAkB,QAC7BA,YAAW,aAAkB,QAC7BA,YAAW,oBAAyB,oBACpCA,YAAW,IAAS,MACpBA,YAAW,aAAkB,cAC7BA,YAAW,KAAU,WACrBA,YAAW,UAAe,YAC1BA,YAAW,SAAc,UACzBA,YAAW,iBAAsB,iBACjCA,YAAW,cAAmB,cAC9BA,YAAW,sBAA2B,qBACtCA,YAAW,UAAe,UAC1BA,YAAW,aAAkB,aAC7BA,YAAW,gBAAqB,iBAChCA,YAAW,KAAU,MACzB,GAAG,aAAe,WAAa,CAAC,EAAE,GAEjC,SAAUC,YAAY,CACnBA,YAAW,KAAU,OACrBA,YAAW,IAAS,MACpBA,YAAW,MAAW,QACtBA,YAAW,OAAY,SACvBA,YAAW,SAAc,WACzBA,YAAW,SAAc,WACzBA,YAAW,KAAU,OACrBA,YAAW,IAAS,MACpBA,YAAW,MAAW,QACtBA,YAAW,QAAa,SAC5B,GAAG,aAAe,WAAa,CAAC,EAAE,GAEjC,SAAUC,oBAAoB,CAC3BA,oBAAmB,MAAW,MAC9BA,oBAAmB,MAAW,MAC9BA,oBAAmB,YAAiB,MACpCA,oBAAmB,YAAiB,MACpCA,oBAAmB,QAAa,UAChCA,oBAAmB,QAAa,UAChCA,oBAAmB,QAAa,UAChCA,oBAAmB,QAAa,UAChCA,oBAAmB,QAAa,UAChCA,oBAAmB,QAAa,SACpC,GAAG,qBAAuB,mBAAqB,CAAC,EAAE,GAEjD,SAAUC,gBAAgB,CACvBA,gBAAe,MAAW,QAC1BA,gBAAe,MAAW,QAC1BA,gBAAe,KAAU,OACzBA,gBAAe,KAAU,OACzBA,gBAAe,KAAU,OACzBA,gBAAe,YAAiB,aACpC,GAAG,iBAAmB,eAAiB,CAAC,EAAE,GAEzC,SAAUC,oBAAoB,CAC3BA,oBAAmB,MAAW,QAC9BA,oBAAmB,UAAe,YAClCA,oBAAmB,MAAW,QAC9BA,oBAAmB,MAAW,QAC9BA,oBAAmB,OAAY,SAC/BA,oBAAmB,YAAiB,cACpCA,oBAAmB,MAAW,QAC9BA,oBAAmB,UAAe,YAClCA,oBAAmB,KAAU,OAC7BA,oBAAmB,MAAW,OAClC,GAAG,qBAAuB,mBAAqB,CAAC,EAAE,GAEjD,SAAUC,mBAAmB,CAC1BA,mBAAkB,MAAW,QAC7BA,mBAAkB,KAAU,OAC5BA,mBAAkB,MAAW,MAC7BA,mBAAkB,MAAW,QAC7BA,mBAAkB,MAAW,MAC7BA,mBAAkB,MAAW,OACjC,GAAG,oBAAsB,kBAAoB,CAAC,EAAE,GAO/C,SAAUC,cAAc,CACrBA,cAAa,QAAa,WAC1BA,cAAa,MAAW,WACxBA,cAAa,KAAU,WACvBA,cAAa,SAAc,UAC/B,GAAG,eAAiB,aAAe,CAAC,EAAE,EAEhC,WAAa,ymEACb,YAAc,qqxEA67BhB,cAAgB,EA8pCd,MAAN,KAAY,CACR,YAAY,OAAQ,CAChB,IAAI,GACJ,KAAK,SAAW,OAAO,SACvB,KAAK,SAAW,OAAO,SACvB,KAAK,MAAQ,SAAS,OAAO,WAAW,GACxC,KAAK,YAAc,OAAO,WAC1B,KAAK,KAAO,OAAO,SACnB,KAAK,MAAQ,CAAC,EACd,KAAK,WAAa,CAAC,EACnB,KAAK,WAAa,CAAC,EACnB,KAAK,aAAe,OAAO,YAC3B,KAAK,SAAW,OAAO,QACvB,KAAK,aAAe,OAAO,aAAe,KAC1C,KAAK,UAAY,OAAO,YACxB,KAAK,cAAgB,CAAC,EAKtB,KAAK,kBAAsB,MAAK,KAAK,gBAAkB,MAAQ,KAAO,SAAkB,GAAG,kBAAqB,KAAK,aAAa,kBAAoB,IAC1J,CACA,IAAI,KAAK,MAAO,CACZ,KAAK,MAAQ,OACT,CAAC,KAAK,aAAe,CAAC,KAAK,YAAY,SAClC,KAAK,cACN,KAAK,YAAc,CAAC,GACpB,OAAO,OAAU,WACjB,KAAK,YAAY,MAAQ,OAErC,CACA,IAAI,MAAO,CACP,OAAO,KAAK,KAChB,CACA,IAAI,WAAW,MAAO,CAClB,KAAK,YAAc,MAEf,OACA,wBAAwB,MAAO,IAAI,CAC3C,CACA,IAAI,YAAa,CACb,OAAO,KAAK,WAChB,CACA,IAAI,MAAM,MAAO,CACb,KAAK,OAAS,KAClB,CACA,IAAI,OAAQ,CACR,OAAO,KAAK,MAChB,CACA,IAAI,OAAO,MAAO,CACd,KAAK,QAAU,KACnB,CACA,IAAI,QAAS,CACT,OAAO,KAAK,OAChB,CAIA,IAAI,YAAY,MAAO,CAEnB,KAAK,kBAAoB,MACzB,KAAK,aAAa,KAAK,CAC3B,CACA,IAAI,aAAc,CACd,OAAO,KAAK,iBAChB,CACA,IAAI,oBAAqB,CACrB,OAAO,KAAK,mBAChB,CAQA,SAAS,KAAM,KAAM,QAAS,CAG1B,IAAM,gBAAkB,SAAW,CAAC,EACpC,uBAAgB,MAAQ,KACxB,mBAAmB,KAAM,KAAM,KAAM,OAAO,EACrC,IACX,CAMA,SAAS,QAAS,CACd,0BAAmB,KAAM,OAAO,EACzB,IACX,CAMA,SAAS,QAAS,CACd,0BAAmB,KAAM,OAAO,EACzB,IACX,CAOA,SAAS,MAAO,CACZ,0BAAmB,KAAM,KAAK,EACvB,IACX,CAOA,SAAS,UAAW,QAAS,CAMzB,0BAAmB,KAAM,UAAW,OAAO,EACpC,IACX,CAOA,SAAS,UAAW,QAAS,CAEzB,YAAK,oBAAsB,mBAAmB,KAAM,UAAW,QAAS,KAAK,aAAc,KAAK,YAAa,KAAK,SAAU,KAAK,QAAQ,EAClI,IACX,CAOA,QAAQ,KAAM,QAAS,CAEnB,yBAAkB,KADA,OAAO,MAAS,UAAY,OAAO,MAAS,SAAW,CAAC,CAAE,KAAM,OAAQ,CAAC,EAAI,KAC5D,QAAS,EAAK,EAC1C,IACX,CACJ,EAumEM,eAAiB,CACnB,MAAO,SAAU,QAAS,OAAQ,CAC9B,IAAM,SAAW,QAAQ,EAAI,QAAQ,EAE/B,WADW,OAAO,EAAI,OAAO,EACL,SACxB,MAAQ,WAAa,OAAO,EAAI,SAAW,OAAO,EAClD,OAAS,WAAa,OAAO,EAAI,OAAO,EAAI,SAC5C,OAAS,KAAK,MAAM,IAAM,IAAO,EAAI,OAAO,EAAI,MAAM,EACtD,OAAS,KAAK,MAAM,IAAM,IAAO,EAAI,OAAO,EAAI,OAAO,EAC7D,MAAO,iBAAiB,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM,iBAC5E,EACA,QAAS,SAAU,QAAS,OAAQ,CAChC,IAAM,SAAW,QAAQ,EAAI,QAAQ,EAE/B,WADW,OAAO,EAAI,OAAO,EACL,SACxB,MAAQ,WAAa,OAAO,EAAI,OAAO,EAAI,SAC3C,OAAS,WAAa,OAAO,EAAI,SAAW,OAAO,EACnD,OAAS,KAAK,MAAM,IAAM,IAAO,EAAI,OAAO,EAAI,MAAM,EACtD,OAAS,KAAK,MAAM,IAAM,IAAO,EAAI,OAAO,EAAI,OAAO,EAC7D,MAAO,iBAAiB,MAAM,QAAQ,MAAM,QAAQ,MAAM,QAAQ,MAAM,iBAC5E,EACA,KAAM,SAAU,QAAS,OAAQ,CAC7B,IAAM,EAAI,OAAO,EACX,EAAI,QAAQ,GAAK,OAAO,EAAI,OAAO,GACnC,EAAI,OAAO,EACX,EAAI,QAAQ,GAAK,OAAO,EAAI,OAAO,GACnC,MAAQ,KAAK,MAAM,KAAO,EAAI,QAAQ,EAAE,EACxC,MAAQ,KAAK,MAAM,KAAO,EAAI,QAAQ,EAAE,EACxC,MAAQ,KAAK,MAAM,KAAO,EAAI,QAAQ,EAAE,EACxC,MAAQ,KAAK,MAAM,KAAO,EAAI,QAAQ,EAAE,EAC9C,MAAO,iBAAiB,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,iBACxE,CACJ,EAwqDM,QAAU,QACV,UAAN,KAAgB,CACZ,IAAI,OAAO,MAAO,CACd,IAAM,UAAY,KAAK,QAAQ,KAAK,EACpC,GAAI,UACA,KAAK,QAAU,MACf,KAAK,YAAc,cAGnB,OAAM,IAAI,MAAM,gBAAgB,CAExC,CACA,IAAI,QAAS,CACT,OAAO,KAAK,OAChB,CACA,IAAI,SAAU,CACV,OAAO,KAAK,QAChB,CACA,IAAI,OAAO,MAAO,CACd,KAAK,QAAU,KACnB,CACA,IAAI,QAAS,CACT,OAAO,KAAK,OAChB,CACA,IAAI,QAAQ,MAAO,CACf,KAAK,SAAW,KACpB,CACA,IAAI,SAAU,CACV,OAAO,KAAK,QAChB,CACA,IAAI,SAAS,MAAO,CAChB,KAAK,UAAY,KACrB,CACA,IAAI,UAAW,CACX,OAAO,KAAK,SAChB,CACA,IAAI,QAAQ,MAAO,CACf,KAAK,SAAW,KACpB,CACA,IAAI,SAAU,CACV,OAAO,KAAK,QAChB,CACA,IAAI,MAAM,MAAO,CACb,KAAK,OAAS,KAClB,CACA,IAAI,OAAQ,CACR,OAAO,KAAK,MAChB,CACA,IAAI,MAAM,MAAO,CACb,KAAK,OAAS,KAClB,CACA,IAAI,OAAQ,CACR,OAAO,KAAK,MAChB,CACA,IAAI,QAAQ,MAAO,CACf,KAAK,SAAW,KACpB,CACA,IAAI,SAAU,CACV,OAAO,KAAK,QAChB,CACA,IAAI,aAAc,CACd,OAAO,KAAK,YAChB,CACA,IAAI,QAAS,CACT,OAAO,KAAK,OAChB,CACA,IAAI,UAAW,CACX,OAAO,KAAK,SAChB,CACA,IAAI,cAAe,CACf,OAAO,KAAK,aAChB,CACA,IAAI,QAAS,CACT,OAAO,KAAK,OAChB,CACA,IAAI,QAAS,CACT,OAAO,KAAK,OAChB,CACA,IAAI,WAAY,CACZ,OAAO,KAAK,UAChB,CACA,IAAI,YAAa,CACb,OAAO,KAAK,WAChB,CACA,IAAI,YAAa,CACb,OAAO,KAAK,WAChB,CACA,IAAI,aAAc,CACd,OAAO,KAAK,YAChB,CACA,IAAI,WAAY,CACZ,OAAO,KAAK,UAChB,CACA,IAAI,QAAS,CACT,OAAO,KAAK,OAChB,CACA,IAAI,QAAS,CACT,OAAO,KAAK,OAChB,CACA,IAAI,QAAS,CACT,OAAO,KAAK,OAChB,CACA,aAAc,CAIV,KAAK,SAAW,QAEhB,KAAK,QAAU,OACf,KAAK,QAAU,OACf,KAAK,WAAa,UAClB,KAAK,YAAc,WACnB,KAAK,aAAe,YACpB,KAAK,WAAa,UAIlB,KAAK,QAAU,WAIf,KAAK,QAAU,mBAIf,KAAK,QAAU,WAMf,KAAK,YAAe,SAAY,CAE5B,IAAM,iBAAmB,KAAK,SAAS,OAAS,GAC5C,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAAE,QAAQ,OAAO,OAAS,MAAM,YAAc,KAAK,OAAO,KAAK,OAAO,OAAS,CAAC,EAAE,SAAS,EAAE,OAAS,EAChJ,eAAQ,aAAe,iBAAmB,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAAE,MAAQ,KACnF,KAAK,SAAS,OAAO,CAChC,EAOA,KAAK,SAAY,UAAa,KAAK,OAAO,OAAO,OAAS,MAAM,YAAc,QAAQ,EAAE,CAAC,EAKzF,KAAK,eAAkB,UAAa,CAEhC,KAAK,YAAY,kBAAoB,SAErC,KAAK,aAAa,OAAO,QAAU,OAAO,QAAU,oBAAoB,EAAE,CAAC,EAAE,kBAAoB,QACrG,EAOA,KAAK,qBAAuB,CAAC,MAAO,IAAK,gBAAkB,CACvD,MAAM,WAAW,QAAQ,KAAO,cAAc,KAAK,qBAAqB,IAAK,GAAG,CAAC,CAAC,EAClF,MAAM,WAAW,QAAQ,KAAO,CAC5B,GAAI,IAAI,OAAS,UAAY,IAAI,OAAS,YAAa,CAEnD,IAAI,KAAO,IAAI,MAAQ,OAAO,IAAI,MAAS,SAAW,IAAI,KAAO,GAE7D,CAAC,KAAK,SAAS,GAAG,GAAK,CAAC,KAAK,SAAS,GAAG,EACzC,KAAO,oBAAsB,KACvB,KAAK,SAAS,GAAG,EAEjB,KAAK,SAAS,GAAG,IACvB,KAAO,aAAe,MAFtB,KAAO,oBAAsB,KAIjC,IAAI,KAAK,IAAI,OAAO,QAAQ,KAAM,KAAK,EAAG,KAAK,MAAM,GAAG,EAAE,IAAI,EAAG,CAAE,OAAQ,EAAK,CAAC,CACrF,CACJ,CAAC,CACL,EAOA,KAAK,mBAAqB,CAAC,WAAY,cAAgB,UAAU,KAAM,OAAQ,OAAQ,WAAa,CAEhG,IAAM,QAAU,SAAS,cAAc,GAAG,EAM1C,GALA,QAAQ,aAAa,QAAS,eAAe,EAC7C,QAAQ,QAAQ,aAAe,MAC/B,SAAS,KAAK,YAAY,OAAO,EAG7B,OAAO,IAAI,gBAAiB,CAC5B,IAAM,IAAM,OAAO,IAAI,gBAAgB,IAAI,KAAK,CAAC,WAAW,EAAG,CAAE,KAAM,2EAA4E,CAAC,CAAC,EACrJ,eAAQ,KAAO,IACf,QAAQ,SAAW,WACnB,QAAQ,MAAM,EAEd,WAAW,IAAM,CACb,OAAO,IAAI,gBAAgB,GAAG,EAC9B,SAAS,KAAK,YAAY,OAAO,CACrC,EAAG,GAAG,EAEC,MAAM,QAAQ,QAAQ,UAAU,CAC3C,CACJ,CAAC,EAMD,KAAK,mBAAsB,OAAU,UAAU,KAAM,OAAQ,OAAQ,WAAa,CAC9E,IAAM,iBAAmB,CAAC,EACtB,iBAAmB,CAAC,EAClB,IAAM,IAAI,aAAArB,QAEhB,YAAK,OAAO,QAAQ,OAAS,CACzB,iBAAmB,iBAAiB,OAAO,qBAAqB,KAAK,CAAC,CAC1E,CAAC,EACD,KAAK,aAAa,QAAQ,QAAU,CAChC,iBAAmB,iBAAiB,OAAO,qBAAqB,MAAM,CAAC,CAC3E,CAAC,EACD,iBAAmB,iBAAiB,OAAO,qBAAqB,KAAK,WAAW,CAAC,EAE1E,MAAM,QAAQ,IAAI,gBAAgB,EAAE,KAAK,IAAM,UAAU,KAAM,OAAQ,OAAQ,WAAa,CAE/F,YAAK,OAAO,QAAQ,OAAS,CACrB,MAAM,cACN,8BAA8B,KAAK,CAC3C,CAAC,EAED,IAAI,OAAO,OAAO,EAClB,IAAI,OAAO,UAAU,EACrB,IAAI,OAAO,KAAK,EAAE,OAAO,OAAO,EAChC,IAAI,OAAO,YAAY,EAAE,OAAO,OAAO,EACvC,IAAI,OAAO,gBAAgB,EAC3B,IAAI,OAAO,WAAW,EACtB,IAAI,OAAO,kBAAkB,EAAE,OAAO,OAAO,EAC7C,IAAI,OAAO,kBAAkB,EAAE,OAAO,OAAO,EAC7C,IAAI,OAAO,YAAY,EAAE,OAAO,OAAO,EACvC,IAAI,OAAO,WAAW,EACtB,IAAI,OAAO,kBAAkB,EAAE,OAAO,OAAO,EAC7C,IAAI,OAAO,iBAAiB,EAAE,OAAO,OAAO,EAC5C,IAAI,KAAK,sBAAuB,iBAAiB,KAAK,OAAQ,KAAK,aAAc,KAAK,WAAW,CAAC,EAClG,IAAI,KAAK,cAAe,gBAAgB,CAAC,EACzC,IAAI,KAAK,mBAAoB,WAAW,KAAK,OAAQ,KAAK,OAAO,CAAC,EAClE,IAAI,KAAK,oBAAqB,YAAY,KAAK,MAAO,KAAK,QAAS,KAAK,OAAQ,KAAK,QAAQ,CAAC,EAC/F,IAAI,KAAK,kCAAmC,wBAAwB,KAAK,MAAM,CAAC,EAChF,IAAI,KAAK,uBAAwB,aAAa,IAAI,CAAC,EACnD,IAAI,KAAK,uBAAwB,oBAAoB,IAAI,CAAC,EAC1D,IAAI,KAAK,oBAAqB,iBAAiB,CAAC,EAChD,IAAI,KAAK,sBAAuB,mBAAmB,CAAC,EACpD,IAAI,KAAK,oBAAqB,iBAAiB,CAAC,EAEhD,KAAK,aAAa,QAAQ,CAAC,OAAQ,MAAQ,CACvC,IAAI,KAAK,+BAA+B,IAAM,CAAC,OAAQ,cAAc,MAAM,CAAC,EAC5E,IAAI,KAAK,qCAAqC,IAAM,CAAC,YAAa,sBAAsB,IAAM,EAAG,KAAK,YAAY,CAAC,CACvH,CAAC,EACD,KAAK,OAAO,QAAQ,CAAC,MAAO,MAAQ,CAChC,IAAI,KAAK,mBAAmB,IAAM,CAAC,OAAQ,aAAa,KAAK,CAAC,EAC9D,IAAI,KAAK,yBAAyB,IAAM,CAAC,YAAa,gBAAgB,KAAK,OAAQ,KAAK,aAAc,IAAM,CAAC,CAAC,EAE9G,IAAI,KAAK,6BAA6B,IAAM,CAAC,OAAQ,kBAAkB,KAAK,CAAC,EAC7E,IAAI,KAAK,mCAAmC,IAAM,CAAC,YAAa,qBAAqB,IAAM,CAAC,CAAC,CACjG,CAAC,EACD,IAAI,KAAK,oCAAqC,cAAc,KAAK,YAAa,KAAK,YAAY,CAAC,EAChG,IAAI,KAAK,+CAAgD,iBAAiB,KAAK,YAAa,KAAK,YAAY,CAAC,EAC9G,IAAI,KAAK,oCAAqC,mBAAmB,CAAC,EAClE,IAAI,KAAK,+CAAgD,sBAAsB,CAAC,EAEhF,KAAK,aAAa,QAAQ,QAAU,CAChC,KAAK,qBAAqB,OAAQ,IAAK,gBAAgB,CAC3D,CAAC,EACD,KAAK,OAAO,QAAQ,OAAS,CACzB,KAAK,qBAAqB,MAAO,IAAK,gBAAgB,CAC1D,CAAC,EACD,KAAK,qBAAqB,KAAK,YAAa,IAAK,gBAAgB,EAE1D,MAAM,QAAQ,IAAI,gBAAgB,EAAE,KAAK,IAAM,UAAU,KAAM,OAAQ,OAAQ,WAAa,CAC/F,OAAI,MAAM,aAAe,SAEd,MAAM,IAAI,cAAc,CAAE,KAAM,aAAc,YAAa,MAAM,YAAc,UAAY,OAAQ,CAAC,EAEtG,MAAM,WAEJ,MAAM,IAAI,cAAc,CAAE,KAAM,MAAM,UAAW,CAAC,EAIlD,MAAM,IAAI,cAAc,CAAE,KAAM,OAAQ,YAAa,MAAM,YAAc,UAAY,OAAQ,CAAC,CAE7G,CAAC,CAAC,CACN,CAAC,CAAC,CACN,CAAC,EACD,IAAM,UAAY,CAAE,KAAM,YAAa,MAAO,OAAS,OAAQ,MAAQ,EACjE,WAAa,CAAE,KAAM,aAAc,MAAO,OAAS,OAAQ,OAAQ,EACnE,YAAc,CAAE,KAAM,cAAe,MAAO,OAAS,OAAQ,MAAQ,EACrE,WAAa,CAAE,KAAM,SAAU,MAAO,QAAU,OAAQ,MAAQ,EAEtE,KAAK,QAAU,CACX,WAAY,UACZ,YAAa,WACb,aAAc,YACd,YAAa,UACjB,EAEA,KAAK,QAAU,YACf,KAAK,SAAW,YAChB,KAAK,UAAY,IACjB,KAAK,SAAW,yBAChB,KAAK,OAAS,yBAEd,KAAK,YAAc,CACf,KAAM,KAAK,QAAQ,eAAe,EAAE,KACpC,OAAQ,KAAK,QAAQ,eAAe,EAAE,MACtC,OAAQ,KAAK,QAAQ,eAAe,EAAE,OACtC,MAAO,KAAK,QAAQ,eAAe,EAAE,MACrC,OAAQ,KAAK,QAAQ,eAAe,EAAE,MAC1C,EACA,KAAK,SAAW,GAEhB,KAAK,cAAgB,CACjB,CACI,QAAS,oBACT,MAAO,qBACP,YAAa,KAAK,YAClB,MAAO,CAAC,EACR,WAAY,CAAC,EACb,WAAY,CAAC,EACb,OAAQ,KACR,UAAW,IACX,kBAAmB,KACnB,cAAe,CAAC,CACpB,CACJ,EACA,KAAK,QAAU,CAAC,EAChB,KAAK,UAAY,CAAC,EAClB,KAAK,aAAe,CAChB,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,QAAS,KAET,MAAO,KACP,YAAa,KAAK,YAClB,KAAM,KACN,MAAO,CAAC,EACR,WAAY,CAAC,EACb,WAAY,CAAC,EACb,SAAU,KACV,aAAc,KACd,UAAW,KACX,kBAAmB,KACnB,cAAe,CAAC,CACpB,CACJ,CAOA,OAAO,MAAO,CACV,OAAO,UAAU,KAAM,OAAQ,OAAQ,WAAa,CAChD,OAAO,MAAM,KAAK,mBAAmB,CACjC,YAA2D,OAAM,YACjE,WAAY,QAChB,CAAC,CACL,CAAC,CACL,CAMA,MAAM,MAAO,CACT,OAAO,UAAU,KAAM,OAAQ,OAAQ,WAAa,CAEhD,IAAM,cAAgB,OAAO,OAAU,UAA2D,OAAM,WAAc,MAAM,WAAa,OAAgB,KACnJ,cAAgB,OAAO,OAAU,UAA2D,OAAM,YAAe,MAAM,YAAc,GAC3I,OAAO,MAAM,KAAK,mBAAmB,CACjC,YAAa,cACb,WAAY,aAChB,CAAC,CACL,CAAC,CACL,CAOA,UAAU,MAAO,CACb,OAAO,UAAU,KAAM,OAAQ,OAAQ,WAAa,CAChD,IAAI,GAAI,GAER,IAAM,OAAS,OAAO,QAAY,KAAe,CAAC,EAAG,MAAK,QAAQ,YAAc,MAAQ,KAAO,SAAkB,GAAG,SAAW,GAAK,QAAQ,WAAa,MAAQ,KAAO,OAAS,OAAS,GAAG,QAAU,OAEnM,OAAO,OAAU,WAEjB,QAAQ,KAAK,wEAAwE,EACrF,MAAQ,CAAE,SAAU,KAAM,GAE9B,GAAM,CAAE,SAAU,QAAU,oBAAqB,YAAc,EAAM,EAAI,MACnE,SAAW,QAAQ,YAAY,EAAE,SAAS,OAAO,EAAI,QAAU,GAAG,OAAO,QAEzE,WAAa,OAAS,aAAe,KACrC,KAAO,MAAM,KAAK,mBAAmB,CAAE,YAAa,UAAW,CAAC,EAEtE,GAAI,OAAQ,CAER,GAAM,CAAE,SAAU,EAAG,EAAI,KAAM,QAAO,IAAS,EACzC,CAAE,SAAU,EAAI,GACtB,aAAM,UAAU,SAAU,IAAI,EACvB,QACX,CAEA,aAAM,KAAK,mBAAmB,SAAU,IAAI,EACrC,QACX,CAAC,CACL,CAOA,WAAW,QAAS,CACX,QAEK,QAAQ,OACd,QAAQ,KAAK,6BAA6B,EAF1C,QAAQ,KAAK,iCAAiC,EAGlD,IAAM,WAAa,CACf,MAAO,OACP,QAAS,CAAC,EACV,MAAO,QAAQ,KACnB,EACI,QAAQ,MACR,KAAK,SAAS,OAAO,QAAQ,MAAO,EAAG,UAAU,EAEjD,KAAK,UAAU,KAAK,UAAU,CACtC,CAMA,SAAS,QAAS,CAEd,IAAM,gBAAkB,OAAO,SAAY,SAAW,QAA6D,SAAQ,WAAc,QAAQ,WAAa,GAC1J,YAAc,CACd,MAAO,KAAK,QAAQ,eAAe,EAAE,KACrC,YAAa,KAAK,WAClB,MAAO,CAAC,EACR,WAAY,CAAC,EACb,WAAY,CAAC,EACb,UAAW,KAAK,OAAO,OAAS,CACpC,EACA,GAAI,gBAAiB,CACjB,IAAM,UAAY,KAAK,aAAa,OAAO,QAAU,OAAO,QAAU,eAAe,EAAE,CAAC,EACpF,YACA,YAAc,UACtB,CACA,IAAM,SAAW,IAAI,MAAM,CACvB,SAAU,KAAK,YACf,SAAU,KAAK,SACf,WAAY,KAAK,WACjB,YAAa,KAAK,eAClB,QAAS,KAAK,OAAO,OAAS,IAC9B,SAAU,KAAK,OAAO,OAAS,EAC/B,YAAa,KAAK,OAAO,OAAS,EAClC,WACJ,CAAC,EAMD,GAJA,KAAK,QAAQ,KAAK,QAAQ,EAI4B,SAAQ,aAAc,CACxE,IAAM,KAAO,KAAK,SAAS,OAAO,SAAW,QAAQ,QAAU,QAAQ,YAAY,EAAE,CAAC,EACjF,KAGD,KAAK,QAAQ,KAAK,QAAQ,EAF1B,QAAQ,KAAK,iDAAiD,QAAQ,YAAY,GAAG,CAG7F,SACS,KAAK,UAAY,KAAK,SAAS,OAAS,GAAM,CAAoD,SAAQ,aAAgB,CAC/H,IAAM,SAAW,KAAK,UAAU,KAAK,SAAS,OAAS,CAAC,EAEpD,SAAS,QAAU,UACnB,SAAS,QAAQ,KAAK,QAAQ,EAG9B,KAAK,UAAU,KAAK,CAChB,MAAO,WAAW,KAAK,SAAS,OAAO,MAAQ,KAAK,QAAU,SAAS,EAAE,OAAS,CAAC,GACnF,MAAO,UACP,QAAS,CAAC,QAAQ,CACtB,CAAC,CAET,CACA,OAAO,QACX,CAMA,aAAa,OAAQ,CAEZ,OAEK,OAAO,KAEP,OAAO,MAEP,OAAO,OAER,OAAO,OAAO,QAAW,SAC9B,QAAQ,KAAK,mDAAmD,EAC3D,OAAO,OAAO,OAAU,UAC7B,QAAQ,KAAK,kDAAkD,EAJ/D,QAAQ,KAAK,gCAAgC,EAF7C,QAAQ,KAAK,+BAA+B,EAF5C,QAAQ,KAAK,8BAA8B,EAF3C,QAAQ,KAAK,+CAA+C,EAWhE,KAAK,QAAQ,OAAO,IAAI,EAAI,CACxB,KAAM,OAAO,KACb,OAAQ,KAAK,MAAM,OAAO,OAAO,KAAK,EAAI,GAAG,EAC7C,OAAQ,KAAK,MAAM,OAAO,OAAO,MAAM,EAAI,GAAG,EAC9C,MAAO,KAAK,MAAM,OAAO,OAAO,KAAK,EAAI,GAAG,EAC5C,OAAQ,KAAK,MAAM,OAAO,OAAO,MAAM,EAAI,GAAG,CAClD,CACJ,CAKA,kBAAkB,MAAO,CAErB,IAAM,WAAa,KAAK,MAAM,KAAK,UAAU,KAAK,CAAC,EACnD,GAAI,CAAC,WAAW,MACZ,MAAM,IAAI,MAAM,wHAAwH,EAC5I,IAAM,UAAY,CACd,QAAS,WAAW,QAAU,oBAC9B,MAAO,WAAW,MAClB,YAAa,KAAK,WAClB,MAAO,CAAC,EACR,WAAY,CAAC,EACb,WAAY,CAAC,EACb,OAAQ,KACR,UAAW,IAAO,KAAK,aAAa,OAAS,EAC7C,kBAAmB,WAAW,aAAe,KAC7C,cAAe,CAAC,EAChB,WAAY,WAAW,YAAc,KACrC,KAAM,WAAW,MAAQ,IAC7B,EAEA,kBAAkB,WAAY,SAAS,EAEvC,KAAK,aAAa,KAAK,SAAS,GAE5B,WAAW,YAAc,WAAW,OACpC,wBAAwB,WAAW,WAAY,SAAS,EAExD,UAAU,mBAAqB,CAAC,KAAK,YAAY,oBACjD,KAAK,YAAY,kBAAoB,UAAU,kBACvD,CAOA,cAAc,MAAO,QAAU,CAAC,EAAG,CAE/B,iBAAiB,KAAM,MAAO,QAA4D,SAAQ,gBAAmB,KAAK,aAAa,OAAO,QAAU,OAAO,QAAU,QAAQ,eAAe,EAAE,CAAC,EAAI,IAAI,CAC/M,CACJ,KCrrOA,eAAsB,kBAAkB,KAAgD,QAA+B,CAAC,EAAkB,CACxI,GAAM,CAAE,QAAS,IAAK,EAAI,KAAM,oEAC1B,KAAO,IAAI,KACjB,OAAI,QAAQ,SAAQ,KAAK,OAAS,QAAQ,QACtC,QAAQ,QAAO,KAAK,MAAQ,QAAQ,OACpC,QAAQ,UAAS,KAAK,QAAU,QAAQ,SAC5C,KAAK,OAAS,QAAQ,QAAU,cAChC,MAAM,KAAK,IAAI,EACP,MAAM,KAAK,MAAM,CAAE,WAAY,MAAO,CAAC,CACjD","names":["e","t","r","c","n","i","s","a","o","h","u","l","f","d","p","m","cell","_a","row","text","JSZip","idx","_b","_c","_d","_e","cellOpts","TEXT_HALIGN","TEXT_VALIGN","OutputType","ChartType","ShapeType","SchemeColor","AlignH","AlignV","SHAPE_TYPE","CHART_TYPE","SCHEME_COLOR_NAMES","MASTER_OBJECTS","SLIDE_OBJECT_TYPES","PLACEHOLDER_TYPES","BULLET_TYPES"]}