Deploying to release from @ PJ-568/568tools@2f50818efa31f51dd49703e7f1b3245fcf27b95a 🚀

release
PJ-568 1 year ago
parent 35d0ff3a62
commit 5961baf59e

@ -1 +1 @@
<!doctype html><html lang=en><meta http-equiv=Content-Type content="text/html; charset=utf-8"><title>Add GIF Into a Still Image</title><link rel=stylesheet href=https://blog.photopea.com/wp-content/themes/simplex/style.css media=screen><link href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,700i" rel=stylesheet><script async src="https://www.googletagmanager.com/gtag/js?id=UA-4249565-46"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-4249565-46")</script><div id=page><div id=header><a href=../index.html class=title>Design Tutorials</a><a href=https://blog.photopea.com>Blog</a> | <a href=../../learn/index.html>Learn</a> | <a class=curr href=../index.html>Tutorials</a> | <a href=../../api/index.html>API</a> | <a href=https://www.facebook.com/photopea>Facebook</a> | <a href=https://www.twitter.com/photopeacom>Twitter</a></div><div id=main><div id=content><div class=post id=post-48><span class=date>June 8, 2018</span><h1>Add GIF Into a Still Image</h1><div class=entry><p>Do you want to decorate a still image with an animated GIF? Here is how to do it fast and for free :)</p><span id=more-48></span> <a href=https://i.imgur.com/KOXOBiN.gif><img src=https://i.imgur.com/KOXOBiN.gif style=width:30%></a><h2>Open your images</h2><p>First, go to <a href=../../index.html>Photopea.com</a>. Press File - Open, and open your still image. Then, press File - Open again, and open your GIF. You should see two panels ("tabs") in Photopea.</p><a href=https://i.imgur.com/2erZxK3.png><img src=https://i.imgur.com/2erZxK3.png style=width:60%></a><h3>Duplicate layers</h3><p>Now, we need to copy all layers of the second document (frames of animation) into the first document (still image). Look into the Layers panel (bottom right): there is a folder (named "animated" in our case), that contains all frame layers.<p>Now, right-click that folder (in Layers panel) and choose Duplicate Into.</p><a href=https://i.imgur.com/4w3KLAR.png><img src=https://i.imgur.com/dOPGME6.png style=width:70%></a><p>In the new window, choose the document with the still image as a destination. Confirm with OK button.<h3>Move the GIF to the right spot</h3><p>Switch to the panel ("tab") with a still image. You will see your GIF in the top left corner. Now, click and drag it to a new position (notice, that all layers of the animation are still highlighted, so you are moving all frames at the same time).<p>You can even use <a href=../../learn/free-transform.html>Free Transform</a> to make the GIF larger / smaller, or rotate it, etc.</p><a href=https://i.imgur.com/qAbuyCT.png><img src=https://i.imgur.com/qAbuyCT.png style=width:60%></a><p>Now, press File - Export As - GIF, and ... a new animation is ready! Hit Save to save it :)</p><a href=https://imgur.com/ikQanUS.gif><img src=https://imgur.com/ikQanUS.gif></a></div></div></div><div style="width:110px;margin:0 auto"><a href=# title="Share on Facebook" onclick='smallWindow("http://www.facebook.com/share.php?u=")'><img src=../../promo/fb.png></a><a href=# title="Share on Google Plus" onclick='smallWindow("https://plus.google.com/share?url=")'><img src=../../promo/gp.png></a><a href=# title="Share on Twitter" onclick='smallWindow("http://twitter.com/share?url=")'><img src=../../promo/tw.png></a><script>function smallWindow(e){window.open(e+"<? echo get_permalink($post); ?>","Share","width=640,height=300,left="+Math.floor((window.innerWidth-640)/2)+",top="+Math.floor((window.innerHeight-300)/2))}</script></div></div><div id=disqus_thread></div><script>var disqus_shortname="photopeablog";!function(){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src="//"+disqus_shortname+".disqus.com/embed.js",(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(e)}()</script> <?//php get_sidebar(); ?> <div id=footer>&copy; 2013-2018 support@photopea.com</div></div>
<!doctype html><html lang=en><meta http-equiv=Content-Type content="text/html; charset=utf-8"><title>Add GIF Into a Still Image</title><link rel=stylesheet href=https://blog.photopea.com/wp-content/themes/simplex/style.css media=screen><link href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,700i" rel=stylesheet><script async src="https://www.googletagmanager.com/gtag/js?id=UA-4249565-46"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-4249565-46")</script><div id=page><div id=header><a href=../index.html class=title>Design Tutorials</a><a href=https://blog.photopea.com>Blog</a> | <a href=../../learn/index.html>Learn</a> | <a class=curr href=../index.html>Tutorials</a> | <a href=../../api/index.html>API</a> | <a href=https://www.facebook.com/photopea>Facebook</a> | <a href=https://www.twitter.com/photopeacom>Twitter</a></div><div id=main><div id=content><div class=post id=post-48><span class=date>June 8, 2018</span><h1>Add GIF Into a Still Image</h1><div class=entry><p>Do you want to decorate a still image with an animated GIF? Here is how to do it fast and for free :)</p><span id=more-48></span> <a href=https://i.imgur.com/KOXOBiN.gif><img src=https://i.imgur.com/KOXOBiN.gif style=width:30%></a><h2>Open your images</h2><p>First, go to <a href=../../index.html>Photopea.com</a>. Press File - Open, and open your still image. Then, press File - Open again, and open your GIF. You should see two panels ("tabs") in Photopea.</p><a href=https://i.imgur.com/2erZxK3.png><img src=https://i.imgur.com/2erZxK3.png style=width:60%></a><h3>Duplicate layers</h3><p>Now, we need to copy all layers of the second document (frames of animation) into the first document (still image). Look into the Layers panel (bottom right): there is a folder (named "animated" in our case), that contains all frame layers.<p>Now, right-click that folder (in Layers panel) and choose Duplicate Into.</p><a href=https://i.imgur.com/4w3KLAR.png><img src=https://i.imgur.com/dOPGME6.png style=width:70%></a><p>In the new window, choose the document with the still image as a destination. Confirm with OK button.<h3>Move the GIF to the right spot</h3><p>Switch to the panel ("tab") with a still image. You will see your GIF in the top left corner. Now, click and drag it to a new position (notice, that all layers of the animation are still highlighted, so you are moving all frames at the same time).<p>You can even use <a href=../../learn/free-transform.html>Free Transform</a> to make the GIF larger / smaller, or rotate it, etc.</p><a href=https://i.imgur.com/qAbuyCT.png><img src=https://i.imgur.com/qAbuyCT.png style=width:60%></a><p>Now, press File - Export As - GIF, and ... a new animation is ready! Hit Save to save it :)</p><a href=https://imgur.com/ikQanUS.gif><img src=https://imgur.com/ikQanUS.gif></a></div></div></div><div style="width:110px;margin:0 auto"><a href=# title="Share on Facebook" onclick='smallWindow("http://www.facebook.com/share.php?u=")'><img src=../../promo/fb.png></a><a href=# title="Share on Google Plus" onclick='smallWindow("https://plus.google.com/share?url=")'><img src=../../promo/gp.png></a><a href=# title="Share on Twitter" onclick='smallWindow("http://twitter.com/share?url=")'><img src=../../promo/tw.png></a><script>function smallWindow(i){window.open(i+"<? echo get_permalink($post); ?>","Share","width=640,height=300,left="+Math.floor((window.innerWidth-640)/2)+",top="+Math.floor((window.innerHeight-300)/2))}</script></div></div><div id=disqus_thread></div><script>var disqus_shortname="photopeablog";!function(){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src="//"+disqus_shortname+".disqus.com/embed.js",(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(e)}()</script> <?//php get_sidebar(); ?> <div id=footer>&copy; 2013-2018 support@photopea.com</div></div>

@ -1 +1 @@
<!doctype html><html lang=en><meta http-equiv=Content-Type content="text/html; charset=utf-8"><title>Add Watermark to a Photo</title><link rel=stylesheet href=https://blog.photopea.com/wp-content/themes/simplex/style.css media=screen><link href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,700i" rel=stylesheet><script async src="https://www.googletagmanager.com/gtag/js?id=UA-4249565-46"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-4249565-46")</script><div id=page><div id=header><a href=../index.html class=title>Design Tutorials</a><a href=https://blog.photopea.com>Blog</a> | <a href=../../learn/index.html>Learn</a> | <a class=curr href=../index.html>Tutorials</a> | <a href=../../api/index.html>API</a> | <a href=https://www.facebook.com/photopea>Facebook</a> | <a href=https://www.twitter.com/photopeacom>Twitter</a></div><div id=main><div id=content><div class=post id=post-81><span class=date>September 6, 2018</span><h1>Add Watermark to a Photo</h1><div class=entry><p>Sometimes, we need to place a watermark into a photo. How can we do it fast and for free?</p><span id=more-81></span> <a href=https://i.imgur.com/3CNPx3j.png target=_blank><img src=https://i.imgur.com/3CNPx3j.png class=fullw></a><h2>Open Your Image</h2><p>First, go to <a href=../../index.html>Photopea.com</a>. Press File - Open, and open open your main (background) image.<h2>Make a Watermark</h2><p>Now, we need an element, that we will use as a watermark. We have several options:<ul><li><b>Load another image</b>: Press File - Open & Place. Open your image, and then hit Enter to confirm placing.<li><b>Make a watermark yourself</b>: E.g. use a Brush or <a href=../../learn/vg-creating.html>Vector tools</a> to draw a circle or other interesting shapes.<li><b>Type a text</b>: Use a <a href=../../learn/text.html>Type tool</a> to type your own text.</ul><p>Once we are done, right-click the watermark layer (in Layers panel) and choose Rasterize.</p><img src=https://i.imgur.com/T7OdaCY.png style=width:36%><p><b>Optional:</b> we can also adjust the colors. Press Image - Adjustments - Hue/Saturation. Drag the Lightness to make the watermark completely black or completely white. Confirm with OK.<h2>Position the Watermark</h2><p>We may want our watermark to be in the corner of the image, or to be repeated over the whole image as a pattern. To move it to the corner, choose a Move tool (the first in the Toolbar) and drag the watermark to a correct position. You can also use <a href=../../learn/free-transform.html>Free Transform</a> to make it bigger or smaller.<p>To repeat the watermark across the whole image, press Filter - Other - Repeat. Here, you can choose many parameters, such as Scale, Row Shift, Spacing, Angle etc. Confirm the filter by pressing OK.</p><a href=https://i.imgur.com/ojF9aKa.png target=_blank><img src=https://i.imgur.com/ojF9aKa.png style=width:80%></a><h2>Change the Opacity</h2><p>Once we have the right watermark at the right position, we can change the way it interacts with a background. The main two parameters are the Opacity and the Blend Mode, which you can change at the top of the Layers panel. Useful blend modes are Multiply, Screen and Overlay.</p><img src=https://i.imgur.com/lN493ns.png style=width:35%><p>Now, press File - Export As - PNG or JPG. And we are done! :)</div></div></div><div style="width:110px;margin:0 auto"><a href=# title="Share on Facebook" onclick='smallWindow("http://www.facebook.com/share.php?u=")'><img src=../../promo/fb.png></a><a href=# title="Share on Google Plus" onclick='smallWindow("https://plus.google.com/share?url=")'><img src=../../promo/gp.png></a><a href=# title="Share on Twitter" onclick='smallWindow("http://twitter.com/share?url=")'><img src=../../promo/tw.png></a><script>function smallWindow(n){window.open(n+"<? echo get_permalink($post); ?>","Share","width=640,height=300,left="+Math.floor((window.innerWidth-640)/2)+",top="+Math.floor((window.innerHeight-300)/2))}</script></div></div><div id=disqus_thread></div><script>var disqus_shortname="photopeablog";!function(){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src="//"+disqus_shortname+".disqus.com/embed.js",(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(e)}()</script> <?//php get_sidebar(); ?> <div id=footer>&copy; 2013-2018 support@photopea.com</div></div>
<!doctype html><html lang=en><meta http-equiv=Content-Type content="text/html; charset=utf-8"><title>Add Watermark to a Photo</title><link rel=stylesheet href=https://blog.photopea.com/wp-content/themes/simplex/style.css media=screen><link href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,700i" rel=stylesheet><script async src="https://www.googletagmanager.com/gtag/js?id=UA-4249565-46"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-4249565-46")</script><div id=page><div id=header><a href=../index.html class=title>Design Tutorials</a><a href=https://blog.photopea.com>Blog</a> | <a href=../../learn/index.html>Learn</a> | <a class=curr href=../index.html>Tutorials</a> | <a href=../../api/index.html>API</a> | <a href=https://www.facebook.com/photopea>Facebook</a> | <a href=https://www.twitter.com/photopeacom>Twitter</a></div><div id=main><div id=content><div class=post id=post-81><span class=date>September 6, 2018</span><h1>Add Watermark to a Photo</h1><div class=entry><p>Sometimes, we need to place a watermark into a photo. How can we do it fast and for free?</p><span id=more-81></span> <a href=https://i.imgur.com/3CNPx3j.png target=_blank><img src=https://i.imgur.com/3CNPx3j.png class=fullw></a><h2>Open Your Image</h2><p>First, go to <a href=../../index.html>Photopea.com</a>. Press File - Open, and open open your main (background) image.<h2>Make a Watermark</h2><p>Now, we need an element, that we will use as a watermark. We have several options:<ul><li><b>Load another image</b>: Press File - Open & Place. Open your image, and then hit Enter to confirm placing.<li><b>Make a watermark yourself</b>: E.g. use a Brush or <a href=../../learn/vg-creating.html>Vector tools</a> to draw a circle or other interesting shapes.<li><b>Type a text</b>: Use a <a href=../../learn/text.html>Type tool</a> to type your own text.</ul><p>Once we are done, right-click the watermark layer (in Layers panel) and choose Rasterize.</p><img src=https://i.imgur.com/T7OdaCY.png style=width:36%><p><b>Optional:</b> we can also adjust the colors. Press Image - Adjustments - Hue/Saturation. Drag the Lightness to make the watermark completely black or completely white. Confirm with OK.<h2>Position the Watermark</h2><p>We may want our watermark to be in the corner of the image, or to be repeated over the whole image as a pattern. To move it to the corner, choose a Move tool (the first in the Toolbar) and drag the watermark to a correct position. You can also use <a href=../../learn/free-transform.html>Free Transform</a> to make it bigger or smaller.<p>To repeat the watermark across the whole image, press Filter - Other - Repeat. Here, you can choose many parameters, such as Scale, Row Shift, Spacing, Angle etc. Confirm the filter by pressing OK.</p><a href=https://i.imgur.com/ojF9aKa.png target=_blank><img src=https://i.imgur.com/ojF9aKa.png style=width:80%></a><h2>Change the Opacity</h2><p>Once we have the right watermark at the right position, we can change the way it interacts with a background. The main two parameters are the Opacity and the Blend Mode, which you can change at the top of the Layers panel. Useful blend modes are Multiply, Screen and Overlay.</p><img src=https://i.imgur.com/lN493ns.png style=width:35%><p>Now, press File - Export As - PNG or JPG. And we are done! :)</div></div></div><div style="width:110px;margin:0 auto"><a href=# title="Share on Facebook" onclick='smallWindow("http://www.facebook.com/share.php?u=")'><img src=../../promo/fb.png></a><a href=# title="Share on Google Plus" onclick='smallWindow("https://plus.google.com/share?url=")'><img src=../../promo/gp.png></a><a href=# title="Share on Twitter" onclick='smallWindow("http://twitter.com/share?url=")'><img src=../../promo/tw.png></a><script>function smallWindow(o){window.open(o+"<? echo get_permalink($post); ?>","Share","width=640,height=300,left="+Math.floor((window.innerWidth-640)/2)+",top="+Math.floor((window.innerHeight-300)/2))}</script></div></div><div id=disqus_thread></div><script>var disqus_shortname="photopeablog";!function(){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src="//"+disqus_shortname+".disqus.com/embed.js",(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(e)}()</script> <?//php get_sidebar(); ?> <div id=footer>&copy; 2013-2018 support@photopea.com</div></div>

@ -1 +1 @@
<!doctype html><html lang=en><meta http-equiv=Content-Type content="text/html; charset=utf-8"><title>Convert Sketch to PSD</title><link rel=stylesheet href=https://blog.photopea.com/wp-content/themes/simplex/style.css media=screen><link href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,700i" rel=stylesheet><script async src="https://www.googletagmanager.com/gtag/js?id=UA-4249565-46"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-4249565-46")</script><div id=page><div id=header><a href=../index.html class=title>Design Tutorials</a><a href=https://blog.photopea.com>Blog</a> | <a href=../../learn/index.html>Learn</a> | <a class=curr href=../index.html>Tutorials</a> | <a href=../../api/index.html>API</a> | <a href=https://www.facebook.com/photopea>Facebook</a> | <a href=https://www.twitter.com/photopeacom>Twitter</a></div><div id=main><div id=content><div class=post id=post-36><span class=date>May 30, 2018</span><h1>Convert Sketch to PSD</h1><div class=entry><p>Sometimes, we want to work with Sketch graphics in Photoshop. Converting it manually is hard, but it can be done automatically, see how!</p><span id=more-36></span><h2>Sketch to PSD</h2><p>Today (the middle of 2018), Photopea is the best tool to convert Sketch graphics to Photoshop files. Go to <a href=../../index.html target=_blank>Photopea.com</a> to start a free online photo editor. If you see a Welcome Screen, you can close it by pressing the Cross in the top right corner.<p>Open a Sketch file from your computer: click <b>File - Open</b> (in the top left corner), then find and select the PSD file (or use <a href=../../learn/opening-saving.html#opening>drag and drop</a>).<p>You should see the graphics of the Sketch file in front of you. Now, just click <b>File - Save As PSD</b>. And that's all! So simple :)</div></div></div><div style="width:110px;margin:0 auto"><a href=# title="Share on Facebook" onclick='smallWindow("http://www.facebook.com/share.php?u=")'><img src=../../promo/fb.png></a><a href=# title="Share on Google Plus" onclick='smallWindow("https://plus.google.com/share?url=")'><img src=../../promo/gp.png></a><a href=# title="Share on Twitter" onclick='smallWindow("http://twitter.com/share?url=")'><img src=../../promo/tw.png></a><script>function smallWindow(i){window.open(i+"<? echo get_permalink($post); ?>","Share","width=640,height=300,left="+Math.floor((window.innerWidth-640)/2)+",top="+Math.floor((window.innerHeight-300)/2))}</script></div></div><div id=disqus_thread></div><script>var disqus_shortname="photopeablog";!function(){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src="//"+disqus_shortname+".disqus.com/embed.js",(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(e)}()</script> <?//php get_sidebar(); ?> <div id=footer>&copy; 2013-2018 support@photopea.com</div></div>
<!doctype html><html lang=en><meta http-equiv=Content-Type content="text/html; charset=utf-8"><title>Convert Sketch to PSD</title><link rel=stylesheet href=https://blog.photopea.com/wp-content/themes/simplex/style.css media=screen><link href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,700i" rel=stylesheet><script async src="https://www.googletagmanager.com/gtag/js?id=UA-4249565-46"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-4249565-46")</script><div id=page><div id=header><a href=../index.html class=title>Design Tutorials</a><a href=https://blog.photopea.com>Blog</a> | <a href=../../learn/index.html>Learn</a> | <a class=curr href=../index.html>Tutorials</a> | <a href=../../api/index.html>API</a> | <a href=https://www.facebook.com/photopea>Facebook</a> | <a href=https://www.twitter.com/photopeacom>Twitter</a></div><div id=main><div id=content><div class=post id=post-36><span class=date>May 30, 2018</span><h1>Convert Sketch to PSD</h1><div class=entry><p>Sometimes, we want to work with Sketch graphics in Photoshop. Converting it manually is hard, but it can be done automatically, see how!</p><span id=more-36></span><h2>Sketch to PSD</h2><p>Today (the middle of 2018), Photopea is the best tool to convert Sketch graphics to Photoshop files. Go to <a href=../../index.html target=_blank>Photopea.com</a> to start a free online photo editor. If you see a Welcome Screen, you can close it by pressing the Cross in the top right corner.<p>Open a Sketch file from your computer: click <b>File - Open</b> (in the top left corner), then find and select the PSD file (or use <a href=../../learn/opening-saving.html#opening>drag and drop</a>).<p>You should see the graphics of the Sketch file in front of you. Now, just click <b>File - Save As PSD</b>. And that's all! So simple :)</div></div></div><div style="width:110px;margin:0 auto"><a href=# title="Share on Facebook" onclick='smallWindow("http://www.facebook.com/share.php?u=")'><img src=../../promo/fb.png></a><a href=# title="Share on Google Plus" onclick='smallWindow("https://plus.google.com/share?url=")'><img src=../../promo/gp.png></a><a href=# title="Share on Twitter" onclick='smallWindow("http://twitter.com/share?url=")'><img src=../../promo/tw.png></a><script>function smallWindow(n){window.open(n+"<? echo get_permalink($post); ?>","Share","width=640,height=300,left="+Math.floor((window.innerWidth-640)/2)+",top="+Math.floor((window.innerHeight-300)/2))}</script></div></div><div id=disqus_thread></div><script>var disqus_shortname="photopeablog";!function(){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src="//"+disqus_shortname+".disqus.com/embed.js",(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(e)}()</script> <?//php get_sidebar(); ?> <div id=footer>&copy; 2013-2018 support@photopea.com</div></div>

@ -1 +1 @@
<!doctype html><html lang=en><meta http-equiv=Content-Type content="text/html; charset=utf-8"><title>Remove Background From Photo</title><link rel=stylesheet href=https://blog.photopea.com/wp-content/themes/simplex/style.css media=screen><link href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,700i" rel=stylesheet><script async src="https://www.googletagmanager.com/gtag/js?id=UA-4249565-46"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-4249565-46")</script><div id=page><div id=header><a href=../index.html class=title>Design Tutorials</a><a href=https://blog.photopea.com>Blog</a> | <a href=../../learn/index.html>Learn</a> | <a class=curr href=../index.html>Tutorials</a> | <a href=../../api/index.html>API</a> | <a href=https://www.facebook.com/photopea>Facebook</a> | <a href=https://www.twitter.com/photopeacom>Twitter</a></div><div id=main><div id=content><div class=post id=post-26><span class=date>May 30, 2018</span><h1>Remove Background From Photo</h1><div class=entry><p>Cut out an object from a photo, so you can place it elsewhere, or give it another background.</p><span id=more-26></span><p>Go to <a href=../../index.html target=_blank>Photopea.com</a> to start a free online photo editor. If you see a Welcome Screen, you can close it by pressing the Cross in the top right corner.<p>Open a photo from your computer: click File - Open (in the top left corner), then find and select the file in your device (or use <a href=../../learn/opening-saving.html#opening>drag and drop</a>).<p>We have to do two steps: <b>Select Background</b> (the hard part) and <b>Delete selected area</b>.<h2>Select Background</h2><p>Photopea lets you select some part of the image. This selected area is illustrated by a countour around it.</p><img src=https://imgur.com/BxajzGd.png><p>We will demonstrate our work on <a href=https://i.imgur.com/bZMAi9K.jpg>this image of a tree</a>, where we want to remove the sky. Properly selected sky will look like this:</p><img src=https://i.imgur.com/kBrva6F.png><p>We will select the bacgkround with a Magic Wand tool. It can select an area with similar colors (blue in our case). First, select Magic Wand in the toolbar on the left (two tools are hidden under the same button).</p><img src=https://i.imgur.com/bls9wd8.png><p>Now, click on the sky area to select it. Each click removes the old selection, and creates a new one. <b>Hold Shift</b> to combine the new selection with an old selection. Try changing the Tolerance and Contiguous in the top menu. You should end up with a selected sky, as you see above.<p>Selecting may be hard, it can take 10 seconds, or even several hours. The more time you spend, the more prefect it becomes. Read more about selections at <a href=../../learn/selections.html>/learn/selections</a> and its sub-articles.<h2>Delete selected area</h2><p>To delete a selected area, press Edit - Clear in the top menu, or Delete on your keyboard. The white and grey squares mean, that the area is empty.</p><img src=https://i.imgur.com/cjofsuH.png><p>Now, save the image as PNG (File - Export As - PNG, hit "Save"). PNG is necessary, because JPG does not support transparent pixels.</div></div></div><div style="width:110px;margin:0 auto"><a href=# title="Share on Facebook" onclick='smallWindow("http://www.facebook.com/share.php?u=")'><img src=../../promo/fb.png></a><a href=# title="Share on Google Plus" onclick='smallWindow("https://plus.google.com/share?url=")'><img src=../../promo/gp.png></a><a href=# title="Share on Twitter" onclick='smallWindow("http://twitter.com/share?url=")'><img src=../../promo/tw.png></a><script>function smallWindow(o){window.open(o+"<? echo get_permalink($post); ?>","Share","width=640,height=300,left="+Math.floor((window.innerWidth-640)/2)+",top="+Math.floor((window.innerHeight-300)/2))}</script></div></div><div id=disqus_thread></div><script>var disqus_shortname="photopeablog";!function(){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src="//"+disqus_shortname+".disqus.com/embed.js",(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(e)}()</script> <?//php get_sidebar(); ?> <div id=footer>&copy; 2013-2018 support@photopea.com</div></div>
<!doctype html><html lang=en><meta http-equiv=Content-Type content="text/html; charset=utf-8"><title>Remove Background From Photo</title><link rel=stylesheet href=https://blog.photopea.com/wp-content/themes/simplex/style.css media=screen><link href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,700i" rel=stylesheet><script async src="https://www.googletagmanager.com/gtag/js?id=UA-4249565-46"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-4249565-46")</script><div id=page><div id=header><a href=../index.html class=title>Design Tutorials</a><a href=https://blog.photopea.com>Blog</a> | <a href=../../learn/index.html>Learn</a> | <a class=curr href=../index.html>Tutorials</a> | <a href=../../api/index.html>API</a> | <a href=https://www.facebook.com/photopea>Facebook</a> | <a href=https://www.twitter.com/photopeacom>Twitter</a></div><div id=main><div id=content><div class=post id=post-26><span class=date>May 30, 2018</span><h1>Remove Background From Photo</h1><div class=entry><p>Cut out an object from a photo, so you can place it elsewhere, or give it another background.</p><span id=more-26></span><p>Go to <a href=../../index.html target=_blank>Photopea.com</a> to start a free online photo editor. If you see a Welcome Screen, you can close it by pressing the Cross in the top right corner.<p>Open a photo from your computer: click File - Open (in the top left corner), then find and select the file in your device (or use <a href=../../learn/opening-saving.html#opening>drag and drop</a>).<p>We have to do two steps: <b>Select Background</b> (the hard part) and <b>Delete selected area</b>.<h2>Select Background</h2><p>Photopea lets you select some part of the image. This selected area is illustrated by a countour around it.</p><img src=https://imgur.com/BxajzGd.png><p>We will demonstrate our work on <a href=https://i.imgur.com/bZMAi9K.jpg>this image of a tree</a>, where we want to remove the sky. Properly selected sky will look like this:</p><img src=https://i.imgur.com/kBrva6F.png><p>We will select the bacgkround with a Magic Wand tool. It can select an area with similar colors (blue in our case). First, select Magic Wand in the toolbar on the left (two tools are hidden under the same button).</p><img src=https://i.imgur.com/bls9wd8.png><p>Now, click on the sky area to select it. Each click removes the old selection, and creates a new one. <b>Hold Shift</b> to combine the new selection with an old selection. Try changing the Tolerance and Contiguous in the top menu. You should end up with a selected sky, as you see above.<p>Selecting may be hard, it can take 10 seconds, or even several hours. The more time you spend, the more prefect it becomes. Read more about selections at <a href=../../learn/selections.html>/learn/selections</a> and its sub-articles.<h2>Delete selected area</h2><p>To delete a selected area, press Edit - Clear in the top menu, or Delete on your keyboard. The white and grey squares mean, that the area is empty.</p><img src=https://i.imgur.com/cjofsuH.png><p>Now, save the image as PNG (File - Export As - PNG, hit "Save"). PNG is necessary, because JPG does not support transparent pixels.</div></div></div><div style="width:110px;margin:0 auto"><a href=# title="Share on Facebook" onclick='smallWindow("http://www.facebook.com/share.php?u=")'><img src=../../promo/fb.png></a><a href=# title="Share on Google Plus" onclick='smallWindow("https://plus.google.com/share?url=")'><img src=../../promo/gp.png></a><a href=# title="Share on Twitter" onclick='smallWindow("http://twitter.com/share?url=")'><img src=../../promo/tw.png></a><script>function smallWindow(i){window.open(i+"<? echo get_permalink($post); ?>","Share","width=640,height=300,left="+Math.floor((window.innerWidth-640)/2)+",top="+Math.floor((window.innerHeight-300)/2))}</script></div></div><div id=disqus_thread></div><script>var disqus_shortname="photopeablog";!function(){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src="//"+disqus_shortname+".disqus.com/embed.js",(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(e)}()</script> <?//php get_sidebar(); ?> <div id=footer>&copy; 2013-2018 support@photopea.com</div></div>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -15,8 +15,8 @@
"babel-plugin-istanbul@^6.1.1",
"benchmark@~2.1.4",
"clean-jsdoc-theme@^4.2.6",
"eslint-plugin-jsdoc@~45.0.0",
"eslint@~8.41.0",
"eslint-plugin-jsdoc@~46.2.4",
"eslint@~8.42.0",
"github-release-notes@0.17.2",
"html-webpack-plugin@^5.5.0",
"jsdoc@^4.0.2",
@ -202,8 +202,8 @@
"@eslint-community/eslint-utils@^4.2.0": "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59",
"@eslint-community/regexpp@^4.4.0": "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724",
"@eslint/eslintrc@^2.0.3": "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331",
"@eslint/js@8.41.0": "https://registry.yarnpkg.com/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3",
"@humanwhocodes/config-array@^0.11.8": "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9",
"@eslint/js@8.42.0": "https://registry.yarnpkg.com/@eslint/js/-/js-8.42.0.tgz#484a1d638de2911e6f5a30c12f49c7e4a3270fb6",
"@humanwhocodes/config-array@^0.11.10": "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2",
"@humanwhocodes/module-importer@^1.0.1": "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c",
"@humanwhocodes/object-schema@^1.2.1": "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45",
"@iarna/cli@^2.1.0": "https://registry.yarnpkg.com/@iarna/cli/-/cli-2.1.0.tgz#f830356d54c72c804bd7afc43999de31e40fc3d6",
@ -223,14 +223,14 @@
"@jsdoc/salty@^0.2.1": "https://registry.yarnpkg.com/@jsdoc/salty/-/salty-0.2.5.tgz#1b2fa5bb8c66485b536d86eee877c263d322f692",
"@jsdoc/salty@^0.2.4": "https://registry.yarnpkg.com/@jsdoc/salty/-/salty-0.2.5.tgz#1b2fa5bb8c66485b536d86eee877c263d322f692",
"@leichtgewicht/ip-codec@^2.0.1": "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b",
"@microsoft/api-extractor-model@7.27.0": "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.27.0.tgz#d648629a1fde6933663bdb613f0ee39c425aae7a",
"@microsoft/api-extractor@^7.34.9": "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.35.0.tgz#0452bc6e4765d2dcc95b6f21489216c521595bfd",
"@microsoft/api-extractor-model@7.27.1": "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.27.1.tgz#06a1ba273f1a4b23fe080ba14b80d2e5346abd4f",
"@microsoft/api-extractor@^7.34.9": "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.35.1.tgz#5ae8694ceccd31e117606be9c0093d11bdb10d32",
"@microsoft/tsdoc-config@~0.16.1": "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz#b786bb4ead00d54f53839a458ce626c8548d3adf",
"@microsoft/tsdoc@0.14.2": "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz#c3ec604a0b54b9a9b87e9735dfc59e1a5da6a5fb",
"@nodelib/fs.scandir@2.1.5": "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5",
"@nodelib/fs.stat@2.0.5": "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b",
"@nodelib/fs.walk@^1.2.8": "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a",
"@rushstack/node-core-library@3.59.1": "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.59.1.tgz#6c051d1f861a6c2b07c637d2c48d75a526e9e80d",
"@rushstack/node-core-library@3.59.2": "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.59.2.tgz#3b5823d3f6946e1ed10fcb91ab8c1569f57acf55",
"@rushstack/rig-package@0.3.19": "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.19.tgz#635ca524cbb73523af3a0a19b4a0821c61800fdf",
"@rushstack/ts-command-line@4.13.3": "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.13.3.tgz#39c1cd4b0a8d86a6552a7a0635671f164a22d904",
"@socket.io/component-emitter@~3.1.0": "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553",
@ -285,9 +285,9 @@
"@webassemblyjs/wasm-parser@1.11.5": "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz#7ba0697ca74c860ea13e3ba226b29617046982e2",
"@webassemblyjs/wasm-parser@^1.11.5": "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz#7ba0697ca74c860ea13e3ba226b29617046982e2",
"@webassemblyjs/wast-printer@1.11.5": "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz#7a5e9689043f3eca82d544d7be7a8e6373a6fa98",
"@webpack-cli/configtest@^2.1.0": "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.0.tgz#b59b33377b1b896a9a7357cfc643b39c1524b1e6",
"@webpack-cli/info@^2.0.1": "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.1.tgz#eed745799c910d20081e06e5177c2b2569f166c0",
"@webpack-cli/serve@^2.0.4": "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.4.tgz#3982ee6f8b42845437fc4d391e93ac5d9da52f0f",
"@webpack-cli/configtest@^2.1.1": "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646",
"@webpack-cli/info@^2.0.2": "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd",
"@webpack-cli/serve@^2.0.5": "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e",
"@xtuc/ieee754@^1.2.0": "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790",
"@xtuc/long@4.2.2": "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d",
"JSONStream@^1.3.4": "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0",
@ -582,12 +582,12 @@
"escape-string-regexp@^1.0.5": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4",
"escape-string-regexp@^2.0.0": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344",
"escape-string-regexp@^4.0.0": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34",
"eslint-plugin-jsdoc@~45.0.0": "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-45.0.0.tgz#6be84e4842a7138cc571a907ea9c31c42eaac5c0",
"eslint-plugin-jsdoc@~46.2.4": "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.2.4.tgz#90734a47cd746863e40d0e57e5f273672d50f94e",
"eslint-scope@5.1.1": "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c",
"eslint-scope@^7.2.0": "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b",
"eslint-visitor-keys@^3.3.0": "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994",
"eslint-visitor-keys@^3.4.1": "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994",
"eslint@~8.41.0": "https://registry.yarnpkg.com/eslint/-/eslint-8.41.0.tgz#3062ca73363b4714b16dbc1e60f035e6134b6f1c",
"eslint@~8.42.0": "https://registry.yarnpkg.com/eslint/-/eslint-8.42.0.tgz#7bebdc3a55f9ed7167251fe7259f75219cade291",
"espree@^9.5.2": "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b",
"esprima@^4.0.0": "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71",
"esquery@^1.4.2": "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b",
@ -1450,14 +1450,14 @@
"wbuf@^1.1.0": "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df",
"wbuf@^1.7.3": "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df",
"wcwidth@^1.0.0": "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8",
"webpack-cli@^5.0.1": "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.1.tgz#c211ac6d911e77c512978f7132f0d735d4a97ace",
"webpack-cli@^5.0.1": "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.3.tgz#6b6186270efec62394f6fefeebed0872a779f345",
"webpack-dev-middleware@^5.3.1": "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f",
"webpack-dev-server@^4.13.2": "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.0.tgz#87ba9006eca53c551607ea0d663f4ae88be7af21",
"webpack-merge@^4.1.5": "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d",
"webpack-merge@^5.7.3": "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826",
"webpack-merge@^5.8.0": "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826",
"webpack-sources@^3.2.3": "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde",
"webpack@^5.79.0": "https://registry.yarnpkg.com/webpack/-/webpack-5.84.1.tgz#d4493acdeca46b26ffc99d86d784cabfeb925a15",
"webpack@^5.79.0": "https://registry.yarnpkg.com/webpack/-/webpack-5.85.1.tgz#d77406352f8f14ec847c54e4dcfb80b28c776b3f",
"websocket-driver@>=0.5.1": "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760",
"websocket-driver@^0.7.4": "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760",
"websocket-extensions@>=0.1.1": "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42",

File diff suppressed because one or more lines are too long

@ -1,15 +1,14 @@
Third Party: pdf.js
=====================
# Third Party: pdf.js
* Web: https://github.com/mozilla/pdf.js
* Version: v1.1.1 (pdf.js) and commit fcaf281 of jpambrun
* Date: copied on 05/05/2015
* Download:
* [jpg.js](https://github.com/mozilla/pdf.js/blob/master/src/core/jpg.js) modified as in
https://github.com/notmasteryet/jpgjs/pull/33
* [jpx.js](https://github.com/jpambrun/jpx-medical/blob/master/jpx.js)
* [arithmetic_decoder.js](https://github.com/mozilla/pdf.js/blob/v1.1.1/src/core/arithmetic_decoder.js)
* [util.js](https://github.com/mozilla/pdf.js/blob/v1.1.1/src/shared/util.js)
* License: Apache 2.0 (see [license.txt](https://github.com/mozilla/pdf.js/blob/master/LICENSE))
* Description: Mozilla's JPEG and JPEG2000 decoder from PDF.js with added support for 16 bit signed grayscale images.
* Purpose for dwv: read DICOM files containing JPEG or JPEG2000 data.
- Web: https://github.com/mozilla/pdf.js
- Version: v1.1.1 (pdf.js) and commit fcaf281 of jpambrun
- Date: copied on 05/05/2015
- Download:
- [jpg.js](https://github.com/mozilla/pdf.js/blob/master/src/core/jpg.js) modified as in
https://github.com/notmasteryet/jpgjs/pull/33
- [jpx.js](https://github.com/jpambrun/jpx-medical/blob/master/jpx.js)
- [arithmetic_decoder.js](https://github.com/mozilla/pdf.js/blob/v1.1.1/src/core/arithmetic_decoder.js)
- [util.js](https://github.com/mozilla/pdf.js/blob/v1.1.1/src/shared/util.js)
- License: Apache 2.0 (see [license.txt](https://github.com/mozilla/pdf.js/blob/master/LICENSE))
- Description: Mozilla's JPEG and JPEG2000 decoder from PDF.js with added support for 16 bit signed grayscale images.
- Purpose for dwv: read DICOM files containing JPEG or JPEG2000 data.

@ -1,12 +1,11 @@
Third Party: rii-mango
======================
# Third Party: rii-mango
JPEGLosslessDecoderJS
---------------------
* Web: https://github.com/rii-mango/JPEGLosslessDecoderJS
* Version: [2.0.2](https://github.com/rii-mango/JPEGLosslessDecoderJS/releases/tag/v2.0.2)
* Date: 19/03/2017
* Download: see release
* License: MIT (see https://github.com/rii-mango/JPEGLosslessDecoderJS/blob/v2.0.2/LICENSE)
* Description: JPEG Lossless decoder.
* Purpose for dwv: Decode JPEG embeded in DICOM.
## JPEGLosslessDecoderJS
- Web: https://github.com/rii-mango/JPEGLosslessDecoderJS
- Version: [2.0.2](https://github.com/rii-mango/JPEGLosslessDecoderJS/releases/tag/v2.0.2)
- Date: 19/03/2017
- Download: see release
- License: MIT (see https://github.com/rii-mango/JPEGLosslessDecoderJS/blob/v2.0.2/LICENSE)
- Description: JPEG Lossless decoder.
- Purpose for dwv: Decode JPEG embeded in DICOM.

@ -20,9 +20,9 @@ export declare function addTagsToDictionary(group: string, tags: object): void;
* // create the dwv app
* const app = new dwv.App();
* // initialise
* const viewConfig0 = new ViewConfig('layerGroup0');
* const viewConfig0 = new dwv.ViewConfig('layerGroup0');
* const viewConfigs = {'*': [viewConfig0]};
* const options = new AppOptions(viewConfigs);
* const options = new dwv.AppOptions(viewConfigs);
* app.init(options);
* // load dicom data
* app.loadURLs([
@ -120,6 +120,12 @@ export declare class App {
* @returns {LayerGroup} The layer group.
*/
getActiveLayerGroup(): LayerGroup;
/**
* Set the active layer group.
*
* @param {number} index The layer group index.
*/
setActiveLayerGroup(index: number): void;
/**
* Get the view layers associated to a data id.
* The layer are available after the first loaded item.
@ -172,9 +178,9 @@ export declare class App {
* // create the dwv app
* const app = new dwv.App();
* // initialise
* const viewConfig0 = new ViewConfig('layerGroup0');
* const viewConfig0 = new dwv.ViewConfig('layerGroup0');
* const viewConfigs = {'*': [viewConfig0]};
* const options = new AppOptions(viewConfigs);
* const options = new dwv.AppOptions(viewConfigs);
* options.viewOnFirstLoadItem = false;
* app.init(options);
* // render button
@ -229,8 +235,8 @@ export declare class App {
* @fires App#loadprogress
* @fires App#loaditem
* @fires App#loadend
* @fires App#loaderror
* @fires App#loadabort
* @fires App#error
* @fires App#abort
* @function
*/
loadFiles: (files: File[]) => void;
@ -246,8 +252,8 @@ export declare class App {
* @fires App#loadprogress
* @fires App#loaditem
* @fires App#loadend
* @fires App#loaderror
* @fires App#loadabort
* @fires App#error
* @fires App#abort
* @function
*/
loadURLs: (urls: string[], options?: object) => void;
@ -268,8 +274,8 @@ export declare class App {
* @fires App#loadprogress
* @fires App#loaditem
* @fires App#loadend
* @fires App#loaderror
* @fires App#loadabort
* @fires App#error
* @fires App#abort
* @function
*/
loadImageObject: (data: any[]) => void;
@ -292,6 +298,26 @@ export declare class App {
* @param {boolean} flag True to enable smoothing.
*/
setImageSmoothing(flag: boolean): void;
/**
* Get the layer group configuration from a data id.
*
* @param {string} dataId The data id.
* @param {boolean} [excludeStarConfig] Exclude the star config
* (default to false).
* @returns {ViewConfig[]} The list of associated configs.
*/
getViewConfigs(dataId: string, excludeStarConfig?: boolean): ViewConfig[];
/**
* Get the layer group configuration for a data id and group
* div id.
*
* @param {string} dataId The data id.
* @param {string} groupDivId The layer group div id.
* @param {boolean} [excludeStarConfig] Exclude the star config
* (default to false).
* @returns {ViewConfig|undefined} The associated config.
*/
getViewConfig(dataId: string, groupDivId: string, excludeStarConfig?: boolean): ViewConfig | undefined;
/**
* Get the data view config.
* Carefull, returns a reference, do not modify without resetting.
@ -325,7 +351,7 @@ export declare class App {
*/
removeDataViewConfig(dataId: string, config: ViewConfig): void;
/**
* Update a data view config.
* Update an existing data view config.
* Removes and re-creates the layer if found.
*
* @param {string} dataId The data id.
@ -562,6 +588,12 @@ export declare function buildMultipart(parts: any[], boundary: string): Uint8Arr
* to associate with intensity values.
*/
export declare class ColourMap {
/**
* @param {number[]} red Red component.
* @param {number[]} green Green component.
* @param {number[]} blue Blue component.
*/
constructor(red: number[], green: number[], blue: number[]);
/**
* Red component: 256 values in the [0, 255] range.
*
@ -675,6 +707,10 @@ export declare class DataElement {
items: any[];
}
declare type DataElements = {
[x: string]: DataElement;
};
/**
* Decoder scripts to be passed to web workers for image decoding.
*/
@ -774,18 +810,24 @@ export declare class DicomParser {
* DICOM writer.
*
* @example
* // add link to html
* const link = document.createElement("a");
* link.appendChild(document.createTextNode("download"));
* const div = document.getElementById("dwv");
* div.appendChild(link);
* // XMLHttpRequest onload callback
* const onload = function (event) {
* const parser = new DicomParser();
* const parser = new dwv.DicomParser();
* parser.parse(event.target.response);
* // create writer with parser data elements
* const writer = new DicomWriter(parser.getDicomElements());
* // create modified buffer and put it in a Blol
* const blob = new Blob([writer.getBuffer()], {type: 'application/dicom'});
* // example download link
* const element = document.getElementById("download");
* element.href = URL.createObjectURL(blob);
* element.download = "anonym.dcm";
* // create writer
* const writer = new dwv.DicomWriter();
* // get buffer using default rules
* const dicomBuffer = writer.getBuffer(parser.getDicomElements());
* // create blob
* const blob = new Blob([dicomBuffer], {type: 'application/dicom'});
* // add blob to download link
* link.href = URL.createObjectURL(blob);
* link.download = "anonym.dcm";
* };
* // DICOM file request
* const request = new XMLHttpRequest();
@ -842,6 +884,140 @@ export declare class DicomWriter {
#private;
}
/**
* Draw controller.
*/
export declare class DrawController {
/**
* @param {DrawLayer} drawLayer The draw layer.
*/
constructor(drawLayer: DrawLayer);
/**
* Get the current position group.
*
* @returns {Konva.Group|undefined} The Konva.Group.
*/
getCurrentPosGroup(): Konva.Group | undefined;
/**
* Reset: clear the layers array.
*/
reset(): void;
/**
* Get a Konva group using its id.
*
* @param {string} id The group id.
* @returns {object|undefined} The Konva group.
*/
getGroup(id: string): object | undefined;
/**
* Activate the current draw layer.
*
* @param {Index} index The current position.
* @param {number} scrollIndex The scroll index.
*/
activateDrawLayer(index: Index, scrollIndex: number): void;
/**
* Get a list of drawing display details.
*
* @returns {DrawDetails[]} A list of draw details.
*/
getDrawDisplayDetails(): DrawDetails[];
/**
* Get a list of drawing store details. Used in state.
*
* @returns {object} A list of draw details including id, text, quant...
* TODO Unify with getDrawDisplayDetails?
*/
getDrawStoreDetails(): object;
/**
* Set the drawings on the current stage.
*
* @param {Array} drawings An array of drawings.
* @param {DrawDetails[]} drawingsDetails An array of drawings details.
* @param {object} cmdCallback The DrawCommand callback.
* @param {object} exeCallback The callback to call once the
* DrawCommand has been executed.
*/
setDrawings(drawings: any[], drawingsDetails: DrawDetails[], cmdCallback: object, exeCallback: object): void;
/**
* Update a drawing from its details.
*
* @param {DrawDetails} drawDetails Details of the drawing to update.
*/
updateDraw(drawDetails: DrawDetails): void;
/**
* Delete a Draw from the stage.
*
* @param {Konva.Group} group The group to delete.
* @param {object} cmdCallback The DeleteCommand callback.
* @param {object} exeCallback The callback to call once the
* DeleteCommand has been executed.
*/
deleteDrawGroup(group: Konva.Group, cmdCallback: object, exeCallback: object): void;
/**
* Delete a Draw from the stage.
*
* @param {string} id The id of the group to delete.
* @param {Function} cmdCallback The DeleteCommand callback.
* @param {Function} exeCallback The callback to call once the
* DeleteCommand has been executed.
* @returns {boolean} False if the group cannot be found.
*/
deleteDraw(id: string, cmdCallback: Function, exeCallback: Function): boolean;
/**
* Delete all Draws from the stage.
*
* @param {Function} cmdCallback The DeleteCommand callback.
* @param {Function} exeCallback The callback to call once the
* DeleteCommand has been executed.
*/
deleteDraws(cmdCallback: Function, exeCallback: Function): void;
/**
* Get the total number of draws
* (at all positions).
*
* @returns {number} The total number of draws.
*/
getNumberOfDraws(): number;
#private;
}
/**
* Draw details.
*/
export declare class DrawDetails {
/**
* The draw ID.
*
* @type {number}
*/
id: number;
/**
* The draw position: an Index converted to string.
*
* @type {string}
*/
position: string;
/**
* The draw type.
*
* @type {string}
*/
type: string;
/**
* The draw color: for example 'green', '#00ff00' or 'rgb(0,255,0)'.
*
* @type {string}
*/
color: string;
/**
* The draw meta.
*
* @type {DrawMeta}
*/
meta: DrawMeta;
}
/**
* Draw layer.
*/
@ -913,6 +1089,14 @@ export declare class DrawLayer {
* Add a flip offset along the layer Y axis.
*/
addFlipOffsetY(): void;
/**
* Flip the scale along the layer X axis.
*/
flipScaleX(): void;
/**
* Flip the scale along the layer Y axis.
*/
flipScaleY(): void;
/**
* Flip the scale along the layer Z axis.
*/
@ -984,7 +1168,7 @@ export declare class DrawLayer {
* @param {string} id The id of the group.
* @returns {boolean} False if the group cannot be found.
*/
toogleGroupVisibility(id: string): boolean;
toggleGroupVisibility(id: string): boolean;
/**
* Delete a Draw from the stage.
*
@ -1000,6 +1184,13 @@ export declare class DrawLayer {
* DeleteCommand has been executed.
*/
deleteDraws(exeCallback: object): void;
/**
* Get the total number of draws of this layer
* (at all positions).
*
* @returns {number|undefined} The total number of draws.
*/
getNumberOfDraws(): number | undefined;
/**
* Enable and listen to container interaction events.
*/
@ -1035,6 +1226,25 @@ export declare class DrawLayer {
#private;
}
/**
* Draw meta data.
*/
export declare class DrawMeta {
/**
* Draw quantification.
*
* @type {object}
*/
quantification: object;
/**
* Draw text expression. Can contain variables surrounded with '{}' that will
* be extracted from the quantification object.
*
* @type {string}
*/
textExpr: string;
}
/**
* 2D/3D Geometry class.
*/
@ -1087,9 +1297,9 @@ export declare class Geometry {
/**
* Get the object origins.
*
* @returns {Array} The object origins.
* @returns {Point3D[]} The object origins.
*/
getOrigins(): any[];
getOrigins(): Point3D[];
/**
* Check if a point is in the origin list.
*
@ -1182,10 +1392,10 @@ export declare class Geometry {
* Check that a index is within bounds.
*
* @param {Index} index The index to check.
* @param {Array} [dirs] Optional list of directions to check.
* @param {number[]} [dirs] Optional list of directions to check.
* @returns {boolean} True if the given coordinates are within bounds.
*/
isIndexInBounds(index: Index, dirs?: any[]): boolean;
isIndexInBounds(index: Index, dirs?: number[]): boolean;
/**
* Convert an index into world coordinates.
*
@ -1217,6 +1427,13 @@ export declare class Geometry {
#private;
}
/**
* Get the default DICOM seg tags as an object.
*
* @returns {object} The default tags.
*/
export declare function getDefaultDicomSegJson(): object;
/**
* List of DICOM data elements indexed via a 8 character string formed from
* the group and element numbers.
@ -1246,6 +1463,26 @@ export declare function getElementsFromJSONTags(jsonTags: {
[x: string]: DataElement;
};
/**
* Get the indices that form a ellpise.
*
* @param {Index} center The ellipse center.
* @param {Array} radius The 2 ellipse radiuses.
* @param {Array} dir The 2 ellipse directions.
* @returns {Array} The indices of the ellipse.
*/
export declare function getEllipseIndices(center: Index, radius: any[], dir: any[]): any[];
/**
* Get the layer details from a mouse event.
*
* @param {object} event The event to get the layer div id from. Expecting
* an event origininating from a canvas inside a layer HTML div
* with the 'layer' class and id generated with `getLayerDivId`.
* @returns {object} The layer details as {groupDivId, layerId}.
*/
export declare function getLayerDetailsFromEvent(event: object): object;
/**
* Get the name of an image orientation patient.
*
@ -1783,6 +2020,15 @@ export declare class Index {
#private;
}
/**
* CIE LAB value (L: [0, 100], a: [-128, 127], b: [-128, 127]) to
* unsigned int CIE LAB ([0, 65535]).
*
* @param {object} triplet CIE XYZ triplet as {x,y,z} with CIE LAB range.
* @returns {object} CIE LAB triplet as {l,a,b} with unsigned range.
*/
export declare function labToUintLab(triplet: object): object;
/**
* Layer group.
*
@ -1858,6 +2104,12 @@ export declare class LayerGroup {
* @returns {number} The number of layers.
*/
getNumberOfLayers(): number;
/**
* Get the number of view layers handled by this class.
*
* @returns {number} The number of layers.
*/
getNumberOfViewLayers(): number;
/**
* Get the active image layer.
*
@ -2061,22 +2313,39 @@ export declare const luts: {
[x: string]: ColourMap;
};
/**
* Mask {@link Image} factory.
*/
export declare class MaskFactory {
checkElements(_dicomElements: any): void;
/**
* Get an {@link Image} object from the read DICOM file.
*
* @param {DataElements} dataElements The DICOM tags.
* @param {Uint8Array | Int8Array |
* Uint16Array | Int16Array |
* Uint32Array | Int32Array} pixelBuffer The pixel buffer.
* @returns {Image} A new Image.
*/
create(dataElements: DataElements, pixelBuffer: Uint8Array | Int8Array | Uint16Array | Int16Array | Uint32Array | Int32Array): Image_2;
}
/**
* Immutable 3x3 Matrix.
*/
export declare class Matrix33 {
/**
* @param {Array} values row-major ordered 9 values.
* @param {number[]} values row-major ordered 9 values.
*/
constructor(values: any[]);
constructor(values: number[]);
/**
* Get a value of the matrix.
*
* @param {number} row The row at wich to get the value.
* @param {number} col The column at wich to get the value.
* @returns {number} The value at the position.
* @returns {number|undefined} The value at the position.
*/
get(row: number, col: number): number;
get(row: number, col: number): number | undefined;
/**
* Get the inverse of this matrix.
*
@ -2115,10 +2384,10 @@ export declare class Matrix33 {
/**
* Multiply this matrix by a 3D array.
*
* @param {Array} array3D The input 3D array.
* @returns {Array} The result 3D array.
* @param {number[]} array3D The input 3D array.
* @returns {number[]} The result 3D array.
*/
multiplyArray3D(array3D: any[]): any[];
multiplyArray3D(array3D: number[]): number[];
/**
* Multiply this matrix by a 3D vector.
*
@ -2670,6 +2939,14 @@ export declare class Spacing {
#private;
}
/**
* Convert sRGB to CIE LAB (standard illuminant D65).
*
* @param {object} triplet sRGB triplet as {r,g,b}.
* @returns {object} CIE LAB triplet as {l,a,b}.
*/
export declare function srgbToCielab(triplet: object): object;
/**
* Immutable tag.
*/
@ -2849,6 +3126,16 @@ export declare class ToolConfig {
options: string[] | undefined;
}
/**
* List of client provided tools to be added to
* the default ones.
*
* @type {Object<string, any>}
*/
export declare const toolList: {
[x: string]: any;
};
/**
* Immutable 3D vector.
*/
@ -2930,9 +3217,9 @@ export declare class Vector3D {
* const dicomParser = new dwv.DicomParser();
* dicomParser.parse(event.target.response);
* // create the image object
* const image = createImage(dicomParser.getDicomElements());
* const image = dwv.createImage(dicomParser.getDicomElements());
* // create the view
* const view = createView(dicomParser.getDicomElements(), image);
* const view = dwv.createView(dicomParser.getDicomElements(), image);
* // setup canvas
* const canvas = document.createElement('canvas');
* canvas.width = 256;
@ -3043,12 +3330,6 @@ export declare class View {
* @param {object} presets The window presets.
*/
setWindowPresets(presets: object): void;
/**
* Set the default colour map.
*
* @param {ColourMap} map The colour map.
*/
setDefaultColourMap(map: ColourMap): void;
/**
* Add window presets to the existing ones.
*
@ -3064,16 +3345,16 @@ export declare class View {
/**
* Get the colour map of the image.
*
* @returns {ColourMap} The colour map of the image.
* @returns {string} The colour map name.
*/
getColourMap(): ColourMap;
getColourMap(): string;
/**
* Set the colour map of the image.
*
* @param {ColourMap} map The colour map of the image.
* @fires View#colourchange
* @param {string} name The colour map name.
* @fires View#colourmapchange
*/
setColourMap(map: ColourMap): void;
setColourMap(name: string): void;
/**
* Get the current position.
*
@ -3094,12 +3375,12 @@ export declare class View {
*/
canSetPosition(position: Point): boolean;
/**
* Get the origin at a given position.
* Get the first origin or at a given position.
*
* @param {Point} position The position.
* @returns {Point} The origin.
* @param {Point} [position] Optional position.
* @returns {Point3D} The origin.
*/
getOrigin(position: Point): Point;
getOrigin(position?: Point): Point3D;
/**
* Set the current position.
*
@ -3241,17 +3522,29 @@ export declare class ViewConfig {
*/
orientation: string | undefined;
/**
* Optional view colour map.
* Optional view colour map name.
*
* @type {ColourMap|undefined}
* @type {string|undefined}
*/
colourMap: ColourMap | undefined;
colourMap: string | undefined;
/**
* Optional layer opacity; in [0, 1] range.
*
* @type {number|undefined}
*/
opacity: number | undefined;
/**
* Optional layer window center.
*
* @type {number|undefined}
*/
windowCenter: number | undefined;
/**
* Optional layer window width.
*
* @type {number|undefined}
*/
windowWidth: number | undefined;
}
/**
@ -3365,12 +3658,12 @@ export declare class ViewController {
*/
getCurrentScrollIndexValue(): object;
/**
* Get the origin at a given posittion.
* Get the first origin or at a given position.
*
* @param {Point} position The input position.
* @returns {Point} The origin.
* @param {Point} [position] Opitonal position.
* @returns {Point3D} The origin.
*/
getOrigin(position: Point): Point;
getOrigin(position?: Point): Point3D;
/**
* Get the current scroll position value.
*
@ -3381,10 +3674,10 @@ export declare class ViewController {
* Generate display image data to be given to a canvas.
*
* @param {ImageData} array The array to fill in.
* @param {Index} index Optional index at which to generate,
* @param {Index} [index] Optional index at which to generate,
* otherwise generates at current index.
*/
generateImageData(array: ImageData, index: Index): void;
generateImageData(array: ImageData, index?: Index): void;
/**
* Set the associated image.
*
@ -3585,15 +3878,15 @@ export declare class ViewController {
/**
* Get the colour map.
*
* @returns {ColourMap} The colour map.
* @returns {string} The colour map name.
*/
getColourMap(): ColourMap;
getColourMap(): string;
/**
* Set the colour map.
*
* @param {ColourMap} colourMap The colour map.
* @param {string} name The colour map name.
*/
setColourMap(colourMap: ColourMap): void;
setColourMap(name: string): void;
/**
* @callback alphaFn@callback alphaFn
* @param {object} value The pixel value.
@ -3606,12 +3899,6 @@ export declare class ViewController {
* @param {alphaFn} func The function.
*/
setViewAlphaFunction(func: (value: object, index: object) => number): void;
/**
* Set the colour map from a name.
*
* @param {string} name The name of the colour map to set.
*/
setColourMapFromName(name: string): void;
/**
* Add an event listener to this class.
*
@ -3723,6 +4010,14 @@ export declare class ViewLayer {
* Add a flip offset along the layer Y axis.
*/
addFlipOffsetY(): void;
/**
* Flip the scale along the layer X axis.
*/
flipScaleX(): void;
/**
* Flip the scale along the layer Y axis.
*/
flipScaleY(): void;
/**
* Flip the scale along the layer Z axis.
*/
@ -3777,7 +4072,8 @@ export declare class ViewLayer {
*
* @param {number} x The X position.
* @param {number} y The Y position.
* @returns {object} The display position as {x,y}.
* @returns {object} The display position as {x,y}, can be individually
* undefined if out of bounds.
*/
planePosToDisplay(x: number, y: number): object;
/**
@ -3965,6 +4261,10 @@ export declare class WindowLut {
* Writer rule.
*/
export declare class WriterRule {
/**
* @param {string} action The rule action.
*/
constructor(action: string);
/**
* Rule action: `copy`, `remove`, `clear` or `replace`.
*
@ -3972,11 +4272,11 @@ export declare class WriterRule {
*/
action: string;
/**
* Value to use for replace action.
* Optional value to use for replace action.
*
* @type {any}
* @type {any|undefined}
*/
value: any;
value: any | undefined;
}
export { }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,5 +1,5 @@
{
"systemParams": "linux-x64-93",
"systemParams": "linux-x64-108",
"modulesFolders": [
"node_modules"
],
@ -8,15 +8,15 @@
],
"linkedModules": [],
"topLevelPatterns": [
"@babel/core@^7.22.5",
"@babel/preset-env@^7.22.5",
"@microsoft/api-extractor@^7.36.0",
"babel-loader@^9.1.2",
"@babel/core@^7.23.2",
"@babel/preset-env@^7.23.2",
"@microsoft/api-extractor@^7.38.0",
"babel-loader@^9.1.3",
"babel-plugin-istanbul@^6.1.1",
"benchmark@~2.1.4",
"clean-jsdoc-theme@^4.2.9",
"eslint-plugin-jsdoc@~46.5.0",
"eslint@~8.47.0",
"clean-jsdoc-theme@^4.2.13",
"eslint-plugin-jsdoc@~46.8.2",
"eslint@~8.52.0",
"github-release-notes@0.17.2",
"html-webpack-plugin@^5.5.3",
"jsdoc@^4.0.2",
@ -29,41 +29,44 @@
"karma@^6.4.2",
"konva@~8.4.2",
"magic-wand-tool@~1.1.7",
"qunit@^2.19.4",
"qunit@^2.20.0",
"typescript@^5.0.4",
"webpack-cli@^5.1.4",
"webpack-dev-server@^4.15.1",
"webpack-merge@^5.9.0",
"webpack@^5.88.1"
"webpack@^5.89.0"
],
"lockfileEntries": {
"@aashutoshrathi/word-wrap@^1.2.3": "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf",
"@ampproject/remapping@^2.2.0": "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d",
"@babel/code-frame@^7.22.10": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3",
"@babel/code-frame@^7.22.5": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3",
"@babel/compat-data@^7.22.5": "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730",
"@babel/compat-data@^7.22.6": "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730",
"@babel/compat-data@^7.22.9": "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730",
"@babel/core@^7.12.3": "https://registry.yarnpkg.com/@babel/core/-/core-7.22.10.tgz#aad442c7bcd1582252cb4576747ace35bc122f35",
"@babel/core@^7.22.5": "https://registry.yarnpkg.com/@babel/core/-/core-7.22.10.tgz#aad442c7bcd1582252cb4576747ace35bc122f35",
"@babel/generator@^7.22.10": "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.10.tgz#c92254361f398e160645ac58831069707382b722",
"@babel/code-frame@^7.22.13": "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e",
"@babel/compat-data@^7.22.6": "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc",
"@babel/compat-data@^7.22.9": "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc",
"@babel/compat-data@^7.23.2": "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc",
"@babel/core@^7.12.3": "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94",
"@babel/core@^7.23.2": "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94",
"@babel/generator@^7.23.0": "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420",
"@babel/helper-annotate-as-pure@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb",
"@babel/helper-annotate-as-pure@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882",
"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz#a3f4758efdd0190d8927fcffd261755937c71878",
"@babel/helper-compilation-targets@^7.22.10": "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz#01d648bbc25dd88f513d862ee0df27b7d4e67024",
"@babel/helper-compilation-targets@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz#01d648bbc25dd88f513d862ee0df27b7d4e67024",
"@babel/helper-compilation-targets@^7.22.6": "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz#01d648bbc25dd88f513d862ee0df27b7d4e67024",
"@babel/helper-compilation-targets@^7.22.15": "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52",
"@babel/helper-compilation-targets@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52",
"@babel/helper-compilation-targets@^7.22.6": "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52",
"@babel/helper-create-class-features-plugin@^7.22.11": "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz#4078686740459eeb4af3494a273ac09148dfb213",
"@babel/helper-create-class-features-plugin@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz#2192a1970ece4685fbff85b48da2c32fcb130b7c",
"@babel/helper-create-regexp-features-plugin@^7.18.6": "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz#40411a8ab134258ad2cf3a3d987ec6aa0723cee5",
"@babel/helper-create-regexp-features-plugin@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz#bb2bf0debfe39b831986a4efbf4066586819c6e4",
"@babel/helper-define-polyfill-provider@^0.4.2": "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7",
"@babel/helper-define-polyfill-provider@^0.4.3": "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba",
"@babel/helper-environment-visitor@^7.22.20": "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167",
"@babel/helper-environment-visitor@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98",
"@babel/helper-function-name@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be",
"@babel/helper-function-name@^7.23.0": "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759",
"@babel/helper-hoist-variables@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb",
"@babel/helper-member-expression-to-functions@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2",
"@babel/helper-module-imports@^7.22.15": "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0",
"@babel/helper-module-imports@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c",
"@babel/helper-module-transforms@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129",
"@babel/helper-module-transforms@^7.22.9": "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129",
"@babel/helper-module-transforms@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e",
"@babel/helper-module-transforms@^7.23.0": "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e",
"@babel/helper-optimise-call-expression@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e",
"@babel/helper-plugin-utils@^7.0.0": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295",
"@babel/helper-plugin-utils@^7.10.4": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295",
@ -73,26 +76,28 @@
"@babel/helper-plugin-utils@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295",
"@babel/helper-plugin-utils@^7.8.0": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295",
"@babel/helper-plugin-utils@^7.8.3": "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295",
"@babel/helper-remap-async-to-generator@^7.22.20": "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0",
"@babel/helper-remap-async-to-generator@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz#14a38141a7bf2165ad38da61d61cf27b43015da2",
"@babel/helper-remap-async-to-generator@^7.22.9": "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82",
"@babel/helper-replace-supers@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz#71bc5fb348856dea9fdc4eafd7e2e49f585145dc",
"@babel/helper-replace-supers@^7.22.9": "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779",
"@babel/helper-simple-access@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de",
"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847",
"@babel/helper-split-export-declaration@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz#88cf11050edb95ed08d596f7a044462189127a08",
"@babel/helper-split-export-declaration@^7.22.6": "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c",
"@babel/helper-string-parser@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f",
"@babel/helper-validator-identifier@^7.22.20": "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0",
"@babel/helper-validator-identifier@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193",
"@babel/helper-validator-option@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac",
"@babel/helper-validator-option@^7.22.15": "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040",
"@babel/helper-wrap-function@^7.22.20": "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569",
"@babel/helper-wrap-function@^7.22.5": "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz#44d205af19ed8d872b4eefb0d2fa65f45eb34f06",
"@babel/helper-wrap-function@^7.22.9": "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz#d845e043880ed0b8c18bd194a12005cb16d2f614",
"@babel/helpers@^7.22.10": "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.10.tgz#ae6005c539dfbcb5cd71fb51bfc8a52ba63bc37a",
"@babel/highlight@^7.22.10": "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.10.tgz#02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7",
"@babel/parser@^7.14.7": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55",
"@babel/parser@^7.20.15": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55",
"@babel/parser@^7.22.10": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55",
"@babel/parser@^7.22.5": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz#fef09f9499b1f1c930da8a0c419db42167d792ca",
"@babel/helpers@^7.23.2": "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767",
"@babel/highlight@^7.22.13": "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.13.tgz#9cda839e5d3be9ca9e8c26b6dd69e7548f0cbf16",
"@babel/parser@^7.14.7": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719",
"@babel/parser@^7.20.15": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719",
"@babel/parser@^7.22.15": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719",
"@babel/parser@^7.23.0": "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f",
"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703",
"@babel/plugin-syntax-async-generators@^7.8.4": "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d",
"@babel/plugin-syntax-class-properties@^7.12.13": "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10",
@ -113,42 +118,42 @@
"@babel/plugin-syntax-top-level-await@^7.14.5": "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c",
"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357",
"@babel/plugin-transform-arrow-functions@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958",
"@babel/plugin-transform-async-generator-functions@^7.22.10": "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.10.tgz#45946cd17f915b10e65c29b8ed18a0a50fc648c8",
"@babel/plugin-transform-async-generator-functions@^7.23.2": "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb",
"@babel/plugin-transform-async-to-generator@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775",
"@babel/plugin-transform-block-scoped-functions@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024",
"@babel/plugin-transform-block-scoping@^7.22.10": "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz#88a1dccc3383899eb5e660534a76a22ecee64faa",
"@babel/plugin-transform-block-scoping@^7.23.0": "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022",
"@babel/plugin-transform-class-properties@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77",
"@babel/plugin-transform-class-static-block@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz#3e40c46f048403472d6f4183116d5e46b1bff5ba",
"@babel/plugin-transform-classes@^7.22.6": "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363",
"@babel/plugin-transform-class-static-block@^7.22.11": "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974",
"@babel/plugin-transform-classes@^7.22.15": "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b",
"@babel/plugin-transform-computed-properties@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869",
"@babel/plugin-transform-destructuring@^7.22.10": "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz#38e2273814a58c810b6c34ea293be4973c4eb5e2",
"@babel/plugin-transform-destructuring@^7.23.0": "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c",
"@babel/plugin-transform-dotall-regex@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165",
"@babel/plugin-transform-duplicate-keys@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285",
"@babel/plugin-transform-dynamic-import@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz#d6908a8916a810468c4edff73b5b75bda6ad393e",
"@babel/plugin-transform-dynamic-import@^7.22.11": "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa",
"@babel/plugin-transform-exponentiation-operator@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a",
"@babel/plugin-transform-export-namespace-from@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz#57c41cb1d0613d22f548fddd8b288eedb9973a5b",
"@babel/plugin-transform-for-of@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz#ab1b8a200a8f990137aff9a084f8de4099ab173f",
"@babel/plugin-transform-export-namespace-from@^7.22.11": "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c",
"@babel/plugin-transform-for-of@^7.22.15": "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29",
"@babel/plugin-transform-function-name@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143",
"@babel/plugin-transform-json-strings@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz#14b64352fdf7e1f737eed68de1a1468bd2a77ec0",
"@babel/plugin-transform-json-strings@^7.22.11": "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835",
"@babel/plugin-transform-literals@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920",
"@babel/plugin-transform-logical-assignment-operators@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz#66ae5f068fd5a9a5dc570df16f56c2a8462a9d6c",
"@babel/plugin-transform-logical-assignment-operators@^7.22.11": "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c",
"@babel/plugin-transform-member-expression-literals@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def",
"@babel/plugin-transform-modules-amd@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526",
"@babel/plugin-transform-modules-commonjs@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa",
"@babel/plugin-transform-modules-systemjs@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz#18c31410b5e579a0092638f95c896c2a98a5d496",
"@babel/plugin-transform-modules-amd@^7.23.0": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88",
"@babel/plugin-transform-modules-commonjs@^7.23.0": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481",
"@babel/plugin-transform-modules-systemjs@^7.23.0": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160",
"@babel/plugin-transform-modules-umd@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98",
"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f",
"@babel/plugin-transform-new-target@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d",
"@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz#f8872c65776e0b552e0849d7596cddd416c3e381",
"@babel/plugin-transform-numeric-separator@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz#57226a2ed9e512b9b446517ab6fa2d17abb83f58",
"@babel/plugin-transform-object-rest-spread@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz#9686dc3447df4753b0b2a2fae7e8bc33cdc1f2e1",
"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc",
"@babel/plugin-transform-numeric-separator@^7.22.11": "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd",
"@babel/plugin-transform-object-rest-spread@^7.22.15": "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f",
"@babel/plugin-transform-object-super@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c",
"@babel/plugin-transform-optional-catch-binding@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz#842080be3076703be0eaf32ead6ac8174edee333",
"@babel/plugin-transform-optional-chaining@^7.22.10": "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.10.tgz#076d28a7e074392e840d4ae587d83445bac0372a",
"@babel/plugin-transform-optional-chaining@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.10.tgz#076d28a7e074392e840d4ae587d83445bac0372a",
"@babel/plugin-transform-parameters@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18",
"@babel/plugin-transform-optional-catch-binding@^7.22.11": "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0",
"@babel/plugin-transform-optional-chaining@^7.22.15": "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158",
"@babel/plugin-transform-optional-chaining@^7.23.0": "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158",
"@babel/plugin-transform-parameters@^7.22.15": "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114",
"@babel/plugin-transform-private-methods@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722",
"@babel/plugin-transform-private-property-in-object@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz#07a77f28cbb251546a43d175a1dda4cf3ef83e32",
"@babel/plugin-transform-private-property-in-object@^7.22.11": "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1",
"@babel/plugin-transform-property-literals@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766",
"@babel/plugin-transform-regenerator@^7.22.10": "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca",
"@babel/plugin-transform-reserved-words@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb",
@ -161,27 +166,30 @@
"@babel/plugin-transform-unicode-property-regex@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81",
"@babel/plugin-transform-unicode-regex@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183",
"@babel/plugin-transform-unicode-sets-regex@^7.22.5": "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91",
"@babel/preset-env@^7.22.5": "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.10.tgz#3263b9fe2c8823d191d28e61eac60a79f9ce8a0f",
"@babel/preset-env@^7.23.2": "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059",
"@babel/preset-modules@0.1.6-no-external-plugins": "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a",
"@babel/regjsgen@^0.8.0": "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310",
"@babel/runtime@^7.8.4": "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673",
"@babel/template@^7.22.5": "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec",
"@babel/traverse@^7.22.10": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.10.tgz#20252acb240e746d27c2e82b4484f199cf8141aa",
"@babel/traverse@^7.22.5": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.10.tgz#20252acb240e746d27c2e82b4484f199cf8141aa",
"@babel/types@^7.18.6": "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03",
"@babel/types@^7.22.10": "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03",
"@babel/types@^7.22.5": "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03",
"@babel/types@^7.4.4": "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03",
"@babel/template@^7.22.15": "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38",
"@babel/template@^7.22.5": "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38",
"@babel/traverse@^7.22.5": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8",
"@babel/traverse@^7.23.2": "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8",
"@babel/types@^7.18.6": "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb",
"@babel/types@^7.22.15": "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb",
"@babel/types@^7.22.19": "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb",
"@babel/types@^7.22.5": "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb",
"@babel/types@^7.23.0": "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb",
"@babel/types@^7.4.4": "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb",
"@colors/colors@1.5.0": "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9",
"@discoveryjs/json-ext@^0.5.0": "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70",
"@es-joy/jsdoccomment@~0.40.1": "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.40.1.tgz#13acd77fb372ed1c83b7355edd865a3b370c9ec4",
"@eslint-community/eslint-utils@^4.2.0": "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59",
"@eslint-community/regexpp@^4.6.1": "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8",
"@eslint/eslintrc@^2.1.2": "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396",
"@eslint/js@^8.47.0": "https://registry.yarnpkg.com/@eslint/js/-/js-8.47.0.tgz#5478fdf443ff8158f9de171c704ae45308696c7d",
"@humanwhocodes/config-array@^0.11.10": "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2",
"@eslint/js@8.52.0": "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c",
"@humanwhocodes/config-array@^0.11.13": "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297",
"@humanwhocodes/module-importer@^1.0.1": "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c",
"@humanwhocodes/object-schema@^1.2.1": "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45",
"@humanwhocodes/object-schema@^2.0.1": "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044",
"@iarna/cli@^2.1.0": "https://registry.yarnpkg.com/@iarna/cli/-/cli-2.1.0.tgz#f830356d54c72c804bd7afc43999de31e40fc3d6",
"@istanbuljs/load-nyc-config@^1.0.0": "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced",
"@istanbuljs/schema@^0.1.2": "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98",
@ -200,16 +208,16 @@
"@jsdoc/salty@^0.2.1": "https://registry.yarnpkg.com/@jsdoc/salty/-/salty-0.2.5.tgz#1b2fa5bb8c66485b536d86eee877c263d322f692",
"@jsdoc/salty@^0.2.4": "https://registry.yarnpkg.com/@jsdoc/salty/-/salty-0.2.5.tgz#1b2fa5bb8c66485b536d86eee877c263d322f692",
"@leichtgewicht/ip-codec@^2.0.1": "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b",
"@microsoft/api-extractor-model@7.27.6": "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.27.6.tgz#308e44cd595d2fb446c6357759ee0675ec37d26e",
"@microsoft/api-extractor@^7.36.0": "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.36.4.tgz#3bb9fbbbeacaa48eea49150351905a2677a506d9",
"@microsoft/api-extractor-model@7.28.2": "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.28.2.tgz#91c66dd820ccc70e0c163e06b392d8363f1b9269",
"@microsoft/api-extractor@^7.38.0": "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.38.0.tgz#e72546d6766b3866578a462b040f71b17779e1c5",
"@microsoft/tsdoc-config@~0.16.1": "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz#b786bb4ead00d54f53839a458ce626c8548d3adf",
"@microsoft/tsdoc@0.14.2": "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz#c3ec604a0b54b9a9b87e9735dfc59e1a5da6a5fb",
"@nodelib/fs.scandir@2.1.5": "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5",
"@nodelib/fs.stat@2.0.5": "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b",
"@nodelib/fs.walk@^1.2.8": "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a",
"@rushstack/node-core-library@3.59.7": "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.59.7.tgz#9dcd62b79263e8a5b68465d4bf9124ec86e14b6c",
"@rushstack/rig-package@0.4.1": "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.4.1.tgz#ff11bf67dad46f9b4f09db91cf45739ab411ee9f",
"@rushstack/ts-command-line@4.15.2": "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.15.2.tgz#7920e3fa2ab6af129d995ce4424c600da0bf8a93",
"@rushstack/node-core-library@3.61.0": "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.61.0.tgz#7441a0d2ae5268b758a7a49588a78cd55af57e66",
"@rushstack/rig-package@0.5.1": "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.5.1.tgz#6c9c283cc96b5bb1eae9875946d974ac5429bb21",
"@rushstack/ts-command-line@4.16.1": "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.16.1.tgz#3537bbc323f77c8646646465c579b992d39feb16",
"@socket.io/component-emitter@~3.1.0": "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553",
"@types/argparse@1.0.38": "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9",
"@types/body-parser@*": "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0",
@ -245,6 +253,7 @@
"@types/serve-static@^1.13.10": "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d",
"@types/sockjs@^0.3.33": "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f",
"@types/ws@^8.5.5": "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.5.tgz#af587964aa06682702ee6dcbc7be41a80e4b28eb",
"@ungap/structured-clone@^1.2.0": "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406",
"@webassemblyjs/ast@1.11.5": "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.5.tgz#6e818036b94548c1fb53b754b5cae3c9b208281c",
"@webassemblyjs/ast@^1.11.5": "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.5.tgz#6e818036b94548c1fb53b754b5cae3c9b208281c",
"@webassemblyjs/floating-point-hex-parser@1.11.5": "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz#e85dfdb01cad16b812ff166b96806c050555f1b4",
@ -332,11 +341,11 @@
"aws-sign2@~0.7.0": "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8",
"aws4@^1.8.0": "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3",
"axios@^0.21.1": "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575",
"babel-loader@^9.1.2": "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a",
"babel-loader@^9.1.3": "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a",
"babel-plugin-istanbul@^6.1.1": "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73",
"babel-plugin-polyfill-corejs2@^0.4.5": "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c",
"babel-plugin-polyfill-corejs3@^0.8.3": "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52",
"babel-plugin-polyfill-regenerator@^0.5.2": "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326",
"babel-plugin-polyfill-corejs2@^0.4.6": "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313",
"babel-plugin-polyfill-corejs3@^0.8.5": "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz#a75fa1b0c3fc5bd6837f9ec465c0f48031b8cab1",
"babel-plugin-polyfill-regenerator@^0.5.3": "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5",
"babel-runtime@^6.26.0": "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe",
"balanced-match@^1.0.0": "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee",
"base-64@^0.1.0": "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb",
@ -363,6 +372,7 @@
"braces@~3.0.2": "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107",
"browserslist@^4.14.5": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635",
"browserslist@^4.21.9": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635",
"browserslist@^4.22.1": "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619",
"buffer-from@^1.0.0": "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5",
"builtin-modules@^3.3.0": "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6",
"builtins@^1.0.3": "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88",
@ -381,7 +391,8 @@
"camelcase@^4.0.0": "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd",
"camelcase@^5.0.0": "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320",
"camelcase@^5.3.1": "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320",
"caniuse-lite@^1.0.30001503": "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001514.tgz#e2a7e184a23affc9367b7c8d734e7ec4628c1309",
"caniuse-lite@^1.0.30001503": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz",
"caniuse-lite@^1.0.30001541": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz",
"capture-stack-trace@^1.0.0": "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz#1c43f6b059d4249e7f3f8724f15f048b927d3a8a",
"caseless@~0.12.0": "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc",
"catharsis@^0.9.0": "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121",
@ -402,7 +413,7 @@
"cidr-regex@^2.0.10": "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.10.tgz#af13878bd4ad704de77d6dc800799358b3afa70d",
"clean-css@^5.2.2": "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224",
"clean-css@~5.3.2": "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224",
"clean-jsdoc-theme@^4.2.9": "https://registry.yarnpkg.com/clean-jsdoc-theme/-/clean-jsdoc-theme-4.2.9.tgz#1defa72ce2c20372f87bd0caf889fa546e6b3542",
"clean-jsdoc-theme@^4.2.13": "https://registry.yarnpkg.com/clean-jsdoc-theme/-/clean-jsdoc-theme-4.2.14.tgz#e9719e908c1409dcc04f8fcd0eb7556db4e4ab8d",
"cli-boxes@^1.0.0": "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143",
"cli-columns@^3.1.2": "https://registry.yarnpkg.com/cli-columns/-/cli-columns-3.1.2.tgz#6732d972979efc2ae444a1f08e08fa139c96a18e",
"cli-cursor@^2.1.0": "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5",
@ -453,12 +464,13 @@
"content-disposition@0.5.4": "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe",
"content-type@~1.0.4": "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918",
"content-type@~1.0.5": "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918",
"convert-source-map@^1.7.0": "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f",
"convert-source-map@^2.0.0": "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a",
"cookie-signature@1.0.6": "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c",
"cookie@0.5.0": "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b",
"cookie@~0.4.1": "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432",
"copy-concurrently@^1.0.0": "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0",
"core-js-compat@^3.31.0": "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.31.1.tgz#5084ad1a46858df50ff89ace152441a63ba7aae0",
"core-js-compat@^3.31.0": "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966",
"core-js-compat@^3.32.2": "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966",
"core-js@^2.4.0": "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec",
"core-util-is@1.0.2": "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7",
"core-util-is@~1.0.0": "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85",
@ -529,6 +541,7 @@
"editorconfig@^0.15.3": "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5",
"ee-first@1.1.1": "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d",
"electron-to-chromium@^1.4.431": "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.454.tgz#774dc7cb5e58576d0125939ec34a4182f3ccc87d",
"electron-to-chromium@^1.4.535": "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.554.tgz#04e09c2ee31dc0f1546174033809b54cc372740b",
"emoji-regex@^7.0.1": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156",
"emoji-regex@^8.0.0": "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37",
"encodeurl@~1.0.2": "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59",
@ -559,13 +572,13 @@
"escape-string-regexp@^1.0.5": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4",
"escape-string-regexp@^2.0.0": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344",
"escape-string-regexp@^4.0.0": "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34",
"eslint-plugin-jsdoc@~46.5.0": "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.5.0.tgz#02e7945701a01fab76e7ced850d4d1eea63c23c0",
"eslint-plugin-jsdoc@~46.8.2": "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.8.2.tgz#3e6b1c93e91e38fe01874d45da121b56393c54a5",
"eslint-scope@5.1.1": "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c",
"eslint-scope@^7.2.2": "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f",
"eslint-visitor-keys@^3.3.0": "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800",
"eslint-visitor-keys@^3.4.1": "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800",
"eslint-visitor-keys@^3.4.3": "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800",
"eslint@~8.47.0": "https://registry.yarnpkg.com/eslint/-/eslint-8.47.0.tgz#c95f9b935463fb4fad7005e626c7621052e90806",
"eslint@~8.52.0": "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc",
"espree@^9.6.0": "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f",
"espree@^9.6.1": "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f",
"esprima@^4.0.0": "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71",
@ -611,6 +624,7 @@
"find-up@^5.0.0": "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc",
"find-up@^6.3.0": "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790",
"flat-cache@^3.0.4": "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11",
"flat@^5.0.2": "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241",
"flatted@^3.1.0": "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787",
"flatted@^3.2.7": "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787",
"flush-write-stream@^1.0.0": "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8",
@ -851,7 +865,7 @@
"json-stable-stringify-without-jsonify@^1.0.1": "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651",
"json-stringify-safe@~5.0.1": "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb",
"json2yaml@^1.1.0": "https://registry.yarnpkg.com/json2yaml/-/json2yaml-1.1.0.tgz#5414d907f9816586b80c513ec2e3aeb2ab819a6c",
"json5@^2.2.2": "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283",
"json5@^2.2.3": "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283",
"jsonfile@^4.0.0": "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb",
"jsonfile@^6.0.1": "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae",
"jsonparse@^1.2.0": "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280",
@ -984,6 +998,7 @@
"node-gyp@^5.0.2": "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e",
"node-gyp@^5.1.1": "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e",
"node-releases@^2.0.12": "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d",
"node-releases@^2.0.13": "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d",
"node-watch@0.7.3": "https://registry.yarnpkg.com/node-watch/-/node-watch-0.7.3.tgz#6d4db88e39c8d09d3ea61d6568d80e5975abc7ab",
"nopt@^4.0.1": "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48",
"nopt@^4.0.3": "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48",
@ -1120,7 +1135,7 @@
"qs@~6.5.2": "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad",
"query-string@^6.14.1": "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a",
"queue-microtask@^1.2.2": "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243",
"qunit@^2.19.4": "https://registry.yarnpkg.com/qunit/-/qunit-2.19.4.tgz#2d689bb1165edd4b812e3ed2ee06ff907e9f2ece",
"qunit@^2.20.0": "https://registry.yarnpkg.com/qunit/-/qunit-2.20.0.tgz#66a404a0142781316bbda91535869ce5671555b1",
"qw@^1.0.2": "https://registry.yarnpkg.com/qw/-/qw-1.0.2.tgz#0c31a6f810320a91c58b05198679427103b03c4a",
"randombytes@^2.1.0": "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a",
"range-parser@^1.2.1": "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031",
@ -1400,6 +1415,7 @@
"unpipe@~1.0.0": "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec",
"unzip-response@^2.0.1": "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97",
"update-browserslist-db@^1.0.11": "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940",
"update-browserslist-db@^1.0.13": "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4",
"update-notifier@^2.3.0": "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6",
"update-notifier@^2.5.0": "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6",
"uri-js@^4.2.2": "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e",
@ -1432,10 +1448,10 @@
"webpack-dev-middleware@^5.3.1": "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f",
"webpack-dev-server@^4.15.1": "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz#8944b29c12760b3a45bdaa70799b17cb91b03df7",
"webpack-merge@^4.1.5": "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d",
"webpack-merge@^5.7.3": "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826",
"webpack-merge@^5.9.0": "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826",
"webpack-merge@^5.7.3": "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177",
"webpack-merge@^5.9.0": "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177",
"webpack-sources@^3.2.3": "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde",
"webpack@^5.88.1": "https://registry.yarnpkg.com/webpack/-/webpack-5.88.2.tgz#f62b4b842f1c6ff580f3fcb2ed4f0b579f4c210e",
"webpack@^5.89.0": "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc",
"websocket-driver@>=0.5.1": "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760",
"websocket-driver@^0.7.4": "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760",
"websocket-extensions@>=0.1.1": "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42",

@ -1 +1 @@
<!doctype html><title>DWV Test Viewer</title><meta charset=UTF-8><meta name=description content="DICOM Web Viewer (DWV) simple version"><meta name=keywords content=DICOM,HTML5,JavaScript,medical,imaging,DWV><style>body{font-family:Arial,Helvetica,sans-serif}table,td,th{margin:5px 0;border:1px solid #aaa}table{border-collapse:collapse}td,th{padding:10px}progress{width:40%}span{font-size:small;font-style:italic}button{margin:0 5px}input[type=number]{width:75px}input[type=range]{width:100px;margin:0 10px}#fileinput{width:50%;border:1px dotted gray}#about{font-size:small;font-style:italic}.layerGroup{display:inline-block;height:350px;width:max(30%,350px);margin:5px 5px 5px 0;background-color:#32cd32;position:relative}.layer{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}canvas{vertical-align:middle}.line{padding:5px;background-color:#e8e8e8}.layerGroup span{display:none;background-color:#98fb98;padding:2px}.layerGroup:hover span{display:inline-block;position:absolute;overflow:hidden}.layerGroup hr{pointer-events:none;border:none;position:absolute;margin:0}hr.horizontal{border-top:2px dashed #0f0}hr.vertical{border-top:2px dashed #0f0;transform-origin:left;transform:rotate(90deg)}</style><script src=./node_modules/jszip/dist/jszip.min.js></script><script src=./node_modules/konva/konva.min.js></script><script src=./dist/dwv.min.js></script><script src=./viewer.js></script><div class=line><label for=fileinput>Input:</label> <input type=file id=fileinput multiple><progress id=loadprogress max=100 value=0></progress></div><div id=dwv></div><div class=line><label for=position>Position:</label> <input id=position autocomplete=off> <span id=positionspan></span></div><div class=line><label for=changelayout>Layout:</label> <select name=layout id=changelayout autocomplete=off disabled><option value=one>One<option value=side>Side by side<option value=mpr>MPR</select> <button id=resetlayout disabled>Reset views</button> <input type=checkbox id=changesmoothing> <label for=changesmoothing>Smoothing</label></div><div class=line id=binders>Binders:</div><div class=line id=tools>Tools:</div><div id=layersdetails></div><div class=line id=tests>Tests:</div><div class=line id=about>About:</div>
<!doctype html><title>DWV Test Viewer</title><meta charset=UTF-8><meta name=description content="DICOM Web Viewer (DWV) simple version"><meta name=keywords content=DICOM,HTML5,JavaScript,medical,imaging,DWV><style>body{font-family:Arial,Helvetica,sans-serif}body,html{height:99%}table,td,th{margin:5px 0;border:1px solid #aaa}table{border-collapse:collapse}td,th{padding:10px}progress{width:40%}span{font-size:small;font-style:italic}button{margin:0 5px}input[type=number]{width:75px}input[type=color]{margin:0 5px;width:25px;height:25px}select{width:90px}input[type=range]{width:100px;margin:0 10px}#fileinput{width:50%;border:1px dotted gray}#about{font-size:small;font-style:italic}#dwv{display:flex;min-height:200px;height:40%;margin-bottom:10px}.layerGroup{flex:1 1;margin:5px 5px 5px 0;background-color:#32cd32;position:relative}.layer{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}canvas{vertical-align:middle}.line{padding:5px;background-color:#e8e8e8}.layerGroup span{display:none;background-color:#98fb98;padding:2px}.layerGroup:hover span{display:inline-block;position:absolute;overflow:hidden}.layerGroup hr{pointer-events:none;border:none;position:absolute;margin:0}hr.horizontal{border-top:2px dashed #0f0}hr.vertical{border-top:2px dashed #0f0;transform-origin:left;transform:rotate(90deg)}.toolFeatures{margin:0 5px}</style><script src=./node_modules/jszip/dist/jszip.min.js></script><script src=./node_modules/konva/konva.min.js></script><script src=./dist/dwv.min.js></script><script src=./viewer.js></script><div class=line><label for=fileinput>Input:</label> <input type=file id=fileinput multiple><progress id=loadprogress max=100 value=0></progress></div><div id=dwv></div><div class=line><label for=position>Position:</label> <input id=position autocomplete=off> <span id=positionspan></span></div><div class=line><label for=changelayout>Layout:</label> <select name=layout id=changelayout autocomplete=off disabled><option value=one>One<option value=side>Side by side<option value=mpr>MPR</select> <button id=resetlayout disabled>Reset views</button> <input type=checkbox id=changesmoothing> <label for=changesmoothing>Smoothing</label></div><div class=line id=binders>Binders:</div><div class=line id=tools>Tools:</div><div id=layersdetails></div><div class=line id=tests>Tests:</div><div class=line id=about>About:</div>

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save